{"version":3,"file":"js/592-29e1e9c7a194c9bb5124.js","mappings":"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AAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,IAId,IAEAL,EAAGK,OAAO,oBAAoB,CAC5B,a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","sources":["webpack://app/./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack://app/./node_modules/daterangepicker/daterangepicker.js","webpack://app/./node_modules/select2/dist/js/select2.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/ascending.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/descending.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/bisector.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/number.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/bisect.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/blur.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/count.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/cross.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/cumsum.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/variance.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/deviation.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/extent.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/fsum.js","webpack://app/./node_modules/internmap/src/index.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/identity.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/group.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/permute.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/sort.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/groupSort.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/array.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/constant.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/ticks.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/nice.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/threshold/sturges.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/bin.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/max.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/maxIndex.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/min.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/minIndex.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/quickselect.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/greatest.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/quantile.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/threshold/scott.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/mean.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/median.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/merge.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/mode.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/pairs.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/range.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/rank.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/least.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/leastIndex.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/greatestIndex.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/scan.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/shuffle.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/sum.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/transpose.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/zip.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/every.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/some.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/filter.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/map.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/reduce.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/reverse.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/difference.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/disjoint.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/intersection.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/superset.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/subset.js","webpack://app/./node_modules/d3/node_modules/d3-array/src/union.js","webpack://app/./node_modules/d3-axis/src/identity.js","webpack://app/./node_modules/d3-axis/src/axis.js","webpack://app/./node_modules/d3-brush/node_modules/d3-dispatch/src/dispatch.js","webpack://app/./node_modules/d3-selection/src/selector.js","webpack://app/./node_modules/d3-selection/src/array.js","webpack://app/./node_modules/d3-selection/src/selectorAll.js","webpack://app/./node_modules/d3-selection/src/matcher.js","webpack://app/./node_modules/d3-selection/src/selection/selectChild.js","webpack://app/./node_modules/d3-selection/src/selection/selectChildren.js","webpack://app/./node_modules/d3-selection/src/selection/sparse.js","webpack://app/./node_modules/d3-selection/src/selection/enter.js","webpack://app/./node_modules/d3-selection/src/selection/data.js","webpack://app/./node_modules/d3-selection/src/selection/sort.js","webpack://app/./node_modules/d3-selection/src/namespaces.js","webpack://app/./node_modules/d3-selection/src/namespace.js","webpack://app/./node_modules/d3-selection/src/selection/attr.js","webpack://app/./node_modules/d3-selection/src/window.js","webpack://app/./node_modules/d3-selection/src/selection/style.js","webpack://app/./node_modules/d3-selection/src/selection/property.js","webpack://app/./node_modules/d3-selection/src/selection/classed.js","webpack://app/./node_modules/d3-selection/src/selection/text.js","webpack://app/./node_modules/d3-selection/src/selection/html.js","webpack://app/./node_modules/d3-selection/src/selection/raise.js","webpack://app/./node_modules/d3-selection/src/selection/lower.js","webpack://app/./node_modules/d3-selection/src/creator.js","webpack://app/./node_modules/d3-selection/src/selection/insert.js","webpack://app/./node_modules/d3-selection/src/selection/remove.js","webpack://app/./node_modules/d3-selection/src/selection/clone.js","webpack://app/./node_modules/d3-selection/src/selection/on.js","webpack://app/./node_modules/d3-selection/src/selection/dispatch.js","webpack://app/./node_modules/d3-selection/src/selection/index.js","webpack://app/./node_modules/d3-selection/src/selection/select.js","webpack://app/./node_modules/d3-selection/src/selection/selectAll.js","webpack://app/./node_modules/d3-selection/src/selection/filter.js","webpack://app/./node_modules/d3-selection/src/constant.js","webpack://app/./node_modules/d3-selection/src/selection/exit.js","webpack://app/./node_modules/d3-selection/src/selection/join.js","webpack://app/./node_modules/d3-selection/src/selection/merge.js","webpack://app/./node_modules/d3-selection/src/selection/order.js","webpack://app/./node_modules/d3-selection/src/selection/call.js","webpack://app/./node_modules/d3-selection/src/selection/nodes.js","webpack://app/./node_modules/d3-selection/src/selection/node.js","webpack://app/./node_modules/d3-selection/src/selection/size.js","webpack://app/./node_modules/d3-selection/src/selection/empty.js","webpack://app/./node_modules/d3-selection/src/selection/each.js","webpack://app/./node_modules/d3-selection/src/selection/append.js","webpack://app/./node_modules/d3-selection/src/selection/datum.js","webpack://app/./node_modules/d3-selection/src/selection/iterator.js","webpack://app/./node_modules/d3-selection/src/select.js","webpack://app/./node_modules/d3-brush/node_modules/d3-drag/src/noevent.js","webpack://app/./node_modules/d3-brush/node_modules/d3-color/src/define.js","webpack://app/./node_modules/d3-brush/node_modules/d3-color/src/color.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/basis.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/constant.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/color.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/rgb.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/basisClosed.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/array.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/date.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/number.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/object.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/string.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/numberArray.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/value.js","webpack://app/./node_modules/d3-selection/src/sourceEvent.js","webpack://app/./node_modules/d3-selection/src/pointer.js","webpack://app/./node_modules/d3-brush/node_modules/d3-timer/src/timer.js","webpack://app/./node_modules/d3-brush/node_modules/d3-timer/src/timeout.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/schedule.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/interrupt.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/transform/decompose.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/transform/parse.js","webpack://app/./node_modules/d3-brush/node_modules/d3-interpolate/src/transform/index.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/tween.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/interpolate.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/attr.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/attrTween.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/delay.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/duration.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/selection.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/style.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/index.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/select.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/selectAll.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/filter.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/merge.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/transition.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/on.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/styleTween.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/text.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/textTween.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/remove.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/ease.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/easeVarying.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/transition/end.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/selection/transition.js","webpack://app/./node_modules/d3-brush/node_modules/d3-ease/src/cubic.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/selection/index.js","webpack://app/./node_modules/d3-brush/node_modules/d3-transition/src/selection/interrupt.js","webpack://app/./node_modules/d3-brush/src/constant.js","webpack://app/./node_modules/d3-brush/src/event.js","webpack://app/./node_modules/d3-brush/src/noevent.js","webpack://app/./node_modules/d3-brush/src/brush.js","webpack://app/./node_modules/d3-brush/node_modules/d3-drag/src/nodrag.js","webpack://app/./node_modules/d3-chord/src/math.js","webpack://app/./node_modules/d3-chord/src/chord.js","webpack://app/./node_modules/d3-chord/node_modules/d3-path/src/path.js","webpack://app/./node_modules/d3-chord/src/array.js","webpack://app/./node_modules/d3-chord/src/constant.js","webpack://app/./node_modules/d3-chord/src/ribbon.js","webpack://app/./node_modules/d3/node_modules/d3-color/src/define.js","webpack://app/./node_modules/d3/node_modules/d3-color/src/color.js","webpack://app/./node_modules/d3/node_modules/d3-color/src/math.js","webpack://app/./node_modules/d3/node_modules/d3-color/src/lab.js","webpack://app/./node_modules/d3/node_modules/d3-color/src/cubehelix.js","webpack://app/./node_modules/d3-contour/node_modules/d3-array/src/threshold/sturges.js","webpack://app/./node_modules/d3-contour/node_modules/d3-array/src/count.js","webpack://app/./node_modules/d3-contour/node_modules/d3-array/src/ticks.js","webpack://app/./node_modules/d3-contour/src/array.js","webpack://app/./node_modules/d3-contour/src/ascending.js","webpack://app/./node_modules/d3-contour/src/constant.js","webpack://app/./node_modules/d3-contour/src/contains.js","webpack://app/./node_modules/d3-contour/src/noop.js","webpack://app/./node_modules/d3-contour/src/contours.js","webpack://app/./node_modules/d3-contour/node_modules/d3-array/src/extent.js","webpack://app/./node_modules/d3-contour/node_modules/d3-array/src/nice.js","webpack://app/./node_modules/d3-contour/src/area.js","webpack://app/./node_modules/d3-contour/node_modules/d3-array/src/blur.js","webpack://app/./node_modules/d3-contour/node_modules/d3-array/src/max.js","webpack://app/./node_modules/d3-contour/src/density.js","webpack://app/./node_modules/robust-predicates/esm/util.js","webpack://app/./node_modules/robust-predicates/esm/orient2d.js","webpack://app/./node_modules/robust-predicates/esm/orient3d.js","webpack://app/./node_modules/robust-predicates/esm/incircle.js","webpack://app/./node_modules/robust-predicates/esm/insphere.js","webpack://app/./node_modules/delaunator/index.js","webpack://app/./node_modules/d3-delaunay/src/path.js","webpack://app/./node_modules/d3-delaunay/src/polygon.js","webpack://app/./node_modules/d3-delaunay/src/voronoi.js","webpack://app/./node_modules/d3-delaunay/src/delaunay.js","webpack://app/./node_modules/d3/node_modules/d3-dispatch/src/dispatch.js","webpack://app/./node_modules/d3/node_modules/d3-drag/src/noevent.js","webpack://app/./node_modules/d3/node_modules/d3-drag/src/nodrag.js","webpack://app/./node_modules/d3/node_modules/d3-drag/src/constant.js","webpack://app/./node_modules/d3/node_modules/d3-drag/src/event.js","webpack://app/./node_modules/d3/node_modules/d3-drag/src/drag.js","webpack://app/./node_modules/d3/node_modules/d3-dsv/src/dsv.js","webpack://app/./node_modules/d3/node_modules/d3-dsv/src/csv.js","webpack://app/./node_modules/d3/node_modules/d3-dsv/src/tsv.js","webpack://app/./node_modules/d3/node_modules/d3-dsv/src/autoType.js","webpack://app/./node_modules/d3/node_modules/d3-ease/src/linear.js","webpack://app/./node_modules/d3/node_modules/d3-ease/src/quad.js","webpack://app/./node_modules/d3/node_modules/d3-ease/src/cubic.js","webpack://app/./node_modules/d3/node_modules/d3-ease/src/poly.js","webpack://app/./node_modules/d3/node_modules/d3-ease/src/sin.js","webpack://app/./node_modules/d3/node_modules/d3-ease/src/math.js","webpack://app/./node_modules/d3/node_modules/d3-ease/src/exp.js","webpack://app/./node_modules/d3/node_modules/d3-ease/src/circle.js","webpack://app/./node_modules/d3/node_modules/d3-ease/src/bounce.js","webpack://app/./node_modules/d3/node_modules/d3-ease/src/back.js","webpack://app/./node_modules/d3/node_modules/d3-ease/src/elastic.js","webpack://app/./node_modules/d3-fetch/src/blob.js","webpack://app/./node_modules/d3-fetch/src/buffer.js","webpack://app/./node_modules/d3-fetch/node_modules/d3-dsv/src/dsv.js","webpack://app/./node_modules/d3-fetch/node_modules/d3-dsv/src/csv.js","webpack://app/./node_modules/d3-fetch/node_modules/d3-dsv/src/tsv.js","webpack://app/./node_modules/d3-fetch/src/text.js","webpack://app/./node_modules/d3-fetch/src/dsv.js","webpack://app/./node_modules/d3-fetch/src/image.js","webpack://app/./node_modules/d3-fetch/src/json.js","webpack://app/./node_modules/d3-fetch/src/xml.js","webpack://app/./node_modules/d3-force/src/center.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/add.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/quad.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/x.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/y.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/quadtree.js","webpack://app/./node_modules/d3-force/src/constant.js","webpack://app/./node_modules/d3-force/src/jiggle.js","webpack://app/./node_modules/d3-force/src/collide.js","webpack://app/./node_modules/d3-force/src/link.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/cover.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/data.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/extent.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/find.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/remove.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/root.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/size.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/visit.js","webpack://app/./node_modules/d3-force/node_modules/d3-quadtree/src/visitAfter.js","webpack://app/./node_modules/d3-force/node_modules/d3-dispatch/src/dispatch.js","webpack://app/./node_modules/d3-force/node_modules/d3-timer/src/timer.js","webpack://app/./node_modules/d3-force/src/lcg.js","webpack://app/./node_modules/d3-force/src/simulation.js","webpack://app/./node_modules/d3-force/src/manyBody.js","webpack://app/./node_modules/d3-force/src/radial.js","webpack://app/./node_modules/d3-force/src/x.js","webpack://app/./node_modules/d3-force/src/y.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/formatDecimal.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/exponent.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/formatSpecifier.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/formatPrefixAuto.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/formatRounded.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/formatTypes.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/identity.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/locale.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/defaultLocale.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/formatGroup.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/formatNumerals.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/formatTrim.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/precisionFixed.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/precisionPrefix.js","webpack://app/./node_modules/d3/node_modules/d3-format/src/precisionRound.js","webpack://app/./node_modules/d3-geo/node_modules/d3-array/src/fsum.js","webpack://app/./node_modules/d3-geo/src/math.js","webpack://app/./node_modules/d3-geo/src/noop.js","webpack://app/./node_modules/d3-geo/src/stream.js","webpack://app/./node_modules/d3-geo/src/area.js","webpack://app/./node_modules/d3-geo/src/bounds.js","webpack://app/./node_modules/d3-geo/src/cartesian.js","webpack://app/./node_modules/d3-geo/src/centroid.js","webpack://app/./node_modules/d3-geo/src/constant.js","webpack://app/./node_modules/d3-geo/src/compose.js","webpack://app/./node_modules/d3-geo/src/rotation.js","webpack://app/./node_modules/d3-geo/src/circle.js","webpack://app/./node_modules/d3-geo/src/clip/buffer.js","webpack://app/./node_modules/d3-geo/src/pointEqual.js","webpack://app/./node_modules/d3-geo/src/clip/rejoin.js","webpack://app/./node_modules/d3-geo/src/polygonContains.js","webpack://app/./node_modules/d3-geo/node_modules/d3-array/src/merge.js","webpack://app/./node_modules/d3-geo/src/clip/index.js","webpack://app/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://app/./node_modules/d3-geo/src/clip/circle.js","webpack://app/./node_modules/d3-geo/src/clip/rectangle.js","webpack://app/./node_modules/d3-geo/src/length.js","webpack://app/./node_modules/d3-geo/src/clip/line.js","webpack://app/./node_modules/d3-geo/src/clip/extent.js","webpack://app/./node_modules/d3-geo/src/distance.js","webpack://app/./node_modules/d3-geo/src/contains.js","webpack://app/./node_modules/d3-geo/node_modules/d3-array/src/range.js","webpack://app/./node_modules/d3-geo/src/graticule.js","webpack://app/./node_modules/d3-geo/src/interpolate.js","webpack://app/./node_modules/d3-geo/src/identity.js","webpack://app/./node_modules/d3-geo/src/path/area.js","webpack://app/./node_modules/d3-geo/src/path/bounds.js","webpack://app/./node_modules/d3-geo/src/path/centroid.js","webpack://app/./node_modules/d3-geo/src/path/context.js","webpack://app/./node_modules/d3-geo/src/path/measure.js","webpack://app/./node_modules/d3-geo/src/path/string.js","webpack://app/./node_modules/d3-geo/src/path/index.js","webpack://app/./node_modules/d3-geo/src/transform.js","webpack://app/./node_modules/d3-geo/src/projection/fit.js","webpack://app/./node_modules/d3-geo/src/projection/resample.js","webpack://app/./node_modules/d3-geo/src/projection/index.js","webpack://app/./node_modules/d3-geo/src/projection/conic.js","webpack://app/./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://app/./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://app/./node_modules/d3-geo/src/projection/albers.js","webpack://app/./node_modules/d3-geo/src/projection/albersUsa.js","webpack://app/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://app/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://app/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://app/./node_modules/d3-geo/src/projection/mercator.js","webpack://app/./node_modules/d3-geo/src/projection/conicConformal.js","webpack://app/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://app/./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://app/./node_modules/d3-geo/src/projection/equalEarth.js","webpack://app/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://app/./node_modules/d3-geo/src/projection/identity.js","webpack://app/./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://app/./node_modules/d3-geo/src/projection/orthographic.js","webpack://app/./node_modules/d3-geo/src/projection/stereographic.js","webpack://app/./node_modules/d3-geo/src/projection/transverseMercator.js","webpack://app/./node_modules/d3-hierarchy/src/cluster.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://app/./node_modules/d3-hierarchy/src/accessors.js","webpack://app/./node_modules/d3-hierarchy/src/constant.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/find.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://app/./node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack://app/./node_modules/d3-hierarchy/src/lcg.js","webpack://app/./node_modules/d3-hierarchy/src/pack/enclose.js","webpack://app/./node_modules/d3-hierarchy/src/array.js","webpack://app/./node_modules/d3-hierarchy/src/pack/siblings.js","webpack://app/./node_modules/d3-hierarchy/src/pack/index.js","webpack://app/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://app/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://app/./node_modules/d3-hierarchy/src/partition.js","webpack://app/./node_modules/d3-hierarchy/src/stratify.js","webpack://app/./node_modules/d3-hierarchy/src/tree.js","webpack://app/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://app/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://app/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://app/./node_modules/d3-hierarchy/src/treemap/binary.js","webpack://app/./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://app/./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/basis.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/basisClosed.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/constant.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/color.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/rgb.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/numberArray.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/array.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/date.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/number.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/object.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/string.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/value.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/discrete.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/hue.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/round.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/transform/decompose.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/transform/parse.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/transform/index.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/zoom.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/hsl.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/lab.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/hcl.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/cubehelix.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/piecewise.js","webpack://app/./node_modules/d3/node_modules/d3-interpolate/src/quantize.js","webpack://app/./node_modules/d3/node_modules/d3-path/src/path.js","webpack://app/./node_modules/d3-polygon/src/area.js","webpack://app/./node_modules/d3-polygon/src/centroid.js","webpack://app/./node_modules/d3-polygon/src/cross.js","webpack://app/./node_modules/d3-polygon/src/hull.js","webpack://app/./node_modules/d3-polygon/src/contains.js","webpack://app/./node_modules/d3-polygon/src/length.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/add.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/quad.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/x.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/y.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/quadtree.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/cover.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/data.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/extent.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/find.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/remove.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/root.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/size.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/visit.js","webpack://app/./node_modules/d3/node_modules/d3-quadtree/src/visitAfter.js","webpack://app/./node_modules/d3-random/src/defaultSource.js","webpack://app/./node_modules/d3-random/src/uniform.js","webpack://app/./node_modules/d3-random/src/int.js","webpack://app/./node_modules/d3-random/src/normal.js","webpack://app/./node_modules/d3-random/src/logNormal.js","webpack://app/./node_modules/d3-random/src/irwinHall.js","webpack://app/./node_modules/d3-random/src/bates.js","webpack://app/./node_modules/d3-random/src/exponential.js","webpack://app/./node_modules/d3-random/src/pareto.js","webpack://app/./node_modules/d3-random/src/bernoulli.js","webpack://app/./node_modules/d3-random/src/geometric.js","webpack://app/./node_modules/d3-random/src/gamma.js","webpack://app/./node_modules/d3-random/src/beta.js","webpack://app/./node_modules/d3-random/src/binomial.js","webpack://app/./node_modules/d3-random/src/weibull.js","webpack://app/./node_modules/d3-random/src/cauchy.js","webpack://app/./node_modules/d3-random/src/logistic.js","webpack://app/./node_modules/d3-random/src/poisson.js","webpack://app/./node_modules/d3-random/src/lcg.js","webpack://app/./node_modules/d3-scale/src/init.js","webpack://app/./node_modules/d3-scale/src/ordinal.js","webpack://app/./node_modules/d3-scale/src/band.js","webpack://app/./node_modules/d3-scale/node_modules/d3-array/src/range.js","webpack://app/./node_modules/d3-scale/node_modules/d3-array/src/ticks.js","webpack://app/./node_modules/d3-scale/node_modules/d3-array/src/ascending.js","webpack://app/./node_modules/d3-scale/node_modules/d3-array/src/descending.js","webpack://app/./node_modules/d3-scale/node_modules/d3-array/src/bisector.js","webpack://app/./node_modules/d3-scale/node_modules/d3-array/src/number.js","webpack://app/./node_modules/d3-scale/node_modules/d3-array/src/bisect.js","webpack://app/./node_modules/d3-scale/node_modules/d3-color/src/define.js","webpack://app/./node_modules/d3-scale/node_modules/d3-color/src/color.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/basis.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/constant.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/color.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/rgb.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/basisClosed.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/array.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/date.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/number.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/object.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/string.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/numberArray.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/value.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/round.js","webpack://app/./node_modules/d3-scale/src/number.js","webpack://app/./node_modules/d3-scale/src/continuous.js","webpack://app/./node_modules/d3-scale/src/constant.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/formatSpecifier.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/formatPrefixAuto.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/formatDecimal.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/exponent.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/formatRounded.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/formatTypes.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/identity.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/locale.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/defaultLocale.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/formatGroup.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/formatNumerals.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/formatTrim.js","webpack://app/./node_modules/d3-scale/src/tickFormat.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/precisionPrefix.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/precisionRound.js","webpack://app/./node_modules/d3-scale/node_modules/d3-format/src/precisionFixed.js","webpack://app/./node_modules/d3-scale/src/linear.js","webpack://app/./node_modules/d3-scale/src/identity.js","webpack://app/./node_modules/d3-scale/src/nice.js","webpack://app/./node_modules/d3-scale/src/log.js","webpack://app/./node_modules/d3-scale/src/symlog.js","webpack://app/./node_modules/d3-scale/src/pow.js","webpack://app/./node_modules/d3-scale/src/radial.js","webpack://app/./node_modules/d3-scale/node_modules/d3-array/src/max.js","webpack://app/./node_modules/d3-scale/node_modules/d3-array/src/min.js","webpack://app/./node_modules/d3-scale/node_modules/d3-array/src/sort.js","webpack://app/./node_modules/d3-scale/node_modules/d3-array/src/quickselect.js","webpack://app/./node_modules/d3-scale/node_modules/d3-array/src/quantile.js","webpack://app/./node_modules/d3-scale/src/quantile.js","webpack://app/./node_modules/d3-scale/src/quantize.js","webpack://app/./node_modules/d3-scale/src/threshold.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time/src/duration.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time/src/interval.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time/src/millisecond.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time/src/second.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time/src/minute.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time/src/hour.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time/src/day.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time/src/week.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time/src/month.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time/src/year.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time/src/ticks.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time-format/src/locale.js","webpack://app/./node_modules/d3-scale/node_modules/d3-time-format/src/defaultLocale.js","webpack://app/./node_modules/d3-scale/src/time.js","webpack://app/./node_modules/d3-scale/src/utcTime.js","webpack://app/./node_modules/d3-scale/src/sequential.js","webpack://app/./node_modules/d3-scale/src/sequentialQuantile.js","webpack://app/./node_modules/d3-scale/src/diverging.js","webpack://app/./node_modules/d3-scale/node_modules/d3-interpolate/src/piecewise.js","webpack://app/./node_modules/d3-scale-chromatic/src/colors.js","webpack://app/./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack://app/./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack://app/./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack://app/./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack://app/./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack://app/./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack://app/./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack://app/./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack://app/./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack://app/./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack://app/./node_modules/d3-scale-chromatic/node_modules/d3-color/src/define.js","webpack://app/./node_modules/d3-scale-chromatic/node_modules/d3-color/src/color.js","webpack://app/./node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/basis.js","webpack://app/./node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/constant.js","webpack://app/./node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/color.js","webpack://app/./node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/rgb.js","webpack://app/./node_modules/d3-scale-chromatic/src/ramp.js","webpack://app/./node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/basisClosed.js","webpack://app/./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack://app/./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack://app/./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack://app/./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack://app/./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack://app/./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack://app/./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack://app/./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack://app/./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack://app/./node_modules/d3-scale-chromatic/node_modules/d3-color/src/math.js","webpack://app/./node_modules/d3-scale-chromatic/node_modules/d3-color/src/cubehelix.js","webpack://app/./node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/cubehelix.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack://app/./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack://app/./node_modules/d3-selection/src/create.js","webpack://app/./node_modules/d3-selection/src/local.js","webpack://app/./node_modules/d3-selection/src/pointers.js","webpack://app/./node_modules/d3-selection/src/selectAll.js","webpack://app/./node_modules/d3-shape/src/constant.js","webpack://app/./node_modules/d3-shape/src/math.js","webpack://app/./node_modules/d3-shape/node_modules/d3-path/src/path.js","webpack://app/./node_modules/d3-shape/src/path.js","webpack://app/./node_modules/d3-shape/src/arc.js","webpack://app/./node_modules/d3-shape/src/array.js","webpack://app/./node_modules/d3-shape/src/curve/linear.js","webpack://app/./node_modules/d3-shape/src/point.js","webpack://app/./node_modules/d3-shape/src/line.js","webpack://app/./node_modules/d3-shape/src/area.js","webpack://app/./node_modules/d3-shape/src/descending.js","webpack://app/./node_modules/d3-shape/src/identity.js","webpack://app/./node_modules/d3-shape/src/pie.js","webpack://app/./node_modules/d3-shape/src/curve/radial.js","webpack://app/./node_modules/d3-shape/src/lineRadial.js","webpack://app/./node_modules/d3-shape/src/areaRadial.js","webpack://app/./node_modules/d3-shape/src/pointRadial.js","webpack://app/./node_modules/d3-shape/src/curve/bump.js","webpack://app/./node_modules/d3-shape/src/link.js","webpack://app/./node_modules/d3-shape/src/symbol/asterisk.js","webpack://app/./node_modules/d3-shape/src/symbol/circle.js","webpack://app/./node_modules/d3-shape/src/symbol/cross.js","webpack://app/./node_modules/d3-shape/src/symbol/diamond.js","webpack://app/./node_modules/d3-shape/src/symbol/diamond2.js","webpack://app/./node_modules/d3-shape/src/symbol/plus.js","webpack://app/./node_modules/d3-shape/src/symbol/square.js","webpack://app/./node_modules/d3-shape/src/symbol/square2.js","webpack://app/./node_modules/d3-shape/src/symbol/star.js","webpack://app/./node_modules/d3-shape/src/symbol/triangle.js","webpack://app/./node_modules/d3-shape/src/symbol/triangle2.js","webpack://app/./node_modules/d3-shape/src/symbol/wye.js","webpack://app/./node_modules/d3-shape/src/symbol/times.js","webpack://app/./node_modules/d3-shape/src/symbol.js","webpack://app/./node_modules/d3-shape/src/noop.js","webpack://app/./node_modules/d3-shape/src/curve/basis.js","webpack://app/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://app/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://app/./node_modules/d3-shape/src/curve/bundle.js","webpack://app/./node_modules/d3-shape/src/curve/cardinal.js","webpack://app/./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://app/./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://app/./node_modules/d3-shape/src/curve/catmullRom.js","webpack://app/./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://app/./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://app/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://app/./node_modules/d3-shape/src/curve/monotone.js","webpack://app/./node_modules/d3-shape/src/curve/natural.js","webpack://app/./node_modules/d3-shape/src/curve/step.js","webpack://app/./node_modules/d3-shape/src/offset/none.js","webpack://app/./node_modules/d3-shape/src/order/none.js","webpack://app/./node_modules/d3-shape/src/stack.js","webpack://app/./node_modules/d3-shape/src/offset/expand.js","webpack://app/./node_modules/d3-shape/src/offset/diverging.js","webpack://app/./node_modules/d3-shape/src/offset/silhouette.js","webpack://app/./node_modules/d3-shape/src/offset/wiggle.js","webpack://app/./node_modules/d3-shape/src/order/appearance.js","webpack://app/./node_modules/d3-shape/src/order/ascending.js","webpack://app/./node_modules/d3-shape/src/order/descending.js","webpack://app/./node_modules/d3-shape/src/order/insideOut.js","webpack://app/./node_modules/d3-shape/src/order/reverse.js","webpack://app/./node_modules/d3/node_modules/d3-time/src/interval.js","webpack://app/./node_modules/d3/node_modules/d3-time/src/millisecond.js","webpack://app/./node_modules/d3/node_modules/d3-time/src/duration.js","webpack://app/./node_modules/d3/node_modules/d3-time/src/second.js","webpack://app/./node_modules/d3/node_modules/d3-time/src/minute.js","webpack://app/./node_modules/d3/node_modules/d3-time/src/hour.js","webpack://app/./node_modules/d3/node_modules/d3-time/src/day.js","webpack://app/./node_modules/d3/node_modules/d3-time/src/week.js","webpack://app/./node_modules/d3/node_modules/d3-time/src/month.js","webpack://app/./node_modules/d3/node_modules/d3-time/src/year.js","webpack://app/./node_modules/d3/node_modules/d3-time/src/ticks.js","webpack://app/./node_modules/d3/node_modules/d3-time-format/src/locale.js","webpack://app/./node_modules/d3/node_modules/d3-time-format/src/defaultLocale.js","webpack://app/./node_modules/d3/node_modules/d3-time-format/src/isoFormat.js","webpack://app/./node_modules/d3/node_modules/d3-time-format/src/isoParse.js","webpack://app/./node_modules/d3/node_modules/d3-timer/src/timer.js","webpack://app/./node_modules/d3/node_modules/d3-timer/src/timeout.js","webpack://app/./node_modules/d3/node_modules/d3-timer/src/interval.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/schedule.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/interrupt.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/tween.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/interpolate.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/attr.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/attrTween.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/delay.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/duration.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/selection.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/style.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/index.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/select.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/selectAll.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/filter.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/merge.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/transition.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/on.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/styleTween.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/text.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/textTween.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/remove.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/ease.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/easeVarying.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/transition/end.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/selection/transition.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/selection/index.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/selection/interrupt.js","webpack://app/./node_modules/d3/node_modules/d3-transition/src/active.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-dispatch/src/dispatch.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-drag/src/noevent.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-interpolate/src/zoom.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-timer/src/timer.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-timer/src/timeout.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/schedule.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/interrupt.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-interpolate/src/number.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-interpolate/src/transform/decompose.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-interpolate/src/transform/parse.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-interpolate/src/transform/index.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/tween.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-color/src/define.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-color/src/color.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-interpolate/src/basis.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-interpolate/src/constant.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-interpolate/src/color.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-interpolate/src/rgb.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-interpolate/src/basisClosed.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-interpolate/src/string.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/interpolate.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/attr.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/attrTween.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/delay.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/duration.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/selection.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/style.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/index.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/select.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/selectAll.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/filter.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/merge.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/transition.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/on.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/styleTween.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/text.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/textTween.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/remove.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/ease.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/easeVarying.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/end.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/selection/transition.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-ease/src/cubic.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/selection/index.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-transition/src/selection/interrupt.js","webpack://app/./node_modules/d3-zoom/src/constant.js","webpack://app/./node_modules/d3-zoom/src/event.js","webpack://app/./node_modules/d3-zoom/src/transform.js","webpack://app/./node_modules/d3-zoom/src/noevent.js","webpack://app/./node_modules/d3-zoom/src/zoom.js","webpack://app/./node_modules/d3-zoom/node_modules/d3-drag/src/nodrag.js"],"sourcesContent":["/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n var context = this;\n\n (function() {\n (function() {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n\n }).call(this);\n }).call(context);\n\n var Rails = context.Rails;\n\n (function() {\n (function() {\n var nonce;\n\n nonce = null;\n\n Rails.loadCSPNonce = function() {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function() {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n\n }).call(this);\n (function() {\n var expando, m;\n\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function(element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function(element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function(element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n\n Rails.$ = function(selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n\n }).call(this);\n (function() {\n var $, csrfParam, csrfToken;\n\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function(xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function() {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if ((token != null) && (param != null)) {\n return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n return input.value = token;\n });\n }\n };\n\n }).call(this);\n (function() {\n var CustomEvent, fire, matches, preventDefault;\n\n matches = Rails.matches;\n\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function() {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n }\n return result;\n };\n }\n\n fire = Rails.fire = function(obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function(e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function(element, selector, eventType, handler) {\n return element.addEventListener(eventType, function(e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n\n }).call(this);\n (function() {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function(options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function() {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n\n createXHR = function(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n\n processResponse = function(response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n\n Rails.href = function(element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function(url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n } catch (error) {\n e = error;\n return true;\n }\n };\n\n }).call(this);\n (function() {\n var matches, toArray;\n\n matches = Rails.matches;\n\n toArray = function(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function(element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function(option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function(param) {\n if (param.name != null) {\n return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function(form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function(el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n\n }).call(this);\n (function() {\n var allowAction, fire, stopEverything;\n\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function(e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function(message, element) {\n return confirm(message);\n };\n\n allowAction = function(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n\n }).call(this);\n (function() {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function(e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function(e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function(e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n\n }).call(this);\n (function() {\n var stopEverything;\n\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function(e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n\n }).call(this);\n (function() {\n var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n slice = [].slice;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function(element) {\n var value;\n value = element.getAttribute('data-remote');\n return (value != null) && value !== 'false';\n };\n\n Rails.handleRemote = function(e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: (withCredentials != null) && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function(e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function(e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n\n }).call(this);\n (function() {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function() {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function() {\n $(Rails.formEnableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n return setTimeout((function() {\n return disableElement(e);\n }), 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n\n }).call(this);\n }).call(this);\n\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);\n","/**\r\n* @version: 3.1\r\n* @author: Dan Grossman http://www.dangrossman.info/\r\n* @copyright: Copyright (c) 2012-2019 Dan Grossman. All rights reserved.\r\n* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php\r\n* @website: http://www.daterangepicker.com/\r\n*/\r\n// Following the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Make globaly available as well\r\n define(['moment', 'jquery'], function (moment, jquery) {\r\n if (!jquery.fn) jquery.fn = {}; // webpack server rendering\r\n if (typeof moment !== 'function' && moment.hasOwnProperty('default')) moment = moment['default']\r\n return factory(moment, jquery);\r\n });\r\n } else if (typeof module === 'object' && module.exports) {\r\n // Node / Browserify\r\n //isomorphic issue\r\n var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined;\r\n if (!jQuery) {\r\n jQuery = require('jquery');\r\n if (!jQuery.fn) jQuery.fn = {};\r\n }\r\n var moment = (typeof window != 'undefined' && typeof window.moment != 'undefined') ? window.moment : require('moment');\r\n module.exports = factory(moment, jQuery);\r\n } else {\r\n // Browser globals\r\n root.daterangepicker = factory(root.moment, root.jQuery);\r\n }\r\n}(this, function(moment, $) {\r\n var DateRangePicker = function(element, options, cb) {\r\n\r\n //default settings for options\r\n this.parentEl = 'body';\r\n this.element = $(element);\r\n this.startDate = moment().startOf('day');\r\n this.endDate = moment().endOf('day');\r\n this.minDate = false;\r\n this.maxDate = false;\r\n this.maxSpan = false;\r\n this.autoApply = false;\r\n this.singleDatePicker = false;\r\n this.showDropdowns = false;\r\n this.minYear = moment().subtract(100, 'year').format('YYYY');\r\n this.maxYear = moment().add(100, 'year').format('YYYY');\r\n this.showWeekNumbers = false;\r\n this.showISOWeekNumbers = false;\r\n this.showCustomRangeLabel = true;\r\n this.timePicker = false;\r\n this.timePicker24Hour = false;\r\n this.timePickerIncrement = 1;\r\n this.timePickerSeconds = false;\r\n this.linkedCalendars = true;\r\n this.autoUpdateInput = true;\r\n this.alwaysShowCalendars = false;\r\n this.ranges = {};\r\n\r\n this.opens = 'right';\r\n if (this.element.hasClass('pull-right'))\r\n this.opens = 'left';\r\n\r\n this.drops = 'down';\r\n if (this.element.hasClass('dropup'))\r\n this.drops = 'up';\r\n\r\n this.buttonClasses = 'btn btn-sm';\r\n this.applyButtonClasses = 'btn-primary';\r\n this.cancelButtonClasses = 'btn-default';\r\n\r\n this.locale = {\r\n direction: 'ltr',\r\n format: moment.localeData().longDateFormat('L'),\r\n separator: ' - ',\r\n applyLabel: 'Apply',\r\n cancelLabel: 'Cancel',\r\n weekLabel: 'W',\r\n customRangeLabel: 'Custom Range',\r\n daysOfWeek: moment.weekdaysMin(),\r\n monthNames: moment.monthsShort(),\r\n firstDay: moment.localeData().firstDayOfWeek()\r\n };\r\n\r\n this.callback = function() { };\r\n\r\n //some state information\r\n this.isShowing = false;\r\n this.leftCalendar = {};\r\n this.rightCalendar = {};\r\n\r\n //custom options from user\r\n if (typeof options !== 'object' || options === null)\r\n options = {};\r\n\r\n //allow setting options with data attributes\r\n //data-api options will be overwritten with custom javascript options\r\n options = $.extend(this.element.data(), options);\r\n\r\n //html template for the picker UI\r\n if (typeof options.template !== 'string' && !(options.template instanceof $))\r\n options.template =\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
';\r\n\r\n this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);\r\n this.container = $(options.template).appendTo(this.parentEl);\r\n\r\n //\r\n // handle all the possible options overriding defaults\r\n //\r\n\r\n if (typeof options.locale === 'object') {\r\n\r\n if (typeof options.locale.direction === 'string')\r\n this.locale.direction = options.locale.direction;\r\n\r\n if (typeof options.locale.format === 'string')\r\n this.locale.format = options.locale.format;\r\n\r\n if (typeof options.locale.separator === 'string')\r\n this.locale.separator = options.locale.separator;\r\n\r\n if (typeof options.locale.daysOfWeek === 'object')\r\n this.locale.daysOfWeek = options.locale.daysOfWeek.slice();\r\n\r\n if (typeof options.locale.monthNames === 'object')\r\n this.locale.monthNames = options.locale.monthNames.slice();\r\n\r\n if (typeof options.locale.firstDay === 'number')\r\n this.locale.firstDay = options.locale.firstDay;\r\n\r\n if (typeof options.locale.applyLabel === 'string')\r\n this.locale.applyLabel = options.locale.applyLabel;\r\n\r\n if (typeof options.locale.cancelLabel === 'string')\r\n this.locale.cancelLabel = options.locale.cancelLabel;\r\n\r\n if (typeof options.locale.weekLabel === 'string')\r\n this.locale.weekLabel = options.locale.weekLabel;\r\n\r\n if (typeof options.locale.customRangeLabel === 'string'){\r\n //Support unicode chars in the custom range name.\r\n var elem = document.createElement('textarea');\r\n elem.innerHTML = options.locale.customRangeLabel;\r\n var rangeHtml = elem.value;\r\n this.locale.customRangeLabel = rangeHtml;\r\n }\r\n }\r\n this.container.addClass(this.locale.direction);\r\n\r\n if (typeof options.startDate === 'string')\r\n this.startDate = moment(options.startDate, this.locale.format);\r\n\r\n if (typeof options.endDate === 'string')\r\n this.endDate = moment(options.endDate, this.locale.format);\r\n\r\n if (typeof options.minDate === 'string')\r\n this.minDate = moment(options.minDate, this.locale.format);\r\n\r\n if (typeof options.maxDate === 'string')\r\n this.maxDate = moment(options.maxDate, this.locale.format);\r\n\r\n if (typeof options.startDate === 'object')\r\n this.startDate = moment(options.startDate);\r\n\r\n if (typeof options.endDate === 'object')\r\n this.endDate = moment(options.endDate);\r\n\r\n if (typeof options.minDate === 'object')\r\n this.minDate = moment(options.minDate);\r\n\r\n if (typeof options.maxDate === 'object')\r\n this.maxDate = moment(options.maxDate);\r\n\r\n // sanity check for bad options\r\n if (this.minDate && this.startDate.isBefore(this.minDate))\r\n this.startDate = this.minDate.clone();\r\n\r\n // sanity check for bad options\r\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\r\n this.endDate = this.maxDate.clone();\r\n\r\n if (typeof options.applyButtonClasses === 'string')\r\n this.applyButtonClasses = options.applyButtonClasses;\r\n\r\n if (typeof options.applyClass === 'string') //backwards compat\r\n this.applyButtonClasses = options.applyClass;\r\n\r\n if (typeof options.cancelButtonClasses === 'string')\r\n this.cancelButtonClasses = options.cancelButtonClasses;\r\n\r\n if (typeof options.cancelClass === 'string') //backwards compat\r\n this.cancelButtonClasses = options.cancelClass;\r\n\r\n if (typeof options.maxSpan === 'object')\r\n this.maxSpan = options.maxSpan;\r\n\r\n if (typeof options.dateLimit === 'object') //backwards compat\r\n this.maxSpan = options.dateLimit;\r\n\r\n if (typeof options.opens === 'string')\r\n this.opens = options.opens;\r\n\r\n if (typeof options.drops === 'string')\r\n this.drops = options.drops;\r\n\r\n if (typeof options.showWeekNumbers === 'boolean')\r\n this.showWeekNumbers = options.showWeekNumbers;\r\n\r\n if (typeof options.showISOWeekNumbers === 'boolean')\r\n this.showISOWeekNumbers = options.showISOWeekNumbers;\r\n\r\n if (typeof options.buttonClasses === 'string')\r\n this.buttonClasses = options.buttonClasses;\r\n\r\n if (typeof options.buttonClasses === 'object')\r\n this.buttonClasses = options.buttonClasses.join(' ');\r\n\r\n if (typeof options.showDropdowns === 'boolean')\r\n this.showDropdowns = options.showDropdowns;\r\n\r\n if (typeof options.minYear === 'number')\r\n this.minYear = options.minYear;\r\n\r\n if (typeof options.maxYear === 'number')\r\n this.maxYear = options.maxYear;\r\n\r\n if (typeof options.showCustomRangeLabel === 'boolean')\r\n this.showCustomRangeLabel = options.showCustomRangeLabel;\r\n\r\n if (typeof options.singleDatePicker === 'boolean') {\r\n this.singleDatePicker = options.singleDatePicker;\r\n if (this.singleDatePicker)\r\n this.endDate = this.startDate.clone();\r\n }\r\n\r\n if (typeof options.timePicker === 'boolean')\r\n this.timePicker = options.timePicker;\r\n\r\n if (typeof options.timePickerSeconds === 'boolean')\r\n this.timePickerSeconds = options.timePickerSeconds;\r\n\r\n if (typeof options.timePickerIncrement === 'number')\r\n this.timePickerIncrement = options.timePickerIncrement;\r\n\r\n if (typeof options.timePicker24Hour === 'boolean')\r\n this.timePicker24Hour = options.timePicker24Hour;\r\n\r\n if (typeof options.autoApply === 'boolean')\r\n this.autoApply = options.autoApply;\r\n\r\n if (typeof options.autoUpdateInput === 'boolean')\r\n this.autoUpdateInput = options.autoUpdateInput;\r\n\r\n if (typeof options.linkedCalendars === 'boolean')\r\n this.linkedCalendars = options.linkedCalendars;\r\n\r\n if (typeof options.isInvalidDate === 'function')\r\n this.isInvalidDate = options.isInvalidDate;\r\n\r\n if (typeof options.isCustomDate === 'function')\r\n this.isCustomDate = options.isCustomDate;\r\n\r\n if (typeof options.alwaysShowCalendars === 'boolean')\r\n this.alwaysShowCalendars = options.alwaysShowCalendars;\r\n\r\n // update day names order to firstDay\r\n if (this.locale.firstDay != 0) {\r\n var iterator = this.locale.firstDay;\r\n while (iterator > 0) {\r\n this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());\r\n iterator--;\r\n }\r\n }\r\n\r\n var start, end, range;\r\n\r\n //if no start/end dates set, check if an input element contains initial values\r\n if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {\r\n if ($(this.element).is(':text')) {\r\n var val = $(this.element).val(),\r\n split = val.split(this.locale.separator);\r\n\r\n start = end = null;\r\n\r\n if (split.length == 2) {\r\n start = moment(split[0], this.locale.format);\r\n end = moment(split[1], this.locale.format);\r\n } else if (this.singleDatePicker && val !== \"\") {\r\n start = moment(val, this.locale.format);\r\n end = moment(val, this.locale.format);\r\n }\r\n if (start !== null && end !== null) {\r\n this.setStartDate(start);\r\n this.setEndDate(end);\r\n }\r\n }\r\n }\r\n\r\n if (typeof options.ranges === 'object') {\r\n for (range in options.ranges) {\r\n\r\n if (typeof options.ranges[range][0] === 'string')\r\n start = moment(options.ranges[range][0], this.locale.format);\r\n else\r\n start = moment(options.ranges[range][0]);\r\n\r\n if (typeof options.ranges[range][1] === 'string')\r\n end = moment(options.ranges[range][1], this.locale.format);\r\n else\r\n end = moment(options.ranges[range][1]);\r\n\r\n // If the start or end date exceed those allowed by the minDate or maxSpan\r\n // options, shorten the range to the allowable period.\r\n if (this.minDate && start.isBefore(this.minDate))\r\n start = this.minDate.clone();\r\n\r\n var maxDate = this.maxDate;\r\n if (this.maxSpan && maxDate && start.clone().add(this.maxSpan).isAfter(maxDate))\r\n maxDate = start.clone().add(this.maxSpan);\r\n if (maxDate && end.isAfter(maxDate))\r\n end = maxDate.clone();\r\n\r\n // If the end of the range is before the minimum or the start of the range is\r\n // after the maximum, don't display this range option at all.\r\n if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day'))\r\n || (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day')))\r\n continue;\r\n\r\n //Support unicode chars in the range names.\r\n var elem = document.createElement('textarea');\r\n elem.innerHTML = range;\r\n var rangeHtml = elem.value;\r\n\r\n this.ranges[rangeHtml] = [start, end];\r\n }\r\n\r\n var list = '';\r\n this.container.find('.ranges').prepend(list);\r\n }\r\n\r\n if (typeof cb === 'function') {\r\n this.callback = cb;\r\n }\r\n\r\n if (!this.timePicker) {\r\n this.startDate = this.startDate.startOf('day');\r\n this.endDate = this.endDate.endOf('day');\r\n this.container.find('.calendar-time').hide();\r\n }\r\n\r\n //can't be used together for now\r\n if (this.timePicker && this.autoApply)\r\n this.autoApply = false;\r\n\r\n if (this.autoApply) {\r\n this.container.addClass('auto-apply');\r\n }\r\n\r\n if (typeof options.ranges === 'object')\r\n this.container.addClass('show-ranges');\r\n\r\n if (this.singleDatePicker) {\r\n this.container.addClass('single');\r\n this.container.find('.drp-calendar.left').addClass('single');\r\n this.container.find('.drp-calendar.left').show();\r\n this.container.find('.drp-calendar.right').hide();\r\n if (!this.timePicker && this.autoApply) {\r\n this.container.addClass('auto-apply');\r\n }\r\n }\r\n\r\n if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) {\r\n this.container.addClass('show-calendar');\r\n }\r\n\r\n this.container.addClass('opens' + this.opens);\r\n\r\n //apply CSS classes and labels to buttons\r\n this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);\r\n if (this.applyButtonClasses.length)\r\n this.container.find('.applyBtn').addClass(this.applyButtonClasses);\r\n if (this.cancelButtonClasses.length)\r\n this.container.find('.cancelBtn').addClass(this.cancelButtonClasses);\r\n this.container.find('.applyBtn').html(this.locale.applyLabel);\r\n this.container.find('.cancelBtn').html(this.locale.cancelLabel);\r\n\r\n //\r\n // event listeners\r\n //\r\n\r\n this.container.find('.drp-calendar')\r\n .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))\r\n .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))\r\n .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this))\r\n .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))\r\n .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))\r\n .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))\r\n .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this));\r\n\r\n this.container.find('.ranges')\r\n .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this));\r\n\r\n this.container.find('.drp-buttons')\r\n .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))\r\n .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this));\r\n\r\n if (this.element.is('input') || this.element.is('button')) {\r\n this.element.on({\r\n 'click.daterangepicker': $.proxy(this.show, this),\r\n 'focus.daterangepicker': $.proxy(this.show, this),\r\n 'keyup.daterangepicker': $.proxy(this.elementChanged, this),\r\n 'keydown.daterangepicker': $.proxy(this.keydown, this) //IE 11 compatibility\r\n });\r\n } else {\r\n this.element.on('click.daterangepicker', $.proxy(this.toggle, this));\r\n this.element.on('keydown.daterangepicker', $.proxy(this.toggle, this));\r\n }\r\n\r\n //\r\n // if attached to a text input, set the initial value\r\n //\r\n\r\n this.updateElement();\r\n\r\n };\r\n\r\n DateRangePicker.prototype = {\r\n\r\n constructor: DateRangePicker,\r\n\r\n setStartDate: function(startDate) {\r\n if (typeof startDate === 'string')\r\n this.startDate = moment(startDate, this.locale.format);\r\n\r\n if (typeof startDate === 'object')\r\n this.startDate = moment(startDate);\r\n\r\n if (!this.timePicker)\r\n this.startDate = this.startDate.startOf('day');\r\n\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n\r\n if (this.minDate && this.startDate.isBefore(this.minDate)) {\r\n this.startDate = this.minDate.clone();\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n }\r\n\r\n if (this.maxDate && this.startDate.isAfter(this.maxDate)) {\r\n this.startDate = this.maxDate.clone();\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n }\r\n\r\n if (!this.isShowing)\r\n this.updateElement();\r\n\r\n this.updateMonthsInView();\r\n },\r\n\r\n setEndDate: function(endDate) {\r\n if (typeof endDate === 'string')\r\n this.endDate = moment(endDate, this.locale.format);\r\n\r\n if (typeof endDate === 'object')\r\n this.endDate = moment(endDate);\r\n\r\n if (!this.timePicker)\r\n this.endDate = this.endDate.endOf('day');\r\n\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n\r\n if (this.endDate.isBefore(this.startDate))\r\n this.endDate = this.startDate.clone();\r\n\r\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\r\n this.endDate = this.maxDate.clone();\r\n\r\n if (this.maxSpan && this.startDate.clone().add(this.maxSpan).isBefore(this.endDate))\r\n this.endDate = this.startDate.clone().add(this.maxSpan);\r\n\r\n this.previousRightTime = this.endDate.clone();\r\n\r\n this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\r\n\r\n if (!this.isShowing)\r\n this.updateElement();\r\n\r\n this.updateMonthsInView();\r\n },\r\n\r\n isInvalidDate: function() {\r\n return false;\r\n },\r\n\r\n isCustomDate: function() {\r\n return false;\r\n },\r\n\r\n updateView: function() {\r\n if (this.timePicker) {\r\n this.renderTimePicker('left');\r\n this.renderTimePicker('right');\r\n if (!this.endDate) {\r\n this.container.find('.right .calendar-time select').prop('disabled', true).addClass('disabled');\r\n } else {\r\n this.container.find('.right .calendar-time select').prop('disabled', false).removeClass('disabled');\r\n }\r\n }\r\n if (this.endDate)\r\n this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\r\n this.updateMonthsInView();\r\n this.updateCalendars();\r\n this.updateFormInputs();\r\n },\r\n\r\n updateMonthsInView: function() {\r\n if (this.endDate) {\r\n\r\n //if both dates are visible already, do nothing\r\n if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&\r\n (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\r\n &&\r\n (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\r\n ) {\r\n return;\r\n }\r\n\r\n this.leftCalendar.month = this.startDate.clone().date(2);\r\n if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) {\r\n this.rightCalendar.month = this.endDate.clone().date(2);\r\n } else {\r\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\r\n }\r\n\r\n } else {\r\n if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) {\r\n this.leftCalendar.month = this.startDate.clone().date(2);\r\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\r\n }\r\n }\r\n if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) {\r\n this.rightCalendar.month = this.maxDate.clone().date(2);\r\n this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month');\r\n }\r\n },\r\n\r\n updateCalendars: function() {\r\n\r\n if (this.timePicker) {\r\n var hour, minute, second;\r\n if (this.endDate) {\r\n hour = parseInt(this.container.find('.left .hourselect').val(), 10);\r\n minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\r\n if (isNaN(minute)) {\r\n minute = parseInt(this.container.find('.left .minuteselect option:last').val(), 10);\r\n }\r\n second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.left .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n } else {\r\n hour = parseInt(this.container.find('.right .hourselect').val(), 10);\r\n minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\r\n if (isNaN(minute)) {\r\n minute = parseInt(this.container.find('.right .minuteselect option:last').val(), 10);\r\n }\r\n second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.right .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n }\r\n this.leftCalendar.month.hour(hour).minute(minute).second(second);\r\n this.rightCalendar.month.hour(hour).minute(minute).second(second);\r\n }\r\n\r\n this.renderCalendar('left');\r\n this.renderCalendar('right');\r\n\r\n //highlight any predefined range matching the current start and end dates\r\n this.container.find('.ranges li').removeClass('active');\r\n if (this.endDate == null) return;\r\n\r\n this.calculateChosenLabel();\r\n },\r\n\r\n renderCalendar: function(side) {\r\n\r\n //\r\n // Build the matrix of dates that will populate the calendar\r\n //\r\n\r\n var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar;\r\n var month = calendar.month.month();\r\n var year = calendar.month.year();\r\n var hour = calendar.month.hour();\r\n var minute = calendar.month.minute();\r\n var second = calendar.month.second();\r\n var daysInMonth = moment([year, month]).daysInMonth();\r\n var firstDay = moment([year, month, 1]);\r\n var lastDay = moment([year, month, daysInMonth]);\r\n var lastMonth = moment(firstDay).subtract(1, 'month').month();\r\n var lastYear = moment(firstDay).subtract(1, 'month').year();\r\n var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();\r\n var dayOfWeek = firstDay.day();\r\n\r\n //initialize a 6 rows x 7 columns array for the calendar\r\n var calendar = [];\r\n calendar.firstDay = firstDay;\r\n calendar.lastDay = lastDay;\r\n\r\n for (var i = 0; i < 6; i++) {\r\n calendar[i] = [];\r\n }\r\n\r\n //populate the calendar with date objects\r\n var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;\r\n if (startDay > daysInLastMonth)\r\n startDay -= 7;\r\n\r\n if (dayOfWeek == this.locale.firstDay)\r\n startDay = daysInLastMonth - 6;\r\n\r\n var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);\r\n\r\n var col, row;\r\n for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {\r\n if (i > 0 && col % 7 === 0) {\r\n col = 0;\r\n row++;\r\n }\r\n calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\r\n curDate.hour(12);\r\n\r\n if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {\r\n calendar[row][col] = this.minDate.clone();\r\n }\r\n\r\n if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {\r\n calendar[row][col] = this.maxDate.clone();\r\n }\r\n\r\n }\r\n\r\n //make the calendar object available to hoverDate/clickDate\r\n if (side == 'left') {\r\n this.leftCalendar.calendar = calendar;\r\n } else {\r\n this.rightCalendar.calendar = calendar;\r\n }\r\n\r\n //\r\n // Display the calendar\r\n //\r\n\r\n var minDate = side == 'left' ? this.minDate : this.startDate;\r\n var maxDate = this.maxDate;\r\n var selected = side == 'left' ? this.startDate : this.endDate;\r\n var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'};\r\n\r\n var html = '';\r\n html += '';\r\n html += '';\r\n\r\n // add empty cell for week number\r\n if (this.showWeekNumbers || this.showISOWeekNumbers)\r\n html += '';\r\n\r\n if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {\r\n html += '';\r\n } else {\r\n html += '';\r\n }\r\n\r\n var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(\" YYYY\");\r\n\r\n if (this.showDropdowns) {\r\n var currentMonth = calendar[1][1].month();\r\n var currentYear = calendar[1][1].year();\r\n var maxYear = (maxDate && maxDate.year()) || (this.maxYear);\r\n var minYear = (minDate && minDate.year()) || (this.minYear);\r\n var inMinYear = currentYear == minYear;\r\n var inMaxYear = currentYear == maxYear;\r\n\r\n var monthHtml = '\";\r\n\r\n var yearHtml = '';\r\n\r\n dateHtml = monthHtml + yearHtml;\r\n }\r\n\r\n html += '';\r\n if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {\r\n html += '';\r\n } else {\r\n html += '';\r\n }\r\n\r\n html += '';\r\n html += '';\r\n\r\n // add week number label\r\n if (this.showWeekNumbers || this.showISOWeekNumbers)\r\n html += '';\r\n\r\n $.each(this.locale.daysOfWeek, function(index, dayOfWeek) {\r\n html += '';\r\n });\r\n\r\n html += '';\r\n html += '';\r\n html += '';\r\n\r\n //adjust maxDate to reflect the maxSpan setting in order to\r\n //grey out end dates beyond the maxSpan\r\n if (this.endDate == null && this.maxSpan) {\r\n var maxLimit = this.startDate.clone().add(this.maxSpan).endOf('day');\r\n if (!maxDate || maxLimit.isBefore(maxDate)) {\r\n maxDate = maxLimit;\r\n }\r\n }\r\n\r\n for (var row = 0; row < 6; row++) {\r\n html += '';\r\n\r\n // add week number\r\n if (this.showWeekNumbers)\r\n html += '';\r\n else if (this.showISOWeekNumbers)\r\n html += '';\r\n\r\n for (var col = 0; col < 7; col++) {\r\n\r\n var classes = [];\r\n\r\n //highlight today's date\r\n if (calendar[row][col].isSame(new Date(), \"day\"))\r\n classes.push('today');\r\n\r\n //highlight weekends\r\n if (calendar[row][col].isoWeekday() > 5)\r\n classes.push('weekend');\r\n\r\n //grey out the dates in other months displayed at beginning and end of this calendar\r\n if (calendar[row][col].month() != calendar[1][1].month())\r\n classes.push('off', 'ends');\r\n\r\n //don't allow selection of dates before the minimum date\r\n if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day'))\r\n classes.push('off', 'disabled');\r\n\r\n //don't allow selection of dates after the maximum date\r\n if (maxDate && calendar[row][col].isAfter(maxDate, 'day'))\r\n classes.push('off', 'disabled');\r\n\r\n //don't allow selection of date if a custom function decides it's invalid\r\n if (this.isInvalidDate(calendar[row][col]))\r\n classes.push('off', 'disabled');\r\n\r\n //highlight the currently selected start date\r\n if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD'))\r\n classes.push('active', 'start-date');\r\n\r\n //highlight the currently selected end date\r\n if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD'))\r\n classes.push('active', 'end-date');\r\n\r\n //highlight dates in-between the selected dates\r\n if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate)\r\n classes.push('in-range');\r\n\r\n //apply custom classes for this date\r\n var isCustom = this.isCustomDate(calendar[row][col]);\r\n if (isCustom !== false) {\r\n if (typeof isCustom === 'string')\r\n classes.push(isCustom);\r\n else\r\n Array.prototype.push.apply(classes, isCustom);\r\n }\r\n\r\n var cname = '', disabled = false;\r\n for (var i = 0; i < classes.length; i++) {\r\n cname += classes[i] + ' ';\r\n if (classes[i] == 'disabled')\r\n disabled = true;\r\n }\r\n if (!disabled)\r\n cname += 'available';\r\n\r\n html += '';\r\n\r\n }\r\n html += '';\r\n }\r\n\r\n html += '';\r\n html += '
' + dateHtml + '
' + this.locale.weekLabel + '' + dayOfWeek + '
' + calendar[row][0].week() + '' + calendar[row][0].isoWeek() + '' + calendar[row][col].date() + '
';\r\n\r\n this.container.find('.drp-calendar.' + side + ' .calendar-table').html(html);\r\n\r\n },\r\n\r\n renderTimePicker: function(side) {\r\n\r\n // Don't bother updating the time picker if it's currently disabled\r\n // because an end date hasn't been clicked yet\r\n if (side == 'right' && !this.endDate) return;\r\n\r\n var html, selected, minDate, maxDate = this.maxDate;\r\n\r\n if (this.maxSpan && (!this.maxDate || this.startDate.clone().add(this.maxSpan).isBefore(this.maxDate)))\r\n maxDate = this.startDate.clone().add(this.maxSpan);\r\n\r\n if (side == 'left') {\r\n selected = this.startDate.clone();\r\n minDate = this.minDate;\r\n } else if (side == 'right') {\r\n selected = this.endDate.clone();\r\n minDate = this.startDate;\r\n\r\n //Preserve the time already selected\r\n var timeSelector = this.container.find('.drp-calendar.right .calendar-time');\r\n if (timeSelector.html() != '') {\r\n\r\n selected.hour(!isNaN(selected.hour()) ? selected.hour() : timeSelector.find('.hourselect option:selected').val());\r\n selected.minute(!isNaN(selected.minute()) ? selected.minute() : timeSelector.find('.minuteselect option:selected').val());\r\n selected.second(!isNaN(selected.second()) ? selected.second() : timeSelector.find('.secondselect option:selected').val());\r\n\r\n if (!this.timePicker24Hour) {\r\n var ampm = timeSelector.find('.ampmselect option:selected').val();\r\n if (ampm === 'PM' && selected.hour() < 12)\r\n selected.hour(selected.hour() + 12);\r\n if (ampm === 'AM' && selected.hour() === 12)\r\n selected.hour(0);\r\n }\r\n\r\n }\r\n\r\n if (selected.isBefore(this.startDate))\r\n selected = this.startDate.clone();\r\n\r\n if (maxDate && selected.isAfter(maxDate))\r\n selected = maxDate.clone();\r\n\r\n }\r\n\r\n //\r\n // hours\r\n //\r\n\r\n html = ' ';\r\n\r\n //\r\n // minutes\r\n //\r\n\r\n html += ': ';\r\n\r\n //\r\n // seconds\r\n //\r\n\r\n if (this.timePickerSeconds) {\r\n html += ': ';\r\n }\r\n\r\n //\r\n // AM/PM\r\n //\r\n\r\n if (!this.timePicker24Hour) {\r\n html += '';\r\n }\r\n\r\n this.container.find('.drp-calendar.' + side + ' .calendar-time').html(html);\r\n\r\n },\r\n\r\n updateFormInputs: function() {\r\n\r\n if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {\r\n this.container.find('button.applyBtn').prop('disabled', false);\r\n } else {\r\n this.container.find('button.applyBtn').prop('disabled', true);\r\n }\r\n\r\n },\r\n\r\n move: function() {\r\n var parentOffset = { top: 0, left: 0 },\r\n containerTop,\r\n drops = this.drops;\r\n\r\n var parentRightEdge = $(window).width();\r\n if (!this.parentEl.is('body')) {\r\n parentOffset = {\r\n top: this.parentEl.offset().top - this.parentEl.scrollTop(),\r\n left: this.parentEl.offset().left - this.parentEl.scrollLeft()\r\n };\r\n parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;\r\n }\r\n\r\n switch (drops) {\r\n case 'auto':\r\n containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;\r\n if (containerTop + this.container.outerHeight() >= this.parentEl[0].scrollHeight) {\r\n containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;\r\n drops = 'up';\r\n }\r\n break;\r\n case 'up':\r\n containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;\r\n break;\r\n default:\r\n containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;\r\n break;\r\n }\r\n\r\n // Force the container to it's actual width\r\n this.container.css({\r\n top: 0,\r\n left: 0,\r\n right: 'auto'\r\n });\r\n var containerWidth = this.container.outerWidth();\r\n\r\n this.container.toggleClass('drop-up', drops == 'up');\r\n\r\n if (this.opens == 'left') {\r\n var containerRight = parentRightEdge - this.element.offset().left - this.element.outerWidth();\r\n if (containerWidth + containerRight > $(window).width()) {\r\n this.container.css({\r\n top: containerTop,\r\n right: 'auto',\r\n left: 9\r\n });\r\n } else {\r\n this.container.css({\r\n top: containerTop,\r\n right: containerRight,\r\n left: 'auto'\r\n });\r\n }\r\n } else if (this.opens == 'center') {\r\n var containerLeft = this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2\r\n - containerWidth / 2;\r\n if (containerLeft < 0) {\r\n this.container.css({\r\n top: containerTop,\r\n right: 'auto',\r\n left: 9\r\n });\r\n } else if (containerLeft + containerWidth > $(window).width()) {\r\n this.container.css({\r\n top: containerTop,\r\n left: 'auto',\r\n right: 0\r\n });\r\n } else {\r\n this.container.css({\r\n top: containerTop,\r\n left: containerLeft,\r\n right: 'auto'\r\n });\r\n }\r\n } else {\r\n var containerLeft = this.element.offset().left - parentOffset.left;\r\n if (containerLeft + containerWidth > $(window).width()) {\r\n this.container.css({\r\n top: containerTop,\r\n left: 'auto',\r\n right: 0\r\n });\r\n } else {\r\n this.container.css({\r\n top: containerTop,\r\n left: containerLeft,\r\n right: 'auto'\r\n });\r\n }\r\n }\r\n },\r\n\r\n show: function(e) {\r\n if (this.isShowing) return;\r\n\r\n // Create a click proxy that is private to this instance of datepicker, for unbinding\r\n this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);\r\n\r\n // Bind global datepicker mousedown for hiding and\r\n $(document)\r\n .on('mousedown.daterangepicker', this._outsideClickProxy)\r\n // also support mobile devices\r\n .on('touchend.daterangepicker', this._outsideClickProxy)\r\n // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them\r\n .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)\r\n // and also close when focus changes to outside the picker (eg. tabbing between controls)\r\n .on('focusin.daterangepicker', this._outsideClickProxy);\r\n\r\n // Reposition the picker if the window is resized while it's open\r\n $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));\r\n\r\n this.oldStartDate = this.startDate.clone();\r\n this.oldEndDate = this.endDate.clone();\r\n this.previousRightTime = this.endDate.clone();\r\n\r\n this.updateView();\r\n this.container.show();\r\n this.move();\r\n this.element.trigger('show.daterangepicker', this);\r\n this.isShowing = true;\r\n },\r\n\r\n hide: function(e) {\r\n if (!this.isShowing) return;\r\n\r\n //incomplete date selection, revert to last values\r\n if (!this.endDate) {\r\n this.startDate = this.oldStartDate.clone();\r\n this.endDate = this.oldEndDate.clone();\r\n }\r\n\r\n //if a new date range was selected, invoke the user callback function\r\n if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))\r\n this.callback(this.startDate.clone(), this.endDate.clone(), this.chosenLabel);\r\n\r\n //if picker is attached to a text input, update it\r\n this.updateElement();\r\n\r\n $(document).off('.daterangepicker');\r\n $(window).off('.daterangepicker');\r\n this.container.hide();\r\n this.element.trigger('hide.daterangepicker', this);\r\n this.isShowing = false;\r\n },\r\n\r\n toggle: function(e) {\r\n if (this.isShowing) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n },\r\n\r\n outsideClick: function(e) {\r\n var target = $(e.target);\r\n // if the page is clicked anywhere except within the daterangerpicker/button\r\n // itself then call this.hide()\r\n if (\r\n // ie modal dialog fix\r\n e.type == \"focusin\" ||\r\n target.closest(this.element).length ||\r\n target.closest(this.container).length ||\r\n target.closest('.calendar-table').length\r\n ) return;\r\n this.hide();\r\n this.element.trigger('outsideClick.daterangepicker', this);\r\n },\r\n\r\n showCalendars: function() {\r\n this.container.addClass('show-calendar');\r\n this.move();\r\n this.element.trigger('showCalendar.daterangepicker', this);\r\n },\r\n\r\n hideCalendars: function() {\r\n this.container.removeClass('show-calendar');\r\n this.element.trigger('hideCalendar.daterangepicker', this);\r\n },\r\n\r\n clickRange: function(e) {\r\n var label = e.target.getAttribute('data-range-key');\r\n this.chosenLabel = label;\r\n if (label == this.locale.customRangeLabel) {\r\n this.showCalendars();\r\n } else {\r\n var dates = this.ranges[label];\r\n this.startDate = dates[0];\r\n this.endDate = dates[1];\r\n\r\n if (!this.timePicker) {\r\n this.startDate.startOf('day');\r\n this.endDate.endOf('day');\r\n }\r\n\r\n if (!this.alwaysShowCalendars)\r\n this.hideCalendars();\r\n this.clickApply();\r\n }\r\n },\r\n\r\n clickPrev: function(e) {\r\n var cal = $(e.target).parents('.drp-calendar');\r\n if (cal.hasClass('left')) {\r\n this.leftCalendar.month.subtract(1, 'month');\r\n if (this.linkedCalendars)\r\n this.rightCalendar.month.subtract(1, 'month');\r\n } else {\r\n this.rightCalendar.month.subtract(1, 'month');\r\n }\r\n this.updateCalendars();\r\n },\r\n\r\n clickNext: function(e) {\r\n var cal = $(e.target).parents('.drp-calendar');\r\n if (cal.hasClass('left')) {\r\n this.leftCalendar.month.add(1, 'month');\r\n } else {\r\n this.rightCalendar.month.add(1, 'month');\r\n if (this.linkedCalendars)\r\n this.leftCalendar.month.add(1, 'month');\r\n }\r\n this.updateCalendars();\r\n },\r\n\r\n hoverDate: function(e) {\r\n\r\n //ignore dates that can't be selected\r\n if (!$(e.target).hasClass('available')) return;\r\n\r\n var title = $(e.target).attr('data-title');\r\n var row = title.substr(1, 1);\r\n var col = title.substr(3, 1);\r\n var cal = $(e.target).parents('.drp-calendar');\r\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\r\n\r\n //highlight the dates between the start date and the date being hovered as a potential end date\r\n var leftCalendar = this.leftCalendar;\r\n var rightCalendar = this.rightCalendar;\r\n var startDate = this.startDate;\r\n if (!this.endDate) {\r\n this.container.find('.drp-calendar tbody td').each(function(index, el) {\r\n\r\n //skip week numbers, only look at dates\r\n if ($(el).hasClass('week')) return;\r\n\r\n var title = $(el).attr('data-title');\r\n var row = title.substr(1, 1);\r\n var col = title.substr(3, 1);\r\n var cal = $(el).parents('.drp-calendar');\r\n var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];\r\n\r\n if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) {\r\n $(el).addClass('in-range');\r\n } else {\r\n $(el).removeClass('in-range');\r\n }\r\n\r\n });\r\n }\r\n\r\n },\r\n\r\n clickDate: function(e) {\r\n\r\n if (!$(e.target).hasClass('available')) return;\r\n\r\n var title = $(e.target).attr('data-title');\r\n var row = title.substr(1, 1);\r\n var col = title.substr(3, 1);\r\n var cal = $(e.target).parents('.drp-calendar');\r\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\r\n\r\n //\r\n // this function needs to do a few things:\r\n // * alternate between selecting a start and end date for the range,\r\n // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date\r\n // * if autoapply is enabled, and an end date was chosen, apply the selection\r\n // * if single date picker mode, and time picker isn't enabled, apply the selection immediately\r\n // * if one of the inputs above the calendars was focused, cancel that manual input\r\n //\r\n\r\n if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start\r\n if (this.timePicker) {\r\n var hour = parseInt(this.container.find('.left .hourselect').val(), 10);\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.left .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n var minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\r\n if (isNaN(minute)) {\r\n minute = parseInt(this.container.find('.left .minuteselect option:last').val(), 10);\r\n }\r\n var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\r\n date = date.clone().hour(hour).minute(minute).second(second);\r\n }\r\n this.endDate = null;\r\n this.setStartDate(date.clone());\r\n } else if (!this.endDate && date.isBefore(this.startDate)) {\r\n //special case: clicking the same date for start/end,\r\n //but the time of the end date is before the start date\r\n this.setEndDate(this.startDate.clone());\r\n } else { // picking end\r\n if (this.timePicker) {\r\n var hour = parseInt(this.container.find('.right .hourselect').val(), 10);\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.right .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n var minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\r\n if (isNaN(minute)) {\r\n minute = parseInt(this.container.find('.right .minuteselect option:last').val(), 10);\r\n }\r\n var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\r\n date = date.clone().hour(hour).minute(minute).second(second);\r\n }\r\n this.setEndDate(date.clone());\r\n if (this.autoApply) {\r\n this.calculateChosenLabel();\r\n this.clickApply();\r\n }\r\n }\r\n\r\n if (this.singleDatePicker) {\r\n this.setEndDate(this.startDate);\r\n if (!this.timePicker && this.autoApply)\r\n this.clickApply();\r\n }\r\n\r\n this.updateView();\r\n\r\n //This is to cancel the blur event handler if the mouse was in one of the inputs\r\n e.stopPropagation();\r\n\r\n },\r\n\r\n calculateChosenLabel: function () {\r\n var customRange = true;\r\n var i = 0;\r\n for (var range in this.ranges) {\r\n if (this.timePicker) {\r\n var format = this.timePickerSeconds ? \"YYYY-MM-DD HH:mm:ss\" : \"YYYY-MM-DD HH:mm\";\r\n //ignore times when comparing dates if time picker seconds is not enabled\r\n if (this.startDate.format(format) == this.ranges[range][0].format(format) && this.endDate.format(format) == this.ranges[range][1].format(format)) {\r\n customRange = false;\r\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key');\r\n break;\r\n }\r\n } else {\r\n //ignore times when comparing dates if time picker is not enabled\r\n if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) {\r\n customRange = false;\r\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key');\r\n break;\r\n }\r\n }\r\n i++;\r\n }\r\n if (customRange) {\r\n if (this.showCustomRangeLabel) {\r\n this.chosenLabel = this.container.find('.ranges li:last').addClass('active').attr('data-range-key');\r\n } else {\r\n this.chosenLabel = null;\r\n }\r\n this.showCalendars();\r\n }\r\n },\r\n\r\n clickApply: function(e) {\r\n this.hide();\r\n this.element.trigger('apply.daterangepicker', this);\r\n },\r\n\r\n clickCancel: function(e) {\r\n this.startDate = this.oldStartDate;\r\n this.endDate = this.oldEndDate;\r\n this.hide();\r\n this.element.trigger('cancel.daterangepicker', this);\r\n },\r\n\r\n monthOrYearChanged: function(e) {\r\n var isLeft = $(e.target).closest('.drp-calendar').hasClass('left'),\r\n leftOrRight = isLeft ? 'left' : 'right',\r\n cal = this.container.find('.drp-calendar.'+leftOrRight);\r\n\r\n // Month must be Number for new moment versions\r\n var month = parseInt(cal.find('.monthselect').val(), 10);\r\n var year = cal.find('.yearselect').val();\r\n\r\n if (!isLeft) {\r\n if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) {\r\n month = this.startDate.month();\r\n year = this.startDate.year();\r\n }\r\n }\r\n\r\n if (this.minDate) {\r\n if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) {\r\n month = this.minDate.month();\r\n year = this.minDate.year();\r\n }\r\n }\r\n\r\n if (this.maxDate) {\r\n if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) {\r\n month = this.maxDate.month();\r\n year = this.maxDate.year();\r\n }\r\n }\r\n\r\n if (isLeft) {\r\n this.leftCalendar.month.month(month).year(year);\r\n if (this.linkedCalendars)\r\n this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');\r\n } else {\r\n this.rightCalendar.month.month(month).year(year);\r\n if (this.linkedCalendars)\r\n this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');\r\n }\r\n this.updateCalendars();\r\n },\r\n\r\n timeChanged: function(e) {\r\n\r\n var cal = $(e.target).closest('.drp-calendar'),\r\n isLeft = cal.hasClass('left');\r\n\r\n var hour = parseInt(cal.find('.hourselect').val(), 10);\r\n var minute = parseInt(cal.find('.minuteselect').val(), 10);\r\n if (isNaN(minute)) {\r\n minute = parseInt(cal.find('.minuteselect option:last').val(), 10);\r\n }\r\n var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0;\r\n\r\n if (!this.timePicker24Hour) {\r\n var ampm = cal.find('.ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n\r\n if (isLeft) {\r\n var start = this.startDate.clone();\r\n start.hour(hour);\r\n start.minute(minute);\r\n start.second(second);\r\n this.setStartDate(start);\r\n if (this.singleDatePicker) {\r\n this.endDate = this.startDate.clone();\r\n } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {\r\n this.setEndDate(start.clone());\r\n }\r\n } else if (this.endDate) {\r\n var end = this.endDate.clone();\r\n end.hour(hour);\r\n end.minute(minute);\r\n end.second(second);\r\n this.setEndDate(end);\r\n }\r\n\r\n //update the calendars so all clickable dates reflect the new time component\r\n this.updateCalendars();\r\n\r\n //update the form inputs above the calendars with the new time\r\n this.updateFormInputs();\r\n\r\n //re-render the time pickers because changing one selection can affect what's enabled in another\r\n this.renderTimePicker('left');\r\n this.renderTimePicker('right');\r\n\r\n },\r\n\r\n elementChanged: function() {\r\n if (!this.element.is('input')) return;\r\n if (!this.element.val().length) return;\r\n\r\n var dateString = this.element.val().split(this.locale.separator),\r\n start = null,\r\n end = null;\r\n\r\n if (dateString.length === 2) {\r\n start = moment(dateString[0], this.locale.format);\r\n end = moment(dateString[1], this.locale.format);\r\n }\r\n\r\n if (this.singleDatePicker || start === null || end === null) {\r\n start = moment(this.element.val(), this.locale.format);\r\n end = start;\r\n }\r\n\r\n if (!start.isValid() || !end.isValid()) return;\r\n\r\n this.setStartDate(start);\r\n this.setEndDate(end);\r\n this.updateView();\r\n },\r\n\r\n keydown: function(e) {\r\n //hide on tab or enter\r\n if ((e.keyCode === 9) || (e.keyCode === 13)) {\r\n this.hide();\r\n }\r\n\r\n //hide on esc and prevent propagation\r\n if (e.keyCode === 27) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n this.hide();\r\n }\r\n },\r\n\r\n updateElement: function() {\r\n if (this.element.is('input') && this.autoUpdateInput) {\r\n var newValue = this.startDate.format(this.locale.format);\r\n if (!this.singleDatePicker) {\r\n newValue += this.locale.separator + this.endDate.format(this.locale.format);\r\n }\r\n if (newValue !== this.element.val()) {\r\n this.element.val(newValue).trigger('change');\r\n }\r\n }\r\n },\r\n\r\n remove: function() {\r\n this.container.remove();\r\n this.element.off('.daterangepicker');\r\n this.element.removeData();\r\n }\r\n\r\n };\r\n\r\n $.fn.daterangepicker = function(options, callback) {\r\n var implementOptions = $.extend(true, {}, $.fn.daterangepicker.defaultOptions, options);\r\n this.each(function() {\r\n var el = $(this);\r\n if (el.data('daterangepicker'))\r\n el.data('daterangepicker').remove();\r\n el.data('daterangepicker', new DateRangePicker(el, implementOptions, callback));\r\n });\r\n return this;\r\n };\r\n\r\n return DateRangePicker;\r\n\r\n}));\r\n","/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n }\n else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n} (function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 =(function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n\n var id = 0;\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id with a prefix.\n // If an id already exists, it simply returns it with a prefix.\n\n var select2Id = element.getAttribute('data-select2-id');\n\n if (select2Id != null) {\n return select2Id;\n }\n\n // If element has id, use it.\n if (element.id) {\n select2Id = 'select2-data-' + element.id;\n } else {\n select2Id = 'select2-data-' + (++id).toString() +\n '-' + Utils.generateChars(4);\n }\n\n element.setAttribute('data-select2-id', select2Id);\n\n return select2Id;\n };\n\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n\n Utils.__cache[id][name] = value;\n };\n\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n Utils.copyNonInternalCssClasses = function (dest, src) {\n var classes;\n\n var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n destinationClasses = destinationClasses.filter(function (clazz) {\n // Save all Select2 classes\n return clazz.indexOf('select2-') === 0;\n });\n\n var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n sourceClasses = sourceClasses.filter(function (clazz) {\n // Only copy non-Select2 classes\n return clazz.indexOf('select2-') !== 0;\n });\n\n var replacements = destinationClasses.concat(sourceClasses);\n\n dest.setAttribute('class', replacements.join(' '));\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n ''\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option--selectable');\n\n var $selected = $options.filter('.select2-results__option--selected');\n\n // Check if there are any selected options\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = selected.map(function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option--selectable');\n\n $options.each(function () {\n var $option = $(this);\n\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n\n if ((item.element != null && item.element.selected) ||\n (item.element == null && selectedIds.indexOf(id) > -1)) {\n this.classList.add('select2-results__option--selected');\n $option.attr('aria-selected', 'true');\n } else {\n this.classList.remove('select2-results__option--selected');\n $option.attr('aria-selected', 'false');\n }\n });\n\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.classList.add('select2-results__option');\n option.classList.add('select2-results__option--selectable');\n\n var attrs = {\n 'role': 'option'\n };\n\n var matches = window.Element.prototype.matches ||\n window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector;\n\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\n (data.element == null && data.disabled)) {\n attrs['aria-disabled'] = 'true';\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--disabled');\n }\n\n if (data.id == null) {\n option.classList.remove('select2-results__option--selectable');\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--group');\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('', {\n 'class': 'select2-results__options select2-results__options--nested',\n 'role': 'none'\n });\n\n $childrenContainer.append($children);\n\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-results';\n\n this.$results.attr('id', id);\n\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n\n self.setClasses();\n self.ensureHighlightVisible();\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.hasClass('select2-results__option--selected')) {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var nextIndex = currentIndex + 1;\n\n // If we are at the last option, stay there\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:focus', function (params) {\n params.element[0].classList.add('select2-results__option--highlighted');\n params.element[0].setAttribute('aria-selected', 'true');\n });\n\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(\n self.$results.get(0).scrollHeight - self.$results.height()\n );\n\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option--selectable',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\n if ($this.hasClass('select2-results__option--selected')) {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n\n this.$results.on('mouseenter', '.select2-results__option--selectable',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted')\n .attr('aria-selected', 'false');\n\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results\n .find('.select2-results__option--highlighted');\n\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n\n return KEYS;\n});\n\nS2.define('select2/selection/base',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function BaseSelection ($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $(\n '' +\n ''\n );\n\n this._tabindex = 0;\n\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n\n this.$selection = $selection;\n\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n this.container = container;\n\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this;\n\n // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (\n (document.activeElement == self.$selection[0]) ||\n ($.contains(self.$selection[0], document.activeElement))\n ) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n\n var $select = $target.closest('.select2');\n\n var $all = $('.select2.select2-container--open');\n\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\n\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n 'jquery',\n './base',\n '../utils',\n '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection () {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--single');\n\n $selection.html(\n '' +\n '' +\n '' +\n ''\n );\n\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n\n this.$selection.find('.select2-selection__rendered')\n .attr('id', id)\n .attr('role', 'textbox')\n .attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n this.$selection.attr('aria-controls', id);\n\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on empty\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n\n $rendered.empty().append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n 'jquery',\n './base',\n '../utils'\n], function ($, BaseSelection, Utils) {\n function MultipleSelection ($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--multiple');\n\n $selection.html(\n ''\n );\n\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on(\n 'click',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n\n var data = Utils.GetData($selection[0], 'data');\n\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n }\n );\n\n this.$selection.on(\n 'keydown',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n evt.stopPropagation();\n }\n );\n };\n\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n };\n\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $(\n '
  • ' +\n '' +\n '' +\n '
  • '\n );\n\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n .attr('id') + '-choice-';\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n\n var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n if (selection.id) {\n selectionId += selection.id;\n } else {\n selectionId += Utils.generateChars(4);\n }\n\n $selection.find('.select2-selection__choice__display')\n .append(formatted)\n .attr('id', selectionId);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n var removeItem = this.options.get('translations').get('removeItem');\n\n var $remove = $selection.find('.select2-selection__choice__remove');\n\n $remove.attr('title', removeItem());\n $remove.attr('aria-label', removeItem());\n $remove.attr('aria-describedby', selectionId);\n\n Utils.StoreData($selection[0], 'data', selection);\n\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n\n $rendered.append($selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n function Placeholder (decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n\n $placeholder.html(this.display(placeholder));\n $placeholder[0].classList.add('select2-selection__placeholder');\n $placeholder[0].classList.remove('select2-selection__choice');\n\n var placeholderTitle = placeholder.title ||\n placeholder.text ||\n $placeholder.text();\n\n this.$selection.find('.select2-selection__rendered').attr(\n 'title',\n placeholderTitle\n );\n\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = (\n data.length == 1 && data[0].id != this.placeholder.id\n );\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n\n var $placeholder = this.createPlaceholder(this.placeholder);\n\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n 'jquery',\n '../keys',\n '../utils'\n], function ($, KEYS, Utils) {\n function AllowClear () { }\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error(\n 'Select2: The `allowClear` option should be used in combination ' +\n 'with the `placeholder` option.'\n );\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear',\n function (evt) {\n self._handleClear(evt);\n });\n\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear');\n\n // Ignore the event if nothing has been selected\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n\n var data = Utils.GetData($clear[0], 'data');\n\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n\n for (var d = 0; d < data.length; d++) {\n unselectData = {\n data: data[d]\n };\n\n // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n this.trigger('unselect', unselectData);\n\n // If the event was prevented, don't clear it out.\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n\n this.$element.trigger('input').trigger('change');\n\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n this.$selection.find('.select2-selection__clear').remove();\n this.$selection[0].classList.remove('select2-selection--clearable');\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var selectionId = this.$selection.find('.select2-selection__rendered')\n .attr('id');\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n\n var $remove = $(\n ''\n );\n $remove.attr('title', removeAll());\n $remove.attr('aria-label', removeAll());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($remove[0], 'data', data);\n\n this.$selection.prepend($remove);\n this.$selection[0].classList.add('select2-selection--clearable');\n };\n\n return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function Search (decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var searchLabel = this.options.get('translations').get('search');\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('textarea');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n $rendered.append(this.$searchContainer);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n var selectionId = container.id + '-container';\n\n decorated.call(this, container, $container);\n\n self.$search.attr('aria-describedby', selectionId);\n\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n\n container.on('close', function () {\n self.$search.val('');\n self.resizeSearch();\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$selection\n .find('.select2-selection__choice').last();\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n\n self.searchRemoveChoice(item);\n\n evt.preventDefault();\n }\n }\n });\n\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\n }\n });\n\n // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11;\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$selection.on(\n 'input.searchcheck',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n // Unbind the duplicated `keyup` event\n self.$selection.off('keyup.search');\n }\n );\n\n this.$selection.on(\n 'keyup.search input.search',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which;\n\n // We can freely ignore events from modifier keys\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n }\n\n // Tabbing will be handled during the `keydown` phase\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n }\n );\n };\n\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n\n this.$search.attr('placeholder', '');\n\n decorated.call(this, data);\n\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n\n var width = '100%';\n\n if (this.$search.attr('placeholder') === '') {\n var minimumWidth = this.$search.val().length + 1;\n\n width = (minimumWidth * 0.75) + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n '../utils'\n], function (Utils) {\n function SelectionCSS () { }\n\n SelectionCSS.prototype.render = function (decorated) {\n var $selection = decorated.call(this);\n\n var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n if (selectionCssClass.indexOf(':all:') !== -1) {\n selectionCssClass = selectionCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n }\n\n $selection.addClass(selectionCssClass);\n\n return $selection;\n };\n\n return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n 'jquery'\n], function ($) {\n function EventRelay () { }\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = [\n 'open', 'opening',\n 'close', 'closing',\n 'select', 'selecting',\n 'unselect', 'unselecting',\n 'clear', 'clearing'\n ];\n\n var preventableEvents = [\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n ];\n\n decorated.call(this, container, $container);\n\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if (relayEvents.indexOf(name) === -1) {\n return;\n }\n\n // The parameters should always be an object\n params = params || {};\n\n // Generate the jQuery event for the Select2 event\n var evt = $.Event('select2:' + name, {\n params: params\n });\n\n self.$element.trigger(evt);\n\n // Only handle preventable events if it was one\n if (preventableEvents.indexOf(name) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n});\n\nS2.define('select2/translation',[\n 'jquery',\n 'require'\n], function ($, require) {\n function Translation (dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n };\n\n // Static functions\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n var diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u0152': 'OE',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u0153': 'oe',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03CE': '\\u03C9',\n '\\u03C2': '\\u03C3',\n '\\u2019': '\\''\n };\n\n return diacritics;\n});\n\nS2.define('select2/data/base',[\n '../utils'\n], function (Utils) {\n function BaseAdapter ($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n\n return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n './base',\n '../utils',\n 'jquery'\n], function (BaseAdapter, Utils, $) {\n function SelectAdapter ($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var self = this;\n\n var data = Array.prototype.map.call(\n this.$element[0].querySelectorAll(':checked'),\n function (selectedElement) {\n return self.item($(selectedElement));\n }\n );\n\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if (\n data.element != null && data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = true;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if (val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if (\n data.element != null &&\n data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = false;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n\n this.container = container;\n\n container.on('select', function (params) {\n self.select(params.data);\n });\n\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n\n var $options = this.$element.children();\n\n $options.each(function () {\n if (\n this.tagName.toLowerCase() !== 'option' &&\n this.tagName.toLowerCase() !== 'optgroup'\n ) {\n return;\n }\n\n var $option = $(this);\n\n var option = self.item($option);\n\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n this.$element.append($options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n Utils.StoreData(option, 'data', normalizedData);\n\n return $(option);\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n var option = $option[0];\n\n if (option.tagName.toLowerCase() === 'option') {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if (option.tagName.toLowerCase() === 'optgroup') {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n\n var child = this.item($child);\n\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n\n Utils.StoreData($option[0], 'data', data);\n\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n\n return matcher(params, data);\n };\n\n return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n './select',\n '../utils',\n 'jquery'\n], function (SelectAdapter, Utils, $) {\n function ArrayAdapter ($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n\n var $options = [];\n\n // Filter out all items except for the one passed in the argument\n function onlyItem (item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]);\n\n // Skip items which were pre-loaded, only merge the data\n if (existingIds.indexOf(item.id) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n\n var $newOption = this.option(newData);\n\n $existingOption.replaceWith($newOption);\n\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n\n $option.append($children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n './array',\n '../utils',\n 'jquery'\n], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter ($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function (params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function (params, success, failure) {\n var $request = $.ajax(params);\n\n $request.then(success);\n $request.fail(failure);\n\n return $request;\n }\n };\n\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if (typeof this._request.abort === 'function') {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request () {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !Array.isArray(results.results)) {\n console.error(\n 'Select2: The AJAX results did not return an array in the ' +\n '`results` key of the response.'\n );\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request &&\n ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n 'jquery'\n], function ($) {\n function Tags (decorated, $element, options) {\n var tags = options.get('tags');\n\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if (Array.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper (obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n\n var checkChildren = (\n option.children != null &&\n !wrapper({\n results: option.children\n }, true)\n );\n\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', 'true');\n\n self.addOptions([$option]);\n\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n if (params.term == null) {\n return null;\n }\n\n var term = params.term.trim();\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n 'jquery'\n], function ($) {\n function Tokenizer (decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n\n this.$search = container.dropdown.$search || container.selection.$search ||\n $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect (data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data);\n\n // Check if the data object already exists as a tag\n // Select it if it doesn't\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n });\n\n // If an existing option wasn't found for it, create the option\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n self.addOptions([$option]);\n }\n\n // Select the item, now that we know there is an option for it\n select(item);\n }\n\n function select (data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if (separators.indexOf(termChar) === -1) {\n i++;\n\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data);\n\n // Reset the term to not include the tokenized portion\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n function MinimumInputLength (decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n function MaximumInputLength (decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 &&\n params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n function MaximumSelectionLength (decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind =\n function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query =\n function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected =\n function (_, successCallback) {\n var self = this;\n\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 &&\n count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Dropdown ($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $(\n '' +\n '' +\n ''\n );\n\n $dropdown.attr('dir', this.options.get('dir'));\n\n this.$dropdown = $dropdown;\n\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n 'jquery'\n], function ($) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var searchLabel = this.options.get('translations').get('search');\n\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n $rendered.prepend($search);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n });\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n\n self.$search.trigger('focus');\n\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n\n self.$search.val('');\n self.$search.trigger('blur');\n });\n\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer[0].classList.remove('select2-search--hide');\n } else {\n self.$searchContainer[0].classList.add('select2-search--hide');\n }\n }\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n 'jquery'\n], function ($) {\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n\n decorated.call(this, $element, options, dataAdapter);\n\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(\n document.documentElement,\n this.$loadingMore[0]\n );\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top +\n this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top +\n this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n\n var params = $.extend({}, {page: 1}, this.lastParams);\n\n params.page++;\n\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get('loadingMore');\n\n $option.html(message(this.lastParams));\n\n return $option;\n };\n\n return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function AttachBody (decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self._showDropdown();\n self._attachPositioningHandler(container);\n\n // Must bind after the results handlers to ensure correct sizing\n self._bindContainerResultHandlers(container);\n });\n\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n\n $dropdown[0].classList.remove('select2');\n $dropdown[0].classList.add('select2-container--open');\n\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('');\n\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n\n this.$dropdownContainer = $container;\n\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers =\n function (decorated, container) {\n\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler =\n function (decorated, container) {\n var self = this;\n\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler =\n function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n\n var isCurrentlyAbove = this.$dropdown[0].classList\n .contains('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown[0].classList\n .contains('select2-dropdown--below');\n\n var newDirection = null;\n\n var offset = this.$container.offset();\n\n offset.bottom = offset.top + this.$container.outerHeight(false);\n\n var container = {\n height: this.$container.outerHeight(false)\n };\n\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for calculating the offset\n var $offsetParent = this.$dropdownParent;\n\n // For statically positioned elements, we need to get the element\n // that is determining the offset\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if (\n $.contains(document.body, $offsetParent[0]) ||\n $offsetParent[0].isConnected\n ) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' ||\n (isCurrentlyAbove && newDirection !== 'below')) {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown[0].classList.remove('select2-dropdown--below');\n this.$dropdown[0].classList.remove('select2-dropdown--above');\n this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n this.$container[0].classList.remove('select2-container--below');\n this.$container[0].classList.remove('select2-container--above');\n this.$container[0].classList.add('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n this._resizeDropdown();\n };\n\n return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n function countResults (data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n '../utils'\n], function (Utils) {\n function SelectOnClose () { }\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event;\n\n // Don't select an item if the close event was triggered from a select or\n // unselect event\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (\n (data.element != null && data.element.selected) ||\n (data.element == null && data.selected)\n ) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n function CloseOnSelect () { }\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent;\n\n // Don't close if the control key is being held\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n '../utils'\n], function (Utils) {\n function DropdownCSS () { }\n\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n }\n\n $dropdown.addClass(dropdownCssClass);\n\n return $dropdown;\n };\n\n return DropdownCSS;\n});\n\nS2.define('select2/dropdown/tagsSearchHighlight',[\n '../utils'\n], function (Utils) {\n function TagsSearchHighlight () { }\n\n TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n var $options = this.$results\n .find(\n '.select2-results__option--selectable' +\n ':not(.select2-results__option--selected)'\n );\n\n if ($options.length > 0) {\n var $firstOption = $options.first();\n var data = Utils.GetData($firstOption[0], 'data');\n var firstElement = data.element;\n\n if (firstElement && firstElement.getAttribute) {\n if (firstElement.getAttribute('data-select2-tag') === 'true') {\n $firstOption.trigger('mouseenter');\n\n return;\n }\n }\n }\n\n decorated.call(this);\n };\n\n return TagsSearchHighlight;\n});\n\nS2.define('select2/i18n/en',[],function () {\n // English\n return {\n errorLoading: function () {\n return 'The results could not be loaded.';\n },\n inputTooLong: function (args) {\n var overChars = args.input.length - args.maximum;\n\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n\n var message = 'Please enter ' + remainingChars + ' or more characters';\n\n return message;\n },\n loadingMore: function () {\n return 'Loading more results…';\n },\n maximumSelected: function (args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching…';\n },\n removeAllItems: function () {\n return 'Remove all items';\n },\n removeItem: function () {\n return 'Remove item';\n },\n search: function() {\n return 'Search';\n }\n };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/selectionCss',\n './selection/eventRelay',\n\n './utils',\n './translation',\n './diacritics',\n\n './data/select',\n './data/array',\n './data/ajax',\n './data/tags',\n './data/tokenizer',\n './data/minimumInputLength',\n './data/maximumInputLength',\n './data/maximumSelectionLength',\n\n './dropdown',\n './dropdown/search',\n './dropdown/hidePlaceholder',\n './dropdown/infiniteScroll',\n './dropdown/attachBody',\n './dropdown/minimumResultsForSearch',\n './dropdown/selectOnClose',\n './dropdown/closeOnSelect',\n './dropdown/dropdownCss',\n './dropdown/tagsSearchHighlight',\n\n './i18n/en'\n], function ($,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, SelectionCSS, EventRelay,\n\n Utils, Translation, DIACRITICS,\n\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n DropdownCSS, TagsSearchHighlight,\n\n EnglishTranslation) {\n function Defaults () {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MinimumInputLength\n );\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumInputLength\n );\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumSelectionLength\n );\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Tokenizer\n );\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n InfiniteScroll\n );\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n HidePlaceholder\n );\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n SelectOnClose\n );\n }\n\n if (options.tags) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n TagsSearchHighlight\n );\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n MinimumResultsForSearch\n );\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n CloseOnSelect\n );\n }\n\n if (options.dropdownCssClass != null) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n DropdownCSS\n );\n }\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n AttachBody\n );\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n }\n\n // Add the placeholder mixin if a placeholder was specified\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n Placeholder\n );\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n AllowClear\n );\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionSearch\n );\n }\n\n if (options.selectionCssClass != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionCSS\n );\n }\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n EventRelay\n );\n }\n\n // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n options.language = this._resolveLanguage(options.language);\n\n // Always fall back to English since it will always be complete\n options.language.push('en');\n\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n\n options.translations = this._processTranslations(\n options.language,\n options.debug\n );\n\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics (text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher (params, data) {\n // Always return the object if there is nothing to compare\n if (params.term == null || params.term.trim() === '') {\n return data;\n }\n\n // Do a recursive check for options with children\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data);\n\n // Check each child of the option\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n\n var matches = matcher(params, child);\n\n // If there wasn't a match, remove the object in the array\n if (matches == null) {\n match.children.splice(c, 1);\n }\n }\n\n // If any children matched, return the new object\n if (match.children.length > 0) {\n return match;\n }\n\n // If there were no matching children, check just the plain object\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase();\n\n // Check if the text contains the term\n if (original.indexOf(term) > -1) {\n return data;\n }\n\n // If it doesn't contain the term, don't return anything\n return null;\n }\n\n this.defaults = {\n amdLanguageBase: './i18n/',\n autocomplete: 'off',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function (data) {\n return data;\n },\n templateResult: function (result) {\n return result.text;\n },\n templateSelection: function (selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n\n Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n\n var languages = Array.prototype.concat.call(\n this._resolveLanguage(elementLanguage),\n this._resolveLanguage(optionLanguage),\n this._resolveLanguage(defaultLanguage),\n this._resolveLanguage(parentLanguage)\n );\n\n options.language = languages;\n\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!Array.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n\n var language = languages[l];\n\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files\n if (debug && window.console && console.warn) {\n console.warn(\n 'Select2: The language file for \"' + language + '\" could ' +\n 'not be automatically loaded. A fallback will be used instead.'\n );\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n\n return defaults;\n});\n\nS2.define('select2/options',[\n 'jquery',\n './defaults',\n './utils'\n], function ($, Defaults, Utils) {\n function Options (options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n this.options.autocomplete = $e.prop('autocomplete');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n 'removed in future versions of Select2.'\n );\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\n '`data-ajax--url` and support for the old attribute will be removed' +\n ' in future versions of Select2.'\n );\n }\n\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n\n var dataset = {};\n\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n }\n\n // Pre-load all of the attributes which are prefixed with `data-`\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length);\n\n // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n var dataValue = Utils.GetData($e[0], dataName);\n\n // camelCase the attribute name to match the spec\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n // Store the data attribute contents into the dataset since\n dataset[camelDataName] = dataValue;\n }\n }\n\n // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n }\n\n // Prefer our internal data cache if it exists\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n data = Utils._convertData(data);\n\n for (var key in data) {\n if (excludedData.indexOf(key) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n});\n\nS2.define('select2/core',[\n 'jquery',\n './options',\n './utils',\n './keys'\n], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n\n this.id = this._generateId($element);\n\n options = options || {};\n\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1');\n\n // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n\n this.selection.position(this.$selection, $container);\n\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n\n this.dropdown.position(this.$dropdown, $container);\n\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n\n this.results.position(this.$results, this.$dropdown);\n\n // Bind events\n\n var self = this;\n\n // Bind the container to all of the adapters\n this._bindAdapters();\n\n // Register any DOM event handlers\n this._registerDomEvents();\n\n // Register any internal event handlers\n this._registerDataEvents();\n this._registerSelectionEvents();\n this._registerDropdownEvents();\n this._registerResultsEvents();\n this._registerEvents();\n\n // Set the initial state\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n });\n\n // Hide the original select\n $element[0].classList.add('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof(style) !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n this._observer = new window.MutationObserver(function (mutations) {\n self._syncA();\n self._syncS(mutations);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n\n this.selection.on('*', function (name, params) {\n if (nonRelayEvents.indexOf(name) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n\n this.on('open', function () {\n self.$container[0].classList.add('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container[0].classList.remove('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container[0].classList.remove('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container[0].classList.add('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container[0].classList.remove('select2-container--focus');\n });\n\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) {\n self.close(evt);\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n self.trigger('results:select', {});\n\n evt.preventDefault();\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n self.trigger('results:toggle', {});\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\n (key === KEYS.DOWN && evt.altKey)) {\n self.open();\n\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (mutations) {\n var self = this;\n\n if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n return true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n return true;\n } else if (Array.isArray(mutations)) {\n return mutations.some(function (mutation) {\n return self._isChangeMutation(mutation);\n });\n }\n\n return false;\n };\n\n Select2.prototype._syncSubtree = function (mutations) {\n var changed = this._isChangeMutation(mutations);\n var self = this;\n\n // Only re-pull the data if we think there is a change\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting',\n 'clear': 'clearing'\n };\n\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n if (this.isDisabled()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', { originalEvent : evt });\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container[0].classList.contains('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container[0].classList.contains('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container[0].classList.add('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n ' instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') &&\n arguments.length > 0 && window.console && console.warn) {\n console.warn(\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n 'should consider setting the value instead using `$element.val()`.'\n );\n }\n\n var data = [];\n\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n ' removed in later Select2 versions. Use $element.val() instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if (Array.isArray(newVal)) {\n newVal = newVal.map(function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n Utils.RemoveData(this.$container[0]);\n this.$container.remove();\n\n this._observer.disconnect();\n this._observer = null;\n\n this._syncA = null;\n this._syncS = null;\n\n this.$element.off('.select2');\n this.$element.attr('tabindex',\n Utils.GetData(this.$element[0], 'old-tabindex'));\n\n this.$element[0].classList.remove('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $(\n '' +\n '' +\n '' +\n ''\n );\n\n $container.attr('dir', this.options.get('dir'));\n\n this.$container = $container;\n\n this.$container[0].classList\n .add('select2-container--' + this.options.get('theme'));\n\n Utils.StoreData($container[0], 'element', this.$element);\n\n return $container;\n };\n\n return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults',\n './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\n\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if (thisMethods.indexOf(options) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n});\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n}());\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n}));\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export function blur(values, r) {\n if (!((r = +r) >= 0)) throw new RangeError(\"invalid r\");\n let length = values.length;\n if (!((length = Math.floor(length)) >= 0)) throw new RangeError(\"invalid length\");\n if (!length || !r) return values;\n const blur = blurf(r);\n const temp = values.slice();\n blur(values, temp, 0, length, 1);\n blur(temp, values, 0, length, 1);\n blur(values, temp, 0, length, 1);\n return values;\n}\n\nexport const blur2 = Blur2(blurf);\n\nexport const blurImage = Blur2(blurfImage);\n\nfunction Blur2(blur) {\n return function(data, rx, ry = rx) {\n if (!((rx = +rx) >= 0)) throw new RangeError(\"invalid rx\");\n if (!((ry = +ry) >= 0)) throw new RangeError(\"invalid ry\");\n let {data: values, width, height} = data;\n if (!((width = Math.floor(width)) >= 0)) throw new RangeError(\"invalid width\");\n if (!((height = Math.floor(height !== undefined ? height : values.length / width)) >= 0)) throw new RangeError(\"invalid height\");\n if (!width || !height || (!rx && !ry)) return data;\n const blurx = rx && blur(rx);\n const blury = ry && blur(ry);\n const temp = values.slice();\n if (blurx && blury) {\n blurh(blurx, temp, values, width, height);\n blurh(blurx, values, temp, width, height);\n blurh(blurx, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n blurv(blury, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n } else if (blurx) {\n blurh(blurx, values, temp, width, height);\n blurh(blurx, temp, values, width, height);\n blurh(blurx, values, temp, width, height);\n } else if (blury) {\n blurv(blury, values, temp, width, height);\n blurv(blury, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n }\n return data;\n };\n}\n\nfunction blurh(blur, T, S, w, h) {\n for (let y = 0, n = w * h; y < n;) {\n blur(T, S, y, y += w, 1);\n }\n}\n\nfunction blurv(blur, T, S, w, h) {\n for (let x = 0, n = w * h; x < w; ++x) {\n blur(T, S, x, x + n, w);\n }\n}\n\nfunction blurfImage(radius) {\n const blur = blurf(radius);\n return (T, S, start, stop, step) => {\n start <<= 2, stop <<= 2, step <<= 2;\n blur(T, S, start + 0, stop + 0, step);\n blur(T, S, start + 1, stop + 1, step);\n blur(T, S, start + 2, stop + 2, step);\n blur(T, S, start + 3, stop + 3, step);\n };\n}\n\n// Given a target array T, a source array S, sets each value T[i] to the average\n// of {S[i - r], …, S[i], …, S[i + r]}, where r = ⌊radius⌋, start <= i < stop,\n// for each i, i + step, i + 2 * step, etc., and where S[j] is clamped between\n// S[start] (inclusive) and S[stop] (exclusive). If the given radius is not an\n// integer, S[i - r - 1] and S[i + r + 1] are added to the sum, each weighted\n// according to r - ⌊radius⌋.\nfunction blurf(radius) {\n const radius0 = Math.floor(radius);\n if (radius0 === radius) return bluri(radius);\n const t = radius - radius0;\n const w = 2 * radius + 1;\n return (T, S, start, stop, step) => { // stop must be aligned!\n if (!((stop -= step) >= start)) return; // inclusive stop\n let sum = radius0 * S[start];\n const s0 = step * radius0;\n const s1 = s0 + step;\n for (let i = start, j = start + s0; i < j; i += step) {\n sum += S[Math.min(stop, i)];\n }\n for (let i = start, j = stop; i <= j; i += step) {\n sum += S[Math.min(stop, i + s0)];\n T[i] = (sum + t * (S[Math.max(start, i - s1)] + S[Math.min(stop, i + s1)])) / w;\n sum -= S[Math.max(start, i - s0)];\n }\n };\n}\n\n// Like blurf, but optimized for integer radius.\nfunction bluri(radius) {\n const w = 2 * radius + 1;\n return (T, S, start, stop, step) => { // stop must be aligned!\n if (!((stop -= step) >= start)) return; // inclusive stop\n let sum = radius * S[start];\n const s = step * radius;\n for (let i = start, j = start + s; i < j; i += step) {\n sum += S[Math.min(stop, i)];\n }\n for (let i = start, j = stop; i <= j; i += step) {\n sum += S[Math.min(stop, i + s)];\n T[i] = sum / w;\n sum -= S[Math.max(start, i - s)];\n }\n };\n}\n","export default function count(values, valueof) {\n let count = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count;\n }\n }\n }\n return count;\n}\n","function length(array) {\n return array.length | 0;\n}\n\nfunction empty(length) {\n return !(length > 0);\n}\n\nfunction arrayify(values) {\n return typeof values !== \"object\" || \"length\" in values ? values : Array.from(values);\n}\n\nfunction reducer(reduce) {\n return values => reduce(...values);\n}\n\nexport default function cross(...values) {\n const reduce = typeof values[values.length - 1] === \"function\" && reducer(values.pop());\n values = values.map(arrayify);\n const lengths = values.map(length);\n const j = values.length - 1;\n const index = new Array(j + 1).fill(0);\n const product = [];\n if (j < 0 || lengths.some(empty)) return product;\n while (true) {\n product.push(index.map((j, i) => values[i][j]));\n let i = j;\n while (++index[i] === lengths[i]) {\n if (i === 0) return reduce ? product.map(reduce) : product;\n index[i--] = 0;\n }\n }\n}\n","export default function cumsum(values, valueof) {\n var sum = 0, index = 0;\n return Float64Array.from(values, valueof === undefined\n ? v => (sum += +v || 0)\n : v => (sum += +valueof(v, index++, values) || 0));\n}","export default function variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\n","import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n const v = variance(values, valueof);\n return v ? Math.sqrt(v) : v;\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","export default function identity(x) {\n return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new InternMap();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\n}\n","export default function permute(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import ascending from \"./ascending.js\";\nimport group, {rollup} from \"./group.js\";\nimport sort from \"./sort.js\";\n\nexport default function groupSort(values, reduce, key) {\n return (reduce.length !== 2\n ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) => ascending(av, bv) || ascending(ak, bk)))\n : sort(group(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending(ak, bk))))\n .map(([key]) => key);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function constant(x) {\n return () => x;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","import {tickIncrement} from \"./ticks.js\";\n\nexport default function nice(start, stop, count) {\n let prestep;\n while (true) {\n const step = tickIncrement(start, stop, count);\n if (step === prestep || step === 0 || !isFinite(step)) {\n return [start, stop];\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n }\n prestep = step;\n }\n}\n","import count from \"../count.js\";\n\nexport default function thresholdSturges(values) {\n return Math.ceil(Math.log(count(values)) / Math.LN2) + 1;\n}\n","import {slice} from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport nice from \"./nice.js\";\nimport ticks, {tickIncrement} from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\n\nexport default function bin() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n\n var i,\n n = data.length,\n x,\n step,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds, and nice the\n // default domain accordingly.\n if (!Array.isArray(tz)) {\n const max = x1, tn = +tz;\n if (domain === extent) [x0, x1] = nice(x0, x1, tn);\n tz = ticks(x0, x1, tn);\n\n // If the domain is aligned with the first tick (which it will by\n // default), then we can use quantization rather than bisection to bin\n // values, which is substantially faster.\n if (tz[0] <= x0) step = tickIncrement(x0, x1, tn);\n\n // If the last threshold is coincident with the domain’s upper bound, the\n // last bin will be zero-width. If the default domain is used, and this\n // last threshold is coincident with the maximum input value, we can\n // extend the niced upper bound by one tick to ensure uniform bin widths;\n // otherwise, we simply remove the last threshold. Note that we don’t\n // coerce values or the domain to numbers, and thus must be careful to\n // compare order (>=) rather than strict equality (===)!\n if (tz[tz.length - 1] >= x1) {\n if (max >= x1 && domain === extent) {\n const step = tickIncrement(x0, x1, tn);\n if (isFinite(step)) {\n if (step > 0) {\n x1 = (Math.floor(x1 / step) + 1) * step;\n } else if (step < 0) {\n x1 = (Math.ceil(x1 * -step) + 1) / -step;\n }\n }\n } else {\n tz.pop();\n }\n }\n }\n\n // Remove any thresholds outside the domain.\n // Be careful not to mutate an array owned by the user!\n var m = tz.length, a = 0, b = m;\n while (tz[a] <= x0) ++a;\n while (tz[b - 1] > x1) --b;\n if (a || b < m) tz = tz.slice(a, b), m = b - a;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n if (isFinite(step)) {\n if (step > 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n }\n }\n } else if (step < 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n const j = Math.floor((x0 - x) * step);\n bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding\n }\n }\n }\n } else {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : constant(Array.isArray(_) ? slice.call(_) : _), histogram) : threshold;\n };\n\n return histogram;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function maxIndex(values, valueof) {\n let max;\n let maxIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n }\n return maxIndex;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function minIndex(values, valueof) {\n let min;\n let minIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n }\n return minIndex;\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function greatest(values, compare = ascending) {\n let max;\n let defined = false;\n if (compare.length === 1) {\n let maxValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? ascending(value, maxValue) > 0\n : ascending(value, value) === 0) {\n max = element;\n maxValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, max) > 0\n : compare(value, value) === 0) {\n max = value;\n defined = true;\n }\n }\n }\n return max;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return minIndex(values);\n if (p >= 1) return maxIndex(values);\n var n,\n i = Math.floor((n - 1) * p),\n order = (i, j) => ascendingDefined(values[i], values[j]),\n index = quickselect(Uint32Array.from(values, (_, i) => i), i, 0, n - 1, order);\n return greatest(index.subarray(0, i + 1), i => values[i]);\n}\n","import count from \"../count.js\";\nimport quantile from \"../quantile.js\";\n\nexport default function thresholdFreedmanDiaconis(values, min, max) {\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(count(values), -1 / 3)));\n}\n","import count from \"../count.js\";\nimport deviation from \"../deviation.js\";\n\nexport default function thresholdScott(values, min, max) {\n return Math.ceil((max - min) * Math.cbrt(count(values)) / (3.49 * deviation(values)));\n}\n","export default function mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n","import quantile, {quantileIndex} from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n return quantile(values, 0.5, valueof);\n}\n\nexport function medianIndex(values, valueof) {\n return quantileIndex(values, 0.5, valueof);\n}\n","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n","import {InternMap} from \"internmap\";\n\nexport default function mode(values, valueof) {\n const counts = new InternMap();\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n }\n let modeValue;\n let modeCount = 0;\n for (const [value, count] of counts) {\n if (count > modeCount) {\n modeCount = count;\n modeValue = value;\n }\n }\n return modeValue;\n}\n","export default function pairs(values, pairof = pair) {\n const pairs = [];\n let previous;\n let first = false;\n for (const value of values) {\n if (first) pairs.push(pairof(previous, value));\n previous = value;\n first = true;\n }\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import ascending from \"./ascending.js\";\nimport {ascendingDefined, compareDefined} from \"./sort.js\";\n\nexport default function rank(values, valueof = ascending) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n let V = Array.from(values);\n const R = new Float64Array(V.length);\n if (valueof.length !== 2) V = V.map(valueof), valueof = ascending;\n const compareIndex = (i, j) => valueof(V[i], V[j]);\n let k, r;\n Uint32Array\n .from(V, (_, i) => i)\n .sort(valueof === ascending ? (i, j) => ascendingDefined(V[i], V[j]) : compareDefined(compareIndex))\n .forEach((j, i) => {\n const c = compareIndex(j, k === undefined ? j : k);\n if (c >= 0) {\n if (k === undefined || c > 0) k = j, r = i;\n R[j] = r;\n } else {\n R[j] = NaN;\n }\n });\n return R;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function least(values, compare = ascending) {\n let min;\n let defined = false;\n if (compare.length === 1) {\n let minValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? ascending(value, minValue) < 0\n : ascending(value, value) === 0) {\n min = element;\n minValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, min) < 0\n : compare(value, value) === 0) {\n min = value;\n defined = true;\n }\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\nimport minIndex from \"./minIndex.js\";\n\nexport default function leastIndex(values, compare = ascending) {\n if (compare.length === 1) return minIndex(values, compare);\n let minValue;\n let min = -1;\n let index = -1;\n for (const value of values) {\n ++index;\n if (min < 0\n ? compare(value, value) === 0\n : compare(value, minValue) < 0) {\n minValue = value;\n min = index;\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\nimport maxIndex from \"./maxIndex.js\";\n\nexport default function greatestIndex(values, compare = ascending) {\n if (compare.length === 1) return maxIndex(values, compare);\n let maxValue;\n let max = -1;\n let index = -1;\n for (const value of values) {\n ++index;\n if (max < 0\n ? compare(value, value) === 0\n : compare(value, maxValue) > 0) {\n maxValue = value;\n max = index;\n }\n }\n return max;\n}\n","import leastIndex from \"./leastIndex.js\";\n\nexport default function scan(values, compare) {\n const index = leastIndex(values, compare);\n return index < 0 ? undefined : index;\n}\n","export default shuffler(Math.random);\n\nexport function shuffler(random) {\n return function shuffle(array, i0 = 0, i1 = array.length) {\n let m = i1 - (i0 = +i0);\n while (m) {\n const i = random() * m-- | 0, t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n return array;\n };\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","import min from \"./min.js\";\n\nexport default function transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose.js\";\n\nexport default function zip() {\n return transpose(arguments);\n}\n","export default function every(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n for (const value of values) {\n if (!test(value, ++index, values)) {\n return false;\n }\n }\n return true;\n}\n","export default function some(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n for (const value of values) {\n if (test(value, ++index, values)) {\n return true;\n }\n }\n return false;\n}\n","export default function filter(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n const array = [];\n let index = -1;\n for (const value of values) {\n if (test(value, ++index, values)) {\n array.push(value);\n }\n }\n return array;\n}\n","export default function map(values, mapper) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n if (typeof mapper !== \"function\") throw new TypeError(\"mapper is not a function\");\n return Array.from(values, (value, index) => mapper(value, index, values));\n}\n","export default function reduce(values, reducer, value) {\n if (typeof reducer !== \"function\") throw new TypeError(\"reducer is not a function\");\n const iterator = values[Symbol.iterator]();\n let done, next, index = -1;\n if (arguments.length < 3) {\n ({done, value} = iterator.next());\n if (done) return;\n ++index;\n }\n while (({done, value: next} = iterator.next()), !done) {\n value = reducer(value, next, ++index, values);\n }\n return value;\n}\n","export default function reverse(values) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n return Array.from(values).reverse();\n}\n","import {InternSet} from \"internmap\";\n\nexport default function difference(values, ...others) {\n values = new InternSet(values);\n for (const other of others) {\n for (const value of other) {\n values.delete(value);\n }\n }\n return values;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function disjoint(values, other) {\n const iterator = other[Symbol.iterator](), set = new InternSet();\n for (const v of values) {\n if (set.has(v)) return false;\n let value, done;\n while (({value, done} = iterator.next())) {\n if (done) break;\n if (Object.is(v, value)) return false;\n set.add(value);\n }\n }\n return true;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function intersection(values, ...others) {\n values = new InternSet(values);\n others = others.map(set);\n out: for (const value of values) {\n for (const other of others) {\n if (!other.has(value)) {\n values.delete(value);\n continue out;\n }\n }\n }\n return values;\n}\n\nfunction set(values) {\n return values instanceof InternSet ? values : new InternSet(values);\n}\n","export default function superset(values, other) {\n const iterator = values[Symbol.iterator](), set = new Set();\n for (const o of other) {\n const io = intern(o);\n if (set.has(io)) continue;\n let value, done;\n while (({value, done} = iterator.next())) {\n if (done) return false;\n const ivalue = intern(value);\n set.add(ivalue);\n if (Object.is(io, ivalue)) break;\n }\n }\n return true;\n}\n\nfunction intern(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import superset from \"./superset.js\";\n\nexport default function subset(values, other) {\n return superset(other, values);\n}\n","import {InternSet} from \"internmap\";\n\nexport default function union(...others) {\n const set = new InternSet();\n for (const other of others) {\n for (const o of other) {\n set.add(o);\n }\n }\n return set;\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n 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) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default x => () => x;\n","export default function BrushEvent(type, {\n sourceEvent,\n target,\n selection,\n mode,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n selection: {value: selection, enumerable: true, configurable: true},\n mode: {value: mode, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export var abs = Math.abs;\nexport var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\nexport var epsilon = 1e-12;\n","import {max, tau} from \"./math.js\";\n\nfunction range(i, j) {\n return Array.from({length: j - i}, (_, k) => i + k);\n}\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n return chord(false, false);\n}\n\nexport function chordTranspose() {\n return chord(false, true);\n}\n\nexport function chordDirected() {\n return chord(true, false);\n}\n\nfunction chord(directed, transpose) {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = new Array(n),\n groupIndex = range(0, n),\n chords = new Array(n * n),\n groups = new Array(n),\n k = 0, dx;\n\n matrix = Float64Array.from({length: n * n}, transpose\n ? (_, i) => matrix[i % n][i / n | 0]\n : (_, i) => matrix[i / n | 0][i % n]);\n\n // Compute the scaling factor from value to angle in [0, 2pi].\n for (let i = 0; i < n; ++i) {\n let x = 0;\n for (let j = 0; j < n; ++j) x += matrix[i * n + j] + directed * matrix[j * n + i];\n k += groupSums[i] = x;\n }\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the angles for each group and constituent chord.\n {\n let x = 0;\n if (sortGroups) groupIndex.sort((a, b) => sortGroups(groupSums[a], groupSums[b]));\n for (const i of groupIndex) {\n const x0 = x;\n if (directed) {\n const subgroupIndex = range(~n + 1, n).filter(j => j < 0 ? matrix[~j * n + i] : matrix[i * n + j]);\n if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(a < 0 ? -matrix[~a * n + i] : matrix[i * n + a], b < 0 ? -matrix[~b * n + i] : matrix[i * n + b]));\n for (const j of subgroupIndex) {\n if (j < 0) {\n const chord = chords[~j * n + i] || (chords[~j * n + i] = {source: null, target: null});\n chord.target = {index: i, startAngle: x, endAngle: x += matrix[~j * n + i] * k, value: matrix[~j * n + i]};\n } else {\n const chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n }\n }\n groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n } else {\n const subgroupIndex = range(0, n).filter(j => matrix[i * n + j] || matrix[j * n + i]);\n if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(matrix[i * n + a], matrix[i * n + b]));\n for (const j of subgroupIndex) {\n let chord;\n if (i < j) {\n chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n } else {\n chord = chords[j * n + i] || (chords[j * n + i] = {source: null, target: null});\n chord.target = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n if (i === j) chord.source = chord.target;\n }\n if (chord.source && chord.target && chord.source.value < chord.target.value) {\n const source = chord.source;\n chord.source = chord.target;\n chord.target = source;\n }\n }\n groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n }\n x += dx;\n }\n }\n\n // Remove empty chords.\n chords = Object.values(chords);\n chords.groups = groups;\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {abs, cos, epsilon, halfPi, sin} from \"./math.js\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nfunction defaultPadAngle() {\n return 0;\n}\n\nfunction defaultArrowheadRadius() {\n return 10;\n}\n\nfunction ribbon(headRadius) {\n var source = defaultSource,\n target = defaultTarget,\n sourceRadius = defaultRadius,\n targetRadius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n padAngle = defaultPadAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n s = source.apply(this, arguments),\n t = target.apply(this, arguments),\n ap = padAngle.apply(this, arguments) / 2,\n argv = slice.call(arguments),\n sr = +sourceRadius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n tr = +targetRadius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n if (ap > epsilon) {\n if (abs(sa1 - sa0) > ap * 2 + epsilon) sa1 > sa0 ? (sa0 += ap, sa1 -= ap) : (sa0 -= ap, sa1 += ap);\n else sa0 = sa1 = (sa0 + sa1) / 2;\n if (abs(ta1 - ta0) > ap * 2 + epsilon) ta1 > ta0 ? (ta0 += ap, ta1 -= ap) : (ta0 -= ap, ta1 += ap);\n else ta0 = ta1 = (ta0 + ta1) / 2;\n }\n\n context.moveTo(sr * cos(sa0), sr * sin(sa0));\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) {\n if (headRadius) {\n var hr = +headRadius.apply(this, arguments), tr2 = tr - hr, ta2 = (ta0 + ta1) / 2;\n context.quadraticCurveTo(0, 0, tr2 * cos(ta0), tr2 * sin(ta0));\n context.lineTo(tr * cos(ta2), tr * sin(ta2));\n context.lineTo(tr2 * cos(ta1), tr2 * sin(ta1));\n } else {\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n }\n context.quadraticCurveTo(0, 0, sr * cos(sa0), sr * sin(sa0));\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n if (headRadius) ribbon.headRadius = function(_) {\n return arguments.length ? (headRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : headRadius;\n };\n\n ribbon.radius = function(_) {\n return arguments.length ? (sourceRadius = targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n };\n\n ribbon.sourceRadius = function(_) {\n return arguments.length ? (sourceRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n };\n\n ribbon.targetRadius = function(_) {\n return arguments.length ? (targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : targetRadius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : padAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n\nexport default function() {\n return ribbon();\n}\n\nexport function ribbonArrow() {\n return ribbon(defaultArrowheadRadius);\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","import count from \"../count.js\";\n\nexport default function thresholdSturges(values) {\n return Math.ceil(Math.log(count(values)) / Math.LN2) + 1;\n}\n","export default function count(values, valueof) {\n let count = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count;\n }\n }\n }\n return count;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default x => () => x;\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, nice, thresholdSturges, ticks} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport ascending from \"./ascending.js\";\nimport area from \"./area.js\";\nimport constant from \"./constant.js\";\nimport contains from \"./contains.js\";\nimport noop from \"./noop.js\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n const e = extent(values, finite);\n tz = ticks(...nice(e[0], e[1], tz), tz);\n while (tz[tz.length - 1] >= e[1]) tz.pop();\n while (tz[1] < e[0]) tz.shift();\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(value => contour(values, value));\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n const v = value == null ? NaN : +value;\n if (isNaN(v)) throw new Error(`invalid value: ${value}`);\n\n var polygons = [],\n holes = [];\n\n isorings(values, v, function(ring) {\n smooth(ring, values, v);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = above(values[0], value);\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = above(values[x + 1], value);\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = above(values[y * dx + dx], value);\n t2 = above(values[y * dx], value);\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = above(values[y * dx + dx + x + 1], value);\n t3 = t2, t2 = above(values[y * dx + x + 1], value);\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = above(values[y * dx + x + 1], value);\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v1 = valid(values[yt * dx + xt]);\n if (x > 0 && x < dx && xt === x) {\n point[0] = smooth1(x, valid(values[yt * dx + xt - 1]), v1, value);\n }\n if (y > 0 && y < dy && yt === y) {\n point[1] = smooth1(y, valid(values[(yt - 1) * dx + xt]), v1, value);\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.floor(_[0]), _1 = Math.floor(_[1]);\n if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n\n// When computing the extent, ignore infinite values (as well as invalid ones).\nfunction finite(x) {\n return isFinite(x) ? x : NaN;\n}\n\n// Is the (possibly invalid) x greater than or equal to the (known valid) value?\n// Treat any invalid value as below negative infinity.\nfunction above(x, value) {\n return x == null ? false : +x >= value;\n}\n\n// During smoothing, treat any invalid value as negative infinity.\nfunction valid(v) {\n return v == null || isNaN(v = +v) ? -Infinity : v;\n}\n\nfunction smooth1(x, v0, v1, value) {\n const a = value - v0;\n const b = v1 - v0;\n const d = isFinite(a) || isFinite(b) ? a / b : Math.sign(a) / Math.sign(b);\n return isNaN(d) ? x : x + d - 0.5;\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","import {tickIncrement} from \"./ticks.js\";\n\nexport default function nice(start, stop, count) {\n let prestep;\n while (true) {\n const step = tickIncrement(start, stop, count);\n if (step === prestep || step === 0 || !isFinite(step)) {\n return [start, stop];\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n }\n prestep = step;\n }\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","export function blur(values, r) {\n if (!((r = +r) >= 0)) throw new RangeError(\"invalid r\");\n let length = values.length;\n if (!((length = Math.floor(length)) >= 0)) throw new RangeError(\"invalid length\");\n if (!length || !r) return values;\n const blur = blurf(r);\n const temp = values.slice();\n blur(values, temp, 0, length, 1);\n blur(temp, values, 0, length, 1);\n blur(values, temp, 0, length, 1);\n return values;\n}\n\nexport const blur2 = Blur2(blurf);\n\nexport const blurImage = Blur2(blurfImage);\n\nfunction Blur2(blur) {\n return function(data, rx, ry = rx) {\n if (!((rx = +rx) >= 0)) throw new RangeError(\"invalid rx\");\n if (!((ry = +ry) >= 0)) throw new RangeError(\"invalid ry\");\n let {data: values, width, height} = data;\n if (!((width = Math.floor(width)) >= 0)) throw new RangeError(\"invalid width\");\n if (!((height = Math.floor(height !== undefined ? height : values.length / width)) >= 0)) throw new RangeError(\"invalid height\");\n if (!width || !height || (!rx && !ry)) return data;\n const blurx = rx && blur(rx);\n const blury = ry && blur(ry);\n const temp = values.slice();\n if (blurx && blury) {\n blurh(blurx, temp, values, width, height);\n blurh(blurx, values, temp, width, height);\n blurh(blurx, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n blurv(blury, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n } else if (blurx) {\n blurh(blurx, values, temp, width, height);\n blurh(blurx, temp, values, width, height);\n blurh(blurx, values, temp, width, height);\n } else if (blury) {\n blurv(blury, values, temp, width, height);\n blurv(blury, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n }\n return data;\n };\n}\n\nfunction blurh(blur, T, S, w, h) {\n for (let y = 0, n = w * h; y < n;) {\n blur(T, S, y, y += w, 1);\n }\n}\n\nfunction blurv(blur, T, S, w, h) {\n for (let x = 0, n = w * h; x < w; ++x) {\n blur(T, S, x, x + n, w);\n }\n}\n\nfunction blurfImage(radius) {\n const blur = blurf(radius);\n return (T, S, start, stop, step) => {\n start <<= 2, stop <<= 2, step <<= 2;\n blur(T, S, start + 0, stop + 0, step);\n blur(T, S, start + 1, stop + 1, step);\n blur(T, S, start + 2, stop + 2, step);\n blur(T, S, start + 3, stop + 3, step);\n };\n}\n\n// Given a target array T, a source array S, sets each value T[i] to the average\n// of {S[i - r], …, S[i], …, S[i + r]}, where r = ⌊radius⌋, start <= i < stop,\n// for each i, i + step, i + 2 * step, etc., and where S[j] is clamped between\n// S[start] (inclusive) and S[stop] (exclusive). If the given radius is not an\n// integer, S[i - r - 1] and S[i + r + 1] are added to the sum, each weighted\n// according to r - ⌊radius⌋.\nfunction blurf(radius) {\n const radius0 = Math.floor(radius);\n if (radius0 === radius) return bluri(radius);\n const t = radius - radius0;\n const w = 2 * radius + 1;\n return (T, S, start, stop, step) => { // stop must be aligned!\n if (!((stop -= step) >= start)) return; // inclusive stop\n let sum = radius0 * S[start];\n const s0 = step * radius0;\n const s1 = s0 + step;\n for (let i = start, j = start + s0; i < j; i += step) {\n sum += S[Math.min(stop, i)];\n }\n for (let i = start, j = stop; i <= j; i += step) {\n sum += S[Math.min(stop, i + s0)];\n T[i] = (sum + t * (S[Math.max(start, i - s1)] + S[Math.min(stop, i + s1)])) / w;\n sum -= S[Math.max(start, i - s0)];\n }\n };\n}\n\n// Like blurf, but optimized for integer radius.\nfunction bluri(radius) {\n const w = 2 * radius + 1;\n return (T, S, start, stop, step) => { // stop must be aligned!\n if (!((stop -= step) >= start)) return; // inclusive stop\n let sum = radius * S[start];\n const s = step * radius;\n for (let i = start, j = start + s; i < j; i += step) {\n sum += S[Math.min(stop, i)];\n }\n for (let i = start, j = stop; i <= j; i += step) {\n sum += S[Math.min(stop, i + s)];\n T[i] = sum / w;\n sum -= S[Math.max(start, i - s)];\n }\n };\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","import {blur2, max, ticks} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport Contours from \"./contours.js\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function grid(data) {\n var values = new Float32Array(n * m),\n pow2k = Math.pow(2, -k),\n i = -1;\n\n for (const d of data) {\n var xi = (x(d, ++i, data) + o) * pow2k,\n yi = (y(d, i, data) + o) * pow2k,\n wi = +weight(d, i, data);\n if (wi && xi >= 0 && xi < n && yi >= 0 && yi < m) {\n var x0 = Math.floor(xi),\n y0 = Math.floor(yi),\n xt = xi - x0 - 0.5,\n yt = yi - y0 - 0.5;\n values[x0 + y0 * n] += (1 - xt) * (1 - yt) * wi;\n values[x0 + 1 + y0 * n] += xt * (1 - yt) * wi;\n values[x0 + 1 + (y0 + 1) * n] += xt * yt * wi;\n values[x0 + (y0 + 1) * n] += (1 - xt) * yt * wi;\n }\n }\n\n blur2({data: values, width: n, height: m}, r * pow2k);\n return values;\n }\n\n function density(data) {\n var values = grid(data),\n tz = threshold(values),\n pow4k = Math.pow(2, 2 * k);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = ticks(Number.MIN_VALUE, max(values) / pow4k, tz);\n }\n\n return Contours()\n .size([n, m])\n .thresholds(tz.map(d => d * pow4k))\n (values)\n .map((c, i) => (c.value = +tz[i], transform(c)));\n }\n\n density.contours = function(data) {\n var values = grid(data),\n contours = Contours().size([n, m]),\n pow4k = Math.pow(2, 2 * k),\n contour = value => {\n value = +value;\n var c = transform(contours.contour(values, value * pow4k));\n c.value = value; // preserve exact threshold value\n return c;\n };\n Object.defineProperty(contour, \"max\", {get: () => max(values) / pow4k});\n return contour;\n };\n\n function transform(geometry) {\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = +_[0], _1 = +_[1];\n if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = (Math.sqrt(4 * _ * _ + 1) - 1) / 2, resize();\n };\n\n return density;\n}\n","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nexport function estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nexport function vec(n) {\n return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = sum(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = sum(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = sum(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n if (detleft === 0 || detright === 0 || (detleft > 0) !== (detright > 0)) return det;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, scale} from './util.js';\n\nconst o3derrboundA = (7 + 56 * epsilon) * epsilon;\nconst o3derrboundB = (3 + 28 * epsilon) * epsilon;\nconst o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst at_b = vec(4);\nconst at_c = vec(4);\nconst bt_c = vec(4);\nconst bt_a = vec(4);\nconst ct_a = vec(4);\nconst ct_b = vec(4);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abt = vec(8);\nconst u = vec(4);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _16 = vec(8);\nconst _12 = vec(12);\n\nlet fin = vec(192);\nlet fin2 = vec(192);\n\nfunction finadd(finlen, alen, a) {\n finlen = sum(finlen, fin, alen, a, fin2);\n const tmp = fin; fin = fin2; fin2 = tmp;\n return finlen;\n}\n\nfunction tailinit(xtail, ytail, ax, ay, bx, by, a, b) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate;\n if (xtail === 0) {\n if (ytail === 0) {\n a[0] = 0;\n b[0] = 0;\n return 1;\n } else {\n negate = -ytail;\n s1 = negate * ax;\n c = splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n s1 = ytail * bx;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n }\n } else {\n if (ytail === 0) {\n s1 = xtail * ay;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n negate = -xtail;\n s1 = negate * by;\n c = splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n } else {\n s1 = xtail * ay;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ytail * ax;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n a[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n a[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n a[2] = _j - (u3 - bvirt) + (_i - bvirt);\n a[3] = u3;\n s1 = ytail * bx;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = xtail * by;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n b[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n b[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n b[2] = _j - (u3 - bvirt) + (_i - bvirt);\n b[3] = u3;\n return 4;\n }\n }\n}\n\nfunction tailadd(finlen, a, b, k, z) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;\n s1 = a * b;\n c = splitter * a;\n ahi = c - (c - a);\n alo = a - ahi;\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n c = splitter * k;\n bhi = c - (c - k);\n blo = k - bhi;\n _i = s0 * k;\n c = splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * k;\n c = splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n if (z !== 0) {\n c = splitter * z;\n bhi = c - (c - z);\n blo = z - bhi;\n _i = s0 * z;\n c = splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * z;\n c = splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n }\n return finlen;\n}\n\nfunction orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {\n let finlen;\n let adxtail, bdxtail, cdxtail;\n let adytail, bdytail, cdytail;\n let adztail, bdztail, cdztail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3;\n\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n s1 = bdx * cdy;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n\n finlen = sum(\n sum(\n scale(4, bc, adz, _8), _8,\n scale(4, ca, bdz, _8b), _8b, _16), _16,\n scale(4, ab, cdz, _8), _8, fin);\n\n let det = estimate(finlen, fin);\n let errbound = o3derrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n bvirt = az - adz;\n adztail = az - (adz + bvirt) + (bvirt - dz);\n bvirt = bz - bdz;\n bdztail = bz - (bdz + bvirt) + (bvirt - dz);\n bvirt = cz - cdz;\n cdztail = cz - (cdz + bvirt) + (bvirt - dz);\n\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 &&\n adytail === 0 && bdytail === 0 && cdytail === 0 &&\n adztail === 0 && bdztail === 0 && cdztail === 0) {\n return det;\n }\n\n errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det);\n det +=\n adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) +\n bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) +\n cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);\n const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);\n const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);\n\n const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct);\n finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16);\n\n const catlen = sum(ct_len, ct_a, at_len, at_c, cat);\n finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16);\n\n const abtlen = sum(at_len, at_b, bt_len, bt_a, abt);\n finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16);\n\n if (adztail !== 0) {\n finlen = finadd(finlen, scale(4, bc, adztail, _12), _12);\n finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16);\n }\n if (bdztail !== 0) {\n finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12);\n finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16);\n }\n if (cdztail !== 0) {\n finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12);\n finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16);\n }\n\n if (adxtail !== 0) {\n if (bdytail !== 0) {\n finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);\n }\n if (cdytail !== 0) {\n finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);\n }\n }\n if (bdxtail !== 0) {\n if (cdytail !== 0) {\n finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);\n }\n if (adytail !== 0) {\n finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);\n }\n }\n if (cdxtail !== 0) {\n if (adytail !== 0) {\n finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);\n }\n if (bdytail !== 0) {\n finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);\n }\n }\n\n return fin[finlen - 1];\n}\n\nexport function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n const bdxcdy = bdx * cdy;\n const cdxbdy = cdx * bdy;\n\n const cdxady = cdx * ady;\n const adxcdy = adx * cdy;\n\n const adxbdy = adx * bdy;\n const bdxady = bdx * ady;\n\n const det =\n adz * (bdxcdy - cdxbdy) +\n bdz * (cdxady - adxcdy) +\n cdz * (adxbdy - bdxady);\n\n const permanent =\n (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) +\n (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) +\n (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);\n\n const errbound = o3derrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n\n return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);\n}\n\nexport function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n return adx * (bdy * cdz - bdz * cdy) +\n bdx * (cdy * adz - cdz * ady) +\n cdx * (ady * bdz - adz * bdy);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale} from './util.js';\n\nconst iccerrboundA = (10 + 96 * epsilon) * epsilon;\nconst iccerrboundB = (4 + 48 * epsilon) * epsilon;\nconst iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst aa = vec(4);\nconst bb = vec(4);\nconst cc = vec(4);\nconst u = vec(4);\nconst v = vec(4);\nconst axtbc = vec(8);\nconst aytbc = vec(8);\nconst bxtca = vec(8);\nconst bytca = vec(8);\nconst cxtab = vec(8);\nconst cytab = vec(8);\nconst abt = vec(8);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abtt = vec(4);\nconst bctt = vec(4);\nconst catt = vec(4);\n\nconst _8 = vec(8);\nconst _16 = vec(16);\nconst _16b = vec(16);\nconst _16c = vec(16);\nconst _32 = vec(32);\nconst _32b = vec(32);\nconst _48 = vec(48);\nconst _64 = vec(64);\n\nlet fin = vec(1152);\nlet fin2 = vec(1152);\n\nfunction finadd(finlen, a, alen) {\n finlen = sum(finlen, fin, a, alen, fin2);\n const tmp = fin; fin = fin2; fin2 = tmp;\n return finlen;\n}\n\nfunction incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {\n let finlen;\n let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;\n let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;\n let abtlen, bctlen, catlen;\n let abttlen, bcttlen, cattlen;\n let n1, n0;\n\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n\n s1 = bdx * cdy;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n\n finlen = sum(\n sum(\n sum(\n scale(scale(4, bc, adx, _8), _8, adx, _16), _16,\n scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,\n sum(\n scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16,\n scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,\n sum(\n scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16,\n scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);\n\n let det = estimate(finlen, fin);\n let errbound = iccerrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {\n return det;\n }\n\n errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det);\n det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) +\n 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx)) +\n ((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) +\n 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) +\n ((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) +\n 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));\n\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = adx * adx;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = ady * ady;\n c = splitter * ady;\n ahi = c - (c - ady);\n alo = ady - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n aa[2] = _j - (u3 - bvirt) + (_i - bvirt);\n aa[3] = u3;\n }\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = bdx * bdx;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = bdy * bdy;\n c = splitter * bdy;\n ahi = c - (c - bdy);\n alo = bdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bb[3] = u3;\n }\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = cdx * cdx;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = cdy * cdy;\n c = splitter * cdy;\n ahi = c - (c - cdy);\n alo = cdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cc[3] = u3;\n }\n\n if (adxtail !== 0) {\n axtbclen = scale(4, bc, adxtail, axtbc);\n finlen = finadd(finlen, sum_three(\n scale(axtbclen, axtbc, 2 * adx, _16), _16,\n scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b,\n scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);\n }\n if (adytail !== 0) {\n aytbclen = scale(4, bc, adytail, aytbc);\n finlen = finadd(finlen, sum_three(\n scale(aytbclen, aytbc, 2 * ady, _16), _16,\n scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b,\n scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);\n }\n if (bdxtail !== 0) {\n bxtcalen = scale(4, ca, bdxtail, bxtca);\n finlen = finadd(finlen, sum_three(\n scale(bxtcalen, bxtca, 2 * bdx, _16), _16,\n scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,\n scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);\n }\n if (bdytail !== 0) {\n bytcalen = scale(4, ca, bdytail, bytca);\n finlen = finadd(finlen, sum_three(\n scale(bytcalen, bytca, 2 * bdy, _16), _16,\n scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b,\n scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);\n }\n if (cdxtail !== 0) {\n cxtablen = scale(4, ab, cdxtail, cxtab);\n finlen = finadd(finlen, sum_three(\n scale(cxtablen, cxtab, 2 * cdx, _16), _16,\n scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b,\n scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);\n }\n if (cdytail !== 0) {\n cytablen = scale(4, ab, cdytail, cytab);\n finlen = finadd(finlen, sum_three(\n scale(cytablen, cytab, 2 * cdy, _16), _16,\n scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b,\n scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);\n }\n\n if (adxtail !== 0 || adytail !== 0) {\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = bdxtail * cdy;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * cdytail;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n s1 = cdxtail * -bdy;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * -bdy;\n bhi = c - (c - -bdy);\n blo = -bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * -bdytail;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * -bdytail;\n bhi = c - (c - -bdytail);\n blo = -bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n bctlen = sum(4, u, 4, v, bct);\n s1 = bdxtail * cdytail;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdxtail * bdytail;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bctt[3] = u3;\n bcttlen = 4;\n } else {\n bct[0] = 0;\n bctlen = 1;\n bctt[0] = 0;\n bcttlen = 1;\n }\n if (adxtail !== 0) {\n const len = scale(bctlen, bct, adxtail, _16c);\n finlen = finadd(finlen, sum(\n scale(axtbclen, axtbc, adxtail, _16), _16,\n scale(len, _16c, 2 * adx, _32), _32, _48), _48);\n\n const len2 = scale(bcttlen, bctt, adxtail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * adx, _16), _16,\n scale(len2, _8, adxtail, _16b), _16b,\n scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);\n\n if (bdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);\n }\n if (cdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);\n }\n }\n if (adytail !== 0) {\n const len = scale(bctlen, bct, adytail, _16c);\n finlen = finadd(finlen, sum(\n scale(aytbclen, aytbc, adytail, _16), _16,\n scale(len, _16c, 2 * ady, _32), _32, _48), _48);\n\n const len2 = scale(bcttlen, bctt, adytail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * ady, _16), _16,\n scale(len2, _8, adytail, _16b), _16b,\n scale(len, _16c, adytail, _32), _32, _32b, _64), _64);\n }\n }\n if (bdxtail !== 0 || bdytail !== 0) {\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = cdxtail * ady;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * adytail;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -cdy;\n n0 = -cdytail;\n s1 = adxtail * n1;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * n0;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n catlen = sum(4, u, 4, v, cat);\n s1 = cdxtail * adytail;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adxtail * cdytail;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n catt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n catt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n catt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n catt[3] = u3;\n cattlen = 4;\n } else {\n cat[0] = 0;\n catlen = 1;\n catt[0] = 0;\n cattlen = 1;\n }\n if (bdxtail !== 0) {\n const len = scale(catlen, cat, bdxtail, _16c);\n finlen = finadd(finlen, sum(\n scale(bxtcalen, bxtca, bdxtail, _16), _16,\n scale(len, _16c, 2 * bdx, _32), _32, _48), _48);\n\n const len2 = scale(cattlen, catt, bdxtail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * bdx, _16), _16,\n scale(len2, _8, bdxtail, _16b), _16b,\n scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);\n\n if (cdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);\n }\n if (adytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);\n }\n }\n if (bdytail !== 0) {\n const len = scale(catlen, cat, bdytail, _16c);\n finlen = finadd(finlen, sum(\n scale(bytcalen, bytca, bdytail, _16), _16,\n scale(len, _16c, 2 * bdy, _32), _32, _48), _48);\n\n const len2 = scale(cattlen, catt, bdytail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * bdy, _16), _16,\n scale(len2, _8, bdytail, _16b), _16b,\n scale(len, _16c, bdytail, _32), _32, _32b, _64), _64);\n }\n }\n if (cdxtail !== 0 || cdytail !== 0) {\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = adxtail * bdy;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * bdytail;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -ady;\n n0 = -adytail;\n s1 = bdxtail * n1;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * n0;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n abtlen = sum(4, u, 4, v, abt);\n s1 = adxtail * bdytail;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdxtail * adytail;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n abtt[3] = u3;\n abttlen = 4;\n } else {\n abt[0] = 0;\n abtlen = 1;\n abtt[0] = 0;\n abttlen = 1;\n }\n if (cdxtail !== 0) {\n const len = scale(abtlen, abt, cdxtail, _16c);\n finlen = finadd(finlen, sum(\n scale(cxtablen, cxtab, cdxtail, _16), _16,\n scale(len, _16c, 2 * cdx, _32), _32, _48), _48);\n\n const len2 = scale(abttlen, abtt, cdxtail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * cdx, _16), _16,\n scale(len2, _8, cdxtail, _16b), _16b,\n scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);\n\n if (adytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);\n }\n if (bdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);\n }\n }\n if (cdytail !== 0) {\n const len = scale(abtlen, abt, cdytail, _16c);\n finlen = finadd(finlen, sum(\n scale(cytablen, cytab, cdytail, _16), _16,\n scale(len, _16c, 2 * cdy, _32), _32, _48), _48);\n\n const len2 = scale(abttlen, abtt, cdytail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * cdy, _16), _16,\n scale(len2, _8, cdytail, _16b), _16b,\n scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);\n }\n }\n\n return fin[finlen - 1];\n}\n\nexport function incircle(ax, ay, bx, by, cx, cy, dx, dy) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n\n const bdxcdy = bdx * cdy;\n const cdxbdy = cdx * bdy;\n const alift = adx * adx + ady * ady;\n\n const cdxady = cdx * ady;\n const adxcdy = adx * cdy;\n const blift = bdx * bdx + bdy * bdy;\n\n const adxbdy = adx * bdy;\n const bdxady = bdx * ady;\n const clift = cdx * cdx + cdy * cdy;\n\n const det =\n alift * (bdxcdy - cdxbdy) +\n blift * (cdxady - adxcdy) +\n clift * (adxbdy - bdxady);\n\n const permanent =\n (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift +\n (Math.abs(cdxady) + Math.abs(adxcdy)) * blift +\n (Math.abs(adxbdy) + Math.abs(bdxady)) * clift;\n\n const errbound = iccerrboundA * permanent;\n\n if (det > errbound || -det > errbound) {\n return det;\n }\n return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);\n}\n\nexport function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {\n const adx = ax - dx;\n const ady = ay - dy;\n const bdx = bx - dx;\n const bdy = by - dy;\n const cdx = cx - dx;\n const cdy = cy - dy;\n\n const abdet = adx * bdy - bdx * ady;\n const bcdet = bdx * cdy - cdx * bdy;\n const cadet = cdx * ady - adx * cdy;\n const alift = adx * adx + ady * ady;\n const blift = bdx * bdx + bdy * bdy;\n const clift = cdx * cdx + cdy * cdy;\n\n return alift * bcdet + blift * cadet + clift * abdet;\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale, negate} from './util.js';\n\nconst isperrboundA = (16 + 224 * epsilon) * epsilon;\nconst isperrboundB = (5 + 72 * epsilon) * epsilon;\nconst isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;\n\nconst ab = vec(4);\nconst bc = vec(4);\nconst cd = vec(4);\nconst de = vec(4);\nconst ea = vec(4);\nconst ac = vec(4);\nconst bd = vec(4);\nconst ce = vec(4);\nconst da = vec(4);\nconst eb = vec(4);\n\nconst abc = vec(24);\nconst bcd = vec(24);\nconst cde = vec(24);\nconst dea = vec(24);\nconst eab = vec(24);\nconst abd = vec(24);\nconst bce = vec(24);\nconst cda = vec(24);\nconst deb = vec(24);\nconst eac = vec(24);\n\nconst adet = vec(1152);\nconst bdet = vec(1152);\nconst cdet = vec(1152);\nconst ddet = vec(1152);\nconst edet = vec(1152);\nconst abdet = vec(2304);\nconst cddet = vec(2304);\nconst cdedet = vec(3456);\nconst deter = vec(5760);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _8c = vec(8);\nconst _16 = vec(16);\nconst _24 = vec(24);\nconst _48 = vec(48);\nconst _48b = vec(48);\nconst _96 = vec(96);\nconst _192 = vec(192);\nconst _384x = vec(384);\nconst _384y = vec(384);\nconst _384z = vec(384);\nconst _768 = vec(768);\n\nfunction sum_three_scale(a, b, c, az, bz, cz, out) {\n return sum_three(\n scale(4, a, az, _8), _8,\n scale(4, b, bz, _8b), _8b,\n scale(4, c, cz, _8c), _8c, _16, out);\n}\n\nfunction liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {\n const len = sum(\n sum(alen, a, blen, b, _48), _48,\n negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);\n\n return sum_three(\n scale(scale(len, _96, x, _192), _192, x, _384x), _384x,\n scale(scale(len, _96, y, _192), _192, y, _384y), _384y,\n scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);\n}\n\nfunction insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n s1 = ax * by;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ay;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n s1 = bx * cy;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * by;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cx * dy;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * cy;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cd[3] = u3;\n s1 = dx * ey;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * dy;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n de[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n de[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n de[2] = _j - (u3 - bvirt) + (_i - bvirt);\n de[3] = u3;\n s1 = ex * ay;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * ey;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ea[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ea[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ea[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ea[3] = u3;\n s1 = ax * cy;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * ay;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ac[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ac[3] = u3;\n s1 = bx * dy;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * by;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bd[3] = u3;\n s1 = cx * ey;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * cy;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ce[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ce[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ce[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ce[3] = u3;\n s1 = dx * ay;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * dy;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n da[2] = _j - (u3 - bvirt) + (_i - bvirt);\n da[3] = u3;\n s1 = ex * by;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ey;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n eb[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n eb[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n eb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n eb[3] = u3;\n\n const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);\n const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);\n const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);\n const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);\n const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);\n const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);\n const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);\n const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);\n const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);\n const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);\n\n const deterlen = sum_three(\n liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,\n liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,\n sum_three(\n liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,\n liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,\n liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);\n\n return deter[deterlen - 1];\n}\n\nconst xdet = vec(96);\nconst ydet = vec(96);\nconst zdet = vec(96);\nconst fin = vec(1152);\n\nfunction liftadapt(a, b, c, az, bz, cz, x, y, z, out) {\n const len = sum_three_scale(a, b, c, az, bz, cz, _24);\n return sum_three(\n scale(scale(len, _24, x, _48), _48, x, xdet), xdet,\n scale(scale(len, _24, y, _48), _48, y, ydet), ydet,\n scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);\n}\n\nfunction insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {\n let ab3, bc3, cd3, da3, ac3, bd3;\n\n let aextail, bextail, cextail, dextail;\n let aeytail, beytail, ceytail, deytail;\n let aeztail, beztail, ceztail, deztail;\n\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;\n\n const aex = ax - ex;\n const bex = bx - ex;\n const cex = cx - ex;\n const dex = dx - ex;\n const aey = ay - ey;\n const bey = by - ey;\n const cey = cy - ey;\n const dey = dy - ey;\n const aez = az - ez;\n const bez = bz - ez;\n const cez = cz - ez;\n const dez = dz - ez;\n\n s1 = aex * bey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bex * aey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ab3 = _j + _i;\n bvirt = ab3 - _j;\n ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);\n ab[3] = ab3;\n s1 = bex * cey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * bey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bc3 = _j + _i;\n bvirt = bc3 - _j;\n bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);\n bc[3] = bc3;\n s1 = cex * dey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * cey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n cd3 = _j + _i;\n bvirt = cd3 - _j;\n cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);\n cd[3] = cd3;\n s1 = dex * aey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = aex * dey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n da3 = _j + _i;\n bvirt = da3 - _j;\n da[2] = _j - (da3 - bvirt) + (_i - bvirt);\n da[3] = da3;\n s1 = aex * cey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * aey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ac3 = _j + _i;\n bvirt = ac3 - _j;\n ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);\n ac[3] = ac3;\n s1 = bex * dey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * bey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bd3 = _j + _i;\n bvirt = bd3 - _j;\n bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);\n bd[3] = bd3;\n\n const finlen = sum(\n sum(\n negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,\n liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,\n sum(\n negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,\n liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);\n\n let det = estimate(finlen, fin);\n let errbound = isperrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - aex;\n aextail = ax - (aex + bvirt) + (bvirt - ex);\n bvirt = ay - aey;\n aeytail = ay - (aey + bvirt) + (bvirt - ey);\n bvirt = az - aez;\n aeztail = az - (aez + bvirt) + (bvirt - ez);\n bvirt = bx - bex;\n bextail = bx - (bex + bvirt) + (bvirt - ex);\n bvirt = by - bey;\n beytail = by - (bey + bvirt) + (bvirt - ey);\n bvirt = bz - bez;\n beztail = bz - (bez + bvirt) + (bvirt - ez);\n bvirt = cx - cex;\n cextail = cx - (cex + bvirt) + (bvirt - ex);\n bvirt = cy - cey;\n ceytail = cy - (cey + bvirt) + (bvirt - ey);\n bvirt = cz - cez;\n ceztail = cz - (cez + bvirt) + (bvirt - ez);\n bvirt = dx - dex;\n dextail = dx - (dex + bvirt) + (bvirt - ex);\n bvirt = dy - dey;\n deytail = dy - (dey + bvirt) + (bvirt - ey);\n bvirt = dz - dez;\n deztail = dz - (dez + bvirt) + (bvirt - ez);\n if (aextail === 0 && aeytail === 0 && aeztail === 0 &&\n bextail === 0 && beytail === 0 && beztail === 0 &&\n cextail === 0 && ceytail === 0 && ceztail === 0 &&\n dextail === 0 && deytail === 0 && deztail === 0) {\n return det;\n }\n\n errbound = isperrboundC * permanent + resulterrbound * Math.abs(det);\n\n const abeps = (aex * beytail + bey * aextail) - (aey * bextail + bex * aeytail);\n const bceps = (bex * ceytail + cey * bextail) - (bey * cextail + cex * beytail);\n const cdeps = (cex * deytail + dey * cextail) - (cey * dextail + dex * ceytail);\n const daeps = (dex * aeytail + aey * dextail) - (dey * aextail + aex * deytail);\n const aceps = (aex * ceytail + cey * aextail) - (aey * cextail + cex * aeytail);\n const bdeps = (bex * deytail + dey * bextail) - (bey * dextail + dex * beytail);\n det +=\n (((bex * bex + bey * bey + bez * bez) * ((cez * daeps + dez * aceps + aez * cdeps) +\n (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) *\n ((aez * bceps - bez * aceps + cez * abeps) + (aeztail * bc3 - beztail * ac3 + ceztail * ab3))) -\n ((aex * aex + aey * aey + aez * aez) * ((bez * cdeps - cez * bdeps + dez * bceps) +\n (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) *\n ((dez * abeps + aez * bdeps + bez * daeps) + (deztail * ab3 + aeztail * bd3 + beztail * da3)))) +\n 2 * (((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) +\n (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3)) -\n ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) +\n (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));\n\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);\n}\n\nexport function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n const aex = ax - ex;\n const bex = bx - ex;\n const cex = cx - ex;\n const dex = dx - ex;\n const aey = ay - ey;\n const bey = by - ey;\n const cey = cy - ey;\n const dey = dy - ey;\n const aez = az - ez;\n const bez = bz - ez;\n const cez = cz - ez;\n const dez = dz - ez;\n\n const aexbey = aex * bey;\n const bexaey = bex * aey;\n const ab = aexbey - bexaey;\n const bexcey = bex * cey;\n const cexbey = cex * bey;\n const bc = bexcey - cexbey;\n const cexdey = cex * dey;\n const dexcey = dex * cey;\n const cd = cexdey - dexcey;\n const dexaey = dex * aey;\n const aexdey = aex * dey;\n const da = dexaey - aexdey;\n const aexcey = aex * cey;\n const cexaey = cex * aey;\n const ac = aexcey - cexaey;\n const bexdey = bex * dey;\n const dexbey = dex * bey;\n const bd = bexdey - dexbey;\n\n const abc = aez * bc - bez * ac + cez * ab;\n const bcd = bez * cd - cez * bd + dez * bc;\n const cda = cez * da + dez * ac + aez * cd;\n const dab = dez * ab + aez * bd + bez * da;\n\n const alift = aex * aex + aey * aey + aez * aez;\n const blift = bex * bex + bey * bey + bez * bez;\n const clift = cex * cex + cey * cey + cez * cez;\n const dlift = dex * dex + dey * dey + dez * dez;\n\n const det = (clift * dab - dlift * abc) + (alift * bcd - blift * cda);\n\n const aezplus = Math.abs(aez);\n const bezplus = Math.abs(bez);\n const cezplus = Math.abs(cez);\n const dezplus = Math.abs(dez);\n const aexbeyplus = Math.abs(aexbey);\n const bexaeyplus = Math.abs(bexaey);\n const bexceyplus = Math.abs(bexcey);\n const cexbeyplus = Math.abs(cexbey);\n const cexdeyplus = Math.abs(cexdey);\n const dexceyplus = Math.abs(dexcey);\n const dexaeyplus = Math.abs(dexaey);\n const aexdeyplus = Math.abs(aexdey);\n const aexceyplus = Math.abs(aexcey);\n const cexaeyplus = Math.abs(cexaey);\n const bexdeyplus = Math.abs(bexdey);\n const dexbeyplus = Math.abs(dexbey);\n const permanent =\n ((cexdeyplus + dexceyplus) * bezplus + (dexbeyplus + bexdeyplus) * cezplus + (bexceyplus + cexbeyplus) * dezplus) * alift +\n ((dexaeyplus + aexdeyplus) * cezplus + (aexceyplus + cexaeyplus) * dezplus + (cexdeyplus + dexceyplus) * aezplus) * blift +\n ((aexbeyplus + bexaeyplus) * dezplus + (bexdeyplus + dexbeyplus) * aezplus + (dexaeyplus + aexdeyplus) * bezplus) * clift +\n ((bexceyplus + cexbeyplus) * aezplus + (cexaeyplus + aexceyplus) * bezplus + (aexbeyplus + bexaeyplus) * cezplus) * dlift;\n\n const errbound = isperrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);\n}\n\nexport function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {\n const aex = pax - pex;\n const bex = pbx - pex;\n const cex = pcx - pex;\n const dex = pdx - pex;\n const aey = pay - pey;\n const bey = pby - pey;\n const cey = pcy - pey;\n const dey = pdy - pey;\n const aez = paz - pez;\n const bez = pbz - pez;\n const cez = pcz - pez;\n const dez = pdz - pez;\n\n const ab = aex * bey - bex * aey;\n const bc = bex * cey - cex * bey;\n const cd = cex * dey - dex * cey;\n const da = dex * aey - aex * dey;\n const ac = aex * cey - cex * aey;\n const bd = bex * dey - dex * bey;\n\n const abc = aez * bc - bez * ac + cez * ab;\n const bcd = bez * cd - cez * bd + dez * bc;\n const cda = cez * da + dez * ac + aez * cd;\n const dab = dez * ab + aez * bd + bez * da;\n\n const alift = aex * aex + aey * aey + aez * aez;\n const blift = bex * bex + bey * bey + bez * bez;\n const clift = cex * cex + cey * cey + cez * cez;\n const dlift = dex * dex + dey * dey + dez * dez;\n\n return (clift * dab - dlift * abc) + (alift * bcd - blift * cda);\n}\n","\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nimport {orient2d} from 'robust-predicates';\n\nexport default class Delaunator {\n\n static from(points, getX = defaultGetX, getY = defaultGetY) {\n const n = points.length;\n const coords = new Float64Array(n * 2);\n\n for (let i = 0; i < n; i++) {\n const p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n\n return new Delaunator(coords);\n }\n\n constructor(coords) {\n const n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n this.coords = coords;\n\n // arrays that will store the triangulation graph\n const maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3);\n\n // temporary arrays for tracking the edges of the advancing convex hull\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n this._hullNext = new Uint32Array(n); // edge to next edge\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n // temporary arrays for sorting points\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n\n this.update();\n }\n\n update() {\n const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} = this;\n const n = coords.length >> 1;\n\n // populate an array of point indices; calculate input data bbox\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < n; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n this._ids[i] = i;\n }\n const cx = (minX + maxX) / 2;\n const cy = (minY + maxY) / 2;\n\n let minDist = Infinity;\n let i0, i1, i2;\n\n // pick a seed point close to the center\n for (let i = 0; i < n; i++) {\n const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist) {\n i0 = i;\n minDist = d;\n }\n }\n const i0x = coords[2 * i0];\n const i0y = coords[2 * i0 + 1];\n\n minDist = Infinity;\n\n // find the point closest to the seed\n for (let i = 0; i < n; i++) {\n if (i === i0) continue;\n const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist && d > 0) {\n i1 = i;\n minDist = d;\n }\n }\n let i1x = coords[2 * i1];\n let i1y = coords[2 * i1 + 1];\n\n let minRadius = Infinity;\n\n // find the third point which forms the smallest circumcircle with the first two\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n if (r < minRadius) {\n i2 = i;\n minRadius = r;\n }\n }\n let i2x = coords[2 * i2];\n let i2y = coords[2 * i2 + 1];\n\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (let i = 0; i < n; i++) {\n this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n }\n quicksort(this._ids, this._dists, 0, n - 1);\n const hull = new Uint32Array(n);\n let j = 0;\n for (let i = 0, d0 = -Infinity; i < n; i++) {\n const id = this._ids[i];\n if (this._dists[id] > d0) {\n hull[j++] = id;\n d0 = this._dists[id];\n }\n }\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n }\n\n // swap the order of the seed points for counter-clockwise orientation\n if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n const i = i1;\n const x = i1x;\n const y = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = i;\n i2x = x;\n i2y = y;\n }\n\n const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n\n for (let i = 0; i < n; i++) {\n this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n }\n\n // sort the points by distance from the seed triangle circumcenter\n quicksort(this._ids, this._dists, 0, n - 1);\n\n // set up the seed triangle as the starting hull\n this._hullStart = i0;\n let hullSize = 3;\n\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n\n this.trianglesLen = 0;\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n for (let k = 0, xp, yp; k < this._ids.length; k++) {\n const i = this._ids[k];\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n\n // skip near-duplicate points\n if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n xp = x;\n yp = y;\n\n // skip seed triangle points\n if (i === i0 || i === i1 || i === i2) continue;\n\n // find a visible edge on the convex hull using edge hash\n let start = 0;\n for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n start = hullHash[(key + j) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) break;\n }\n\n start = hullPrev[start];\n let e = start, q;\n while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n e = q;\n if (e === start) {\n e = -1;\n break;\n }\n }\n if (e === -1) continue; // likely a near-duplicate point; skip it\n\n // add the first triangle from the point\n let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n // recursively flip triangles from the point until they satisfy the Delaunay condition\n hullTri[i] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n hullSize++;\n\n // walk forward through the hull, adding more triangles and flipping recursively\n let n = hullNext[e];\n while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n hullTri[i] = this._legalize(t + 2);\n hullNext[n] = n; // mark as removed\n hullSize--;\n n = q;\n }\n\n // walk backward from the other side, adding more triangles and flipping\n if (e === start) {\n while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n this._legalize(t + 2);\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n hullSize--;\n e = q;\n }\n }\n\n // update the hull indices\n this._hullStart = hullPrev[i] = e;\n hullNext[e] = hullPrev[n] = i;\n hullNext[i] = n;\n\n // save the two new edges in the hash table\n hullHash[this._hashKey(x, y)] = i;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n\n this.hull = new Uint32Array(hullSize);\n for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n this.hull[i] = e;\n e = hullNext[e];\n }\n\n // trim typed triangle mesh arrays\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n }\n\n _hashKey(x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n }\n\n _legalize(a) {\n const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n let i = 0;\n let ar = 0;\n\n // recursion eliminated with a fixed-size stack\n while (true) {\n const b = halfedges[a];\n\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/ \\a\n * / || \\ / \\\n * / a||b \\ flip /___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\ /br\n * \\||/ \\ /\n * pr pr\n */\n const a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n\n if (b === -1) { // convex hull edge\n if (i === 0) break;\n a = EDGE_STACK[--i];\n continue;\n }\n\n const b0 = b - b % 3;\n const al = a0 + (a + 1) % 3;\n const bl = b0 + (b + 2) % 3;\n\n const p0 = triangles[ar];\n const pr = triangles[a];\n const pl = triangles[al];\n const p1 = triangles[bl];\n\n const illegal = inCircle(\n coords[2 * p0], coords[2 * p0 + 1],\n coords[2 * pr], coords[2 * pr + 1],\n coords[2 * pl], coords[2 * pl + 1],\n coords[2 * p1], coords[2 * p1 + 1]);\n\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n\n const hbl = halfedges[bl];\n\n // edge swapped on the other side of the hull (rare); fix the halfedge reference\n if (hbl === -1) {\n let e = this._hullStart;\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n this._link(a, hbl);\n this._link(b, halfedges[ar]);\n this._link(ar, bl);\n\n const br = b0 + (b + 1) % 3;\n\n // don't worry about hitting the cap: it can only happen on extremely degenerate input\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) break;\n a = EDGE_STACK[--i];\n }\n }\n\n return ar;\n }\n\n _link(a, b) {\n this._halfedges[a] = b;\n if (b !== -1) this._halfedges[b] = a;\n }\n\n // add a new triangle given vertex indices and adjacent half-edge ids\n _addTriangle(i0, i1, i2, a, b, c) {\n const t = this.trianglesLen;\n\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n\n this._link(t, a);\n this._link(t + 1, b);\n this._link(t + 2, c);\n\n this.trianglesLen += 3;\n\n return t;\n }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n const p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n const dx = ax - px;\n const dy = ay - py;\n const ex = bx - px;\n const ey = by - py;\n const fx = cx - px;\n const fy = cy - py;\n\n const ap = dx * dx + dy * dy;\n const bp = ex * ex + ey * ey;\n const cp = fx * fx + fy * fy;\n\n return dx * (ey * cp - bp * fy) -\n dy * (ex * cp - bp * fx) +\n ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = (ey * bl - dy * cl) * d;\n const y = (dx * cl - ex * bl) * d;\n\n return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = ax + (ey * bl - dy * cl) * d;\n const y = ay + (dx * cl - ex * bl) * d;\n\n return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (let i = left + 1; i <= right; i++) {\n const temp = ids[i];\n const tempDist = dists[temp];\n let j = i - 1;\n while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n ids[j + 1] = temp;\n }\n } else {\n const median = (left + right) >> 1;\n let i = left + 1;\n let j = right;\n swap(ids, median, i);\n if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n const temp = ids[i];\n const tempDist = dists[temp];\n while (true) {\n do i++; while (dists[ids[i]] < tempDist);\n do j--; while (dists[ids[j]] > tempDist);\n if (j < i) break;\n swap(ids, i, j);\n }\n ids[left + 1] = ids[j];\n ids[j] = temp;\n\n if (right - i + 1 >= j - left) {\n quicksort(ids, dists, i, right);\n quicksort(ids, dists, left, j - 1);\n } else {\n quicksort(ids, dists, left, j - 1);\n quicksort(ids, dists, i, right);\n }\n }\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n return p[0];\n}\nfunction defaultGetY(p) {\n return p[1];\n}\n","const epsilon = 1e-6;\n\nexport default class Path {\n constructor() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n }\n moveTo(x, y) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n }\n lineTo(x, y) {\n this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n }\n arc(x, y, r) {\n x = +x, y = +y, r = +r;\n const x0 = x + r;\n const y0 = y;\n if (r < 0) throw new Error(\"negative radius\");\n if (this._x1 === null) this._ += `M${x0},${y0}`;\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n if (!r) return;\n this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n }\n rect(x, y, w, h) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n }\n value() {\n return this._ || null;\n }\n}\n","export default class Polygon {\n constructor() {\n this._ = [];\n }\n moveTo(x, y) {\n this._.push([x, y]);\n }\n closePath() {\n this._.push(this._[0].slice());\n }\n lineTo(x, y) {\n this._.push([x, y]);\n }\n value() {\n return this._.length ? this._ : null;\n }\n}\n","import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n this.delaunay = delaunay;\n this._circumcenters = new Float64Array(delaunay.points.length * 2);\n this.vectors = new Float64Array(delaunay.points.length * 2);\n this.xmax = xmax, this.xmin = xmin;\n this.ymax = ymax, this.ymin = ymin;\n this._init();\n }\n update() {\n this.delaunay.update();\n this._init();\n return this;\n }\n _init() {\n const {delaunay: {points, hull, triangles}, vectors} = this;\n\n // Compute circumcenters.\n const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n const t1 = triangles[i] * 2;\n const t2 = triangles[i + 1] * 2;\n const t3 = triangles[i + 2] * 2;\n const x1 = points[t1];\n const y1 = points[t1 + 1];\n const x2 = points[t2];\n const y2 = points[t2 + 1];\n const x3 = points[t3];\n const y3 = points[t3 + 1];\n\n const dx = x2 - x1;\n const dy = y2 - y1;\n const ex = x3 - x1;\n const ey = y3 - y1;\n const ab = (dx * ey - dy * ex) * 2;\n\n if (Math.abs(ab) < 1e-9) {\n // degenerate case (collinear diagram)\n // almost equal points (degenerate triangle)\n // the circumcenter is at the infinity, in a\n // direction that is:\n // 1. orthogonal to the halfedge.\n let a = 1e9;\n // 2. points away from the center; since the list of triangles starts\n // in the center, the first point of the first triangle\n // will be our reference\n const r = triangles[0] * 2;\n a *= Math.sign((points[r] - x1) * ey - (points[r + 1] - y1) * ex);\n x = (x1 + x3) / 2 - a * ey;\n y = (y1 + y3) / 2 + a * ex;\n } else {\n const d = 1 / ab;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n x = x1 + (ey * bl - dy * cl) * d;\n y = y1 + (dx * cl - ex * bl) * d;\n }\n circumcenters[j] = x;\n circumcenters[j + 1] = y;\n }\n\n // Compute exterior cell rays.\n let h = hull[hull.length - 1];\n let p0, p1 = h * 4;\n let x0, x1 = points[2 * h];\n let y0, y1 = points[2 * h + 1];\n vectors.fill(0);\n for (let i = 0; i < hull.length; ++i) {\n h = hull[i];\n p0 = p1, x0 = x1, y0 = y1;\n p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n vectors[p0 + 2] = vectors[p1] = y0 - y1;\n vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n }\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n if (hull.length <= 1) return null;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = Math.floor(i / 3) * 2;\n const tj = Math.floor(j / 3) * 2;\n const xi = circumcenters[ti];\n const yi = circumcenters[ti + 1];\n const xj = circumcenters[tj];\n const yj = circumcenters[tj + 1];\n this._renderSegment(xi, yi, xj, yj, context);\n }\n let h0, h1 = hull[hull.length - 1];\n for (let i = 0; i < hull.length; ++i) {\n h0 = h1, h1 = hull[i];\n const t = Math.floor(inedges[h1] / 3) * 2;\n const x = circumcenters[t];\n const y = circumcenters[t + 1];\n const v = h0 * 4;\n const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n if (p) this._renderSegment(x, y, p[0], p[1], context);\n }\n return buffer && buffer.value();\n }\n renderBounds(context) {\n const buffer = context == null ? context = new Path : undefined;\n context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n return buffer && buffer.value();\n }\n renderCell(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const points = this._clip(i);\n if (points === null || !points.length) return;\n context.moveTo(points[0], points[1]);\n let n = points.length;\n while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n for (let i = 2; i < n; i += 2) {\n if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n context.lineTo(points[i], points[i + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n *cellPolygons() {\n const {delaunay: {points}} = this;\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const cell = this.cellPolygon(i);\n if (cell) cell.index = i, yield cell;\n }\n }\n cellPolygon(i) {\n const polygon = new Polygon;\n this.renderCell(i, polygon);\n return polygon.value();\n }\n _renderSegment(x0, y0, x1, y1, context) {\n let S;\n const c0 = this._regioncode(x0, y0);\n const c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n context.moveTo(S[0], S[1]);\n context.lineTo(S[2], S[3]);\n }\n }\n contains(i, x, y) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n return this.delaunay._step(i, x, y) === i;\n }\n *neighbors(i) {\n const ci = this._clip(i);\n if (ci) for (const j of this.delaunay.neighbors(i)) {\n const cj = this._clip(j);\n // find the common edge\n if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n if (ci[ai] == cj[aj]\n && ci[ai + 1] == cj[aj + 1]\n && ci[(ai + 2) % li] == cj[(aj + lj - 2) % lj]\n && ci[(ai + 3) % li] == cj[(aj + lj - 1) % lj]\n ) {\n yield j;\n break loop;\n }\n }\n }\n }\n }\n _cell(i) {\n const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n const e0 = inedges[i];\n if (e0 === -1) return null; // coincident point\n const points = [];\n let e = e0;\n do {\n const t = Math.floor(e / 3);\n points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n } while (e !== e0 && e !== -1);\n return points;\n }\n _clip(i) {\n // degenerate case (1 valid point: return the box)\n if (i === 0 && this.delaunay.hull.length === 1) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n const points = this._cell(i);\n if (points === null) return null;\n const {vectors: V} = this;\n const v = i * 4;\n return V[v] || V[v + 1]\n ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n : this._clipFinite(i, points);\n }\n _clipFinite(i, points) {\n const n = points.length;\n let P = null;\n let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n let c0, c1 = this._regioncode(x1, y1);\n let e0, e1 = 0;\n for (let j = 0; j < n; j += 2) {\n x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n c0 = c1, c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n e0 = e1, e1 = 0;\n if (P) P.push(x1, y1);\n else P = [x1, y1];\n } else {\n let S, sx0, sy0, sx1, sy1;\n if (c0 === 0) {\n if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n [sx0, sy0, sx1, sy1] = S;\n } else {\n if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n [sx1, sy1, sx0, sy0] = S;\n e0 = e1, e1 = this._edgecode(sx0, sy0);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx0, sy0);\n else P = [sx0, sy0];\n }\n e0 = e1, e1 = this._edgecode(sx1, sy1);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx1, sy1);\n else P = [sx1, sy1];\n }\n }\n if (P) {\n e0 = e1, e1 = this._edgecode(P[0], P[1]);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n return P;\n }\n _clipSegment(x0, y0, x1, y1, c0, c1) {\n while (true) {\n if (c0 === 0 && c1 === 0) return [x0, y0, x1, y1];\n if (c0 & c1) return null;\n let x, y, c = c0 || c1;\n if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n }\n }\n _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n let P = Array.from(points), p;\n if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n if (P = this._clipFinite(i, P)) {\n for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n }\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n }\n return P;\n }\n _edge(i, e0, e1, P, j) {\n while (e0 !== e1) {\n let x, y;\n switch (e0) {\n case 0b0101: e0 = 0b0100; continue; // top-left\n case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n case 0b0110: e0 = 0b0010; continue; // top-right\n case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n case 0b1010: e0 = 0b1000; continue; // bottom-right\n case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n case 0b1001: e0 = 0b0001; continue; // bottom-left\n case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n }\n // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n // undefined, the conditional statement will be executed.\n if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n P.splice(j, 0, x, y), j += 2;\n }\n }\n if (P.length > 4) {\n for (let i = 0; i < P.length; i+= 2) {\n const j = (i + 2) % P.length, k = (i + 4) % P.length;\n if (P[i] === P[j] && P[j] === P[k]\n || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1])\n P.splice(j, 2), i -= 2;\n }\n }\n return j;\n }\n _project(x0, y0, vx, vy) {\n let t = Infinity, c, x, y;\n if (vy < 0) { // top\n if (y0 <= this.ymin) return null;\n if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n } else if (vy > 0) { // bottom\n if (y0 >= this.ymax) return null;\n if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n }\n if (vx > 0) { // right\n if (x0 >= this.xmax) return null;\n if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n } else if (vx < 0) { // left\n if (x0 <= this.xmin) return null;\n if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n }\n return [x, y];\n }\n _edgecode(x, y) {\n return (x === this.xmin ? 0b0001\n : x === this.xmax ? 0b0010 : 0b0000)\n | (y === this.ymin ? 0b0100\n : y === this.ymax ? 0b1000 : 0b0000);\n }\n _regioncode(x, y) {\n return (x < this.xmin ? 0b0001\n : x > this.xmax ? 0b0010 : 0b0000)\n | (y < this.ymin ? 0b0100\n : y > this.ymax ? 0b1000 : 0b0000);\n }\n}\n","import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n return p[0];\n}\n\nfunction pointY(p) {\n return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n const {triangles, coords} = d;\n for (let i = 0; i < triangles.length; i += 3) {\n const a = 2 * triangles[i],\n b = 2 * triangles[i + 1],\n c = 2 * triangles[i + 2],\n cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n if (cross > 1e-10) return false;\n }\n return true;\n}\n\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n static from(points, fx = pointX, fy = pointY, that) {\n return new Delaunay(\"length\" in points\n ? flatArray(points, fx, fy, that)\n : Float64Array.from(flatIterable(points, fx, fy, that)));\n }\n constructor(points) {\n this._delaunator = new Delaunator(points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = this._delaunator.coords;\n this._init();\n }\n update() {\n this._delaunator.update();\n this._init();\n return this;\n }\n _init() {\n const d = this._delaunator, points = this.points;\n\n // check for collinear\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n this._delaunator = new Delaunator(points);\n } else {\n delete this.collinear;\n }\n\n const halfedges = this.halfedges = this._delaunator.halfedges;\n const hull = this.hull = this._delaunator.hull;\n const triangles = this.triangles = this._delaunator.triangles;\n const inedges = this.inedges.fill(-1);\n const hullIndex = this._hullIndex.fill(-1);\n\n // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n for (let e = 0, n = halfedges.length; e < n; ++e) {\n const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n }\n for (let i = 0, n = hull.length; i < n; ++i) {\n hullIndex[hull[i]] = i;\n }\n\n // degenerate case: 1 or 2 (distinct) points\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n inedges[hull[0]] = 1;\n if (hull.length === 2) {\n inedges[hull[1]] = 0;\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n }\n }\n }\n voronoi(bounds) {\n return new Voronoi(this, bounds);\n }\n *neighbors(i) {\n const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n // degenerate case with several collinear points\n if (collinear) {\n const l = collinear.indexOf(i);\n if (l > 0) yield collinear[l - 1];\n if (l < collinear.length - 1) yield collinear[l + 1];\n return;\n }\n\n const e0 = inedges[i];\n if (e0 === -1) return; // coincident point\n let e = e0, p0 = -1;\n do {\n yield p0 = triangles[e];\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) return; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n const p = hull[(_hullIndex[i] + 1) % hull.length];\n if (p !== p0) yield p;\n return;\n }\n } while (e !== e0);\n }\n find(x, y, i = 0) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n const i0 = i;\n let c;\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n return c;\n }\n _step(i, x, y) {\n const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n let c = i;\n let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n const e0 = inedges[i];\n let e = e0;\n do {\n let t = triangles[e];\n const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n if (dt < dc) dc = dt, c = t;\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n e = hull[(_hullIndex[i] + 1) % hull.length];\n if (e !== t) {\n if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n }\n break;\n }\n } while (e !== e0);\n return c;\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, halfedges, triangles} = this;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = triangles[i] * 2;\n const tj = triangles[j] * 2;\n context.moveTo(points[ti], points[ti + 1]);\n context.lineTo(points[tj], points[tj + 1]);\n }\n this.renderHull(context);\n return buffer && buffer.value();\n }\n renderPoints(context, r) {\n if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n r = r == undefined ? 2 : +r;\n const buffer = context == null ? context = new Path : undefined;\n const {points} = this;\n for (let i = 0, n = points.length; i < n; i += 2) {\n const x = points[i], y = points[i + 1];\n context.moveTo(x + r, y);\n context.arc(x, y, r, 0, tau);\n }\n return buffer && buffer.value();\n }\n renderHull(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {hull, points} = this;\n const h = hull[0] * 2, n = hull.length;\n context.moveTo(points[h], points[h + 1]);\n for (let i = 1; i < n; ++i) {\n const h = 2 * hull[i];\n context.lineTo(points[h], points[h + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n hullPolygon() {\n const polygon = new Polygon;\n this.renderHull(polygon);\n return polygon.value();\n }\n renderTriangle(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, triangles} = this;\n const t0 = triangles[i *= 3] * 2;\n const t1 = triangles[i + 1] * 2;\n const t2 = triangles[i + 2] * 2;\n context.moveTo(points[t0], points[t0 + 1]);\n context.lineTo(points[t1], points[t1 + 1]);\n context.lineTo(points[t2], points[t2 + 1]);\n context.closePath();\n return buffer && buffer.value();\n }\n *trianglePolygons() {\n const {triangles} = this;\n for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n yield this.trianglePolygon(i);\n }\n }\n trianglePolygon(i) {\n const polygon = new Polygon;\n this.renderTriangle(i, polygon);\n return polygon.value();\n }\n}\n\nfunction flatArray(points, fx, fy, that) {\n const n = points.length;\n const array = new Float64Array(n * 2);\n for (let i = 0; i < n; ++i) {\n const p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n let i = 0;\n for (const p of points) {\n yield fx.call(that, p, i, points);\n yield fy.call(that, p, i, points);\n ++i;\n }\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nconst fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","export const linear = t => +t;\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n 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;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return (input, init) => text(input, init)\n .then(text => (new DOMParser).parseFromString(text, type));\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import {Adder} from \"d3-array\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum = new Adder();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum = new Adder();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {Adder} from \"d3-array\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum,\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum = new Adder();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import {Adder} from \"d3-array\";\nimport {asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = hypot(cx, cy, cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2.add(v * cx);\n Y2.add(v * cy);\n Z2.add(v * cz);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 = 0;\n X2 = new Adder();\n Y2 = new Adder();\n Z2 = new Adder();\n stream(object, centroidStream);\n\n var x = +X2,\n y = +Y2,\n z = +Z2,\n m = hypot(x, y, z);\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = hypot(x, y, z);\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n lambda += deltaLambda;\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new Adder();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","import {Adder} from \"d3-array\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum,\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum = new Adder();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","export default x => x;\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nexport default class PathString {\n constructor(digits) {\n this._append = digits == null ? append : appendRound(digits);\n this._radius = 4.5;\n this._ = \"\";\n }\n pointRadius(_) {\n this._radius = +_;\n return this;\n }\n polygonStart() {\n this._line = 0;\n }\n polygonEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line === 0) this._ += \"Z\";\n this._point = NaN;\n }\n point(x, y) {\n switch (this._point) {\n case 0: {\n this._append`M${x},${y}`;\n this._point = 1;\n break;\n }\n case 1: {\n this._append`L${x},${y}`;\n break;\n }\n default: {\n this._append`M${x},${y}`;\n if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n const r = this._radius;\n const s = this._;\n this._ = \"\"; // stash the old string so we can cache the circle path fragment\n this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n cacheRadius = r;\n cacheAppend = this._append;\n cacheCircle = this._;\n this._ = s;\n }\n this._ += cacheCircle;\n break;\n }\n }\n }\n result() {\n const result = this._;\n this._ = \"\";\n return result.length ? result : null;\n }\n}\n\nfunction append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n const d = Math.floor(digits);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`);\n if (d > 15) return append;\n if (d !== cacheDigits) {\n const k = 10 ** d;\n cacheDigits = d;\n cacheAppend = function append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n }\n return cacheAppend;\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n let digits = 3,\n pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n return path;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n path.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) digits = null;\n else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n if (context === null) contextStream = new PathString(digits);\n return path;\n };\n\n return path.projection(projection).digits(digits).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0)\n l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0)\n l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {shuffle} from \"../array.js\";\nimport lcg from \"../lcg.js\";\n\nexport default function(circles) {\n return packEncloseRandom(circles, lcg());\n}\n\nexport function packEncloseRandom(circles, random) {\n var i = 0, n = (circles = shuffle(Array.from(circles), random)).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","export default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array, random) {\n let m = array.length,\n t,\n i;\n\n while (m) {\n i = random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import array from \"../array.js\";\nimport lcg from \"../lcg.js\";\nimport {packEncloseRandom} from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packSiblingsRandom(circles, random) {\n if (!(n = (circles = array(circles)).length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = packEncloseRandom(a, random);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packSiblingsRandom(circles, lcg());\n return circles;\n}\n","import {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\nimport lcg from \"../lcg.js\";\nimport {packSiblingsRandom} from \"./siblings.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n const random = lcg();\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildrenRandom(padding, 0.5, random))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildrenRandom(constantZero, 1, random))\n .eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildrenRandom(padding, k, random) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packSiblingsRandom(children, random);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {optional} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n ambiguous = {},\n imputed = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId,\n path;\n\n function stratify(data) {\n var nodes = Array.from(data),\n currentId = id,\n currentParentId = parentId,\n n,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map;\n\n if (path != null) {\n const I = nodes.map((d, i) => normalize(path(d, i, data)));\n const P = I.map(parentof);\n const S = new Set(I).add(\"\");\n for (const i of P) {\n if (!S.has(i)) {\n S.add(i);\n I.push(i);\n P.push(parentof(i));\n nodes.push(imputed);\n }\n }\n currentId = (_, i) => I[i];\n currentParentId = (_, i) => P[i];\n }\n\n for (i = 0, n = nodes.length; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n\n // When imputing internal nodes, only introduce roots if needed.\n // Then replace the imputed marker data with null.\n if (path != null) {\n while (root.data === imputed && root.children.length === 1) {\n root = root.children[0], --n;\n }\n for (let i = nodes.length - 1; i >= 0; --i) {\n node = nodes[i];\n if (node.data !== imputed) break;\n node.data = null;\n }\n }\n\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = optional(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = optional(x), stratify) : parentId;\n };\n\n stratify.path = function(x) {\n return arguments.length ? (path = optional(x), stratify) : path;\n };\n\n return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n path = `${path}`;\n let i = path.length;\n if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n return path[0] === \"/\" ? path : `/${path}`;\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" ⇥ \"/foo\", \"/foo\" ⇥ \"/\", \"/\" ↦ \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n let i = path.length;\n if (i < 2) return \"\";\n while (--i > 1) if (slash(path, i)) break;\n return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n if (path[i] === \"/\") {\n let k = 0;\n while (i > 0 && path[--i] === \"\\\\\") ++k;\n if ((k & 1) === 0) return true;\n }\n return false;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n const n = points.length,\n indexes = [0, 1];\n let size = 2, i;\n\n for (i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.hypot(xa, ya);\n }\n\n return perimeter;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export default Math.random;\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomInt(source) {\n function randomInt(min, max) {\n if (arguments.length < 2) max = min, min = 0;\n min = Math.floor(min);\n max = Math.floor(max) - min;\n return function() {\n return Math.floor(source() * max + min);\n };\n }\n\n randomInt.source = sourceRandomInt;\n\n return randomInt;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomLogNormal(source) {\n var N = normal.source(source);\n\n function randomLogNormal() {\n var randomNormal = N.apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n if ((n = +n) <= 0) return () => 0;\n return function() {\n for (var sum = 0, i = n; i > 1; --i) sum += source();\n return sum + i * source();\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport irwinHall from \"./irwinHall.js\";\n\nexport default (function sourceRandomBates(source) {\n var I = irwinHall.source(source);\n\n function randomBates(n) {\n // use limiting distribution at n === 0\n if ((n = +n) === 0) return source;\n var randomIrwinHall = I(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log1p(-source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomPareto(source) {\n function randomPareto(alpha) {\n if ((alpha = +alpha) < 0) throw new RangeError(\"invalid alpha\");\n alpha = 1 / -alpha;\n return function() {\n return Math.pow(1 - source(), alpha);\n };\n }\n\n randomPareto.source = sourceRandomPareto;\n\n return randomPareto;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomBernoulli(source) {\n function randomBernoulli(p) {\n if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n return function() {\n return Math.floor(source() + p);\n };\n }\n\n randomBernoulli.source = sourceRandomBernoulli;\n\n return randomBernoulli;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomGeometric(source) {\n function randomGeometric(p) {\n if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n if (p === 0) return () => Infinity;\n if (p === 1) return () => 1;\n p = Math.log1p(-p);\n return function() {\n return 1 + Math.floor(Math.log1p(-source()) / p);\n };\n }\n\n randomGeometric.source = sourceRandomGeometric;\n\n return randomGeometric;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomGamma(source) {\n var randomNormal = normal.source(source)();\n\n function randomGamma(k, theta) {\n if ((k = +k) < 0) throw new RangeError(\"invalid k\");\n // degenerate distribution if k === 0\n if (k === 0) return () => 0;\n theta = theta == null ? 1 : +theta;\n // exponential distribution if k === 1\n if (k === 1) return () => -Math.log1p(-source()) * theta;\n\n var d = (k < 1 ? k + 1 : k) - 1 / 3,\n c = 1 / (3 * Math.sqrt(d)),\n multiplier = k < 1 ? () => Math.pow(source(), 1 / k) : () => 1;\n return function() {\n do {\n do {\n var x = randomNormal(),\n v = 1 + c * x;\n } while (v <= 0);\n v *= v * v;\n var u = 1 - source();\n } while (u >= 1 - 0.0331 * x * x * x * x && Math.log(u) >= 0.5 * x * x + d * (1 - v + Math.log(v)));\n return d * v * multiplier() * theta;\n };\n }\n\n randomGamma.source = sourceRandomGamma;\n\n return randomGamma;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomBeta(source) {\n var G = gamma.source(source);\n\n function randomBeta(alpha, beta) {\n var X = G(alpha),\n Y = G(beta);\n return function() {\n var x = X();\n return x === 0 ? 0 : x / (x + Y());\n };\n }\n\n randomBeta.source = sourceRandomBeta;\n\n return randomBeta;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport beta from \"./beta.js\";\nimport geometric from \"./geometric.js\";\n\nexport default (function sourceRandomBinomial(source) {\n var G = geometric.source(source),\n B = beta.source(source);\n\n function randomBinomial(n, p) {\n n = +n;\n if ((p = +p) >= 1) return () => n;\n if (p <= 0) return () => 0;\n return function() {\n var acc = 0, nn = n, pp = p;\n while (nn * pp > 16 && nn * (1 - pp) > 16) {\n var i = Math.floor((nn + 1) * pp),\n y = B(i, nn - i + 1)();\n if (y <= pp) {\n acc += i;\n nn -= i;\n pp = (pp - y) / (1 - y);\n } else {\n nn = i - 1;\n pp /= y;\n }\n }\n var sign = pp < 0.5,\n pFinal = sign ? pp : 1 - pp,\n g = G(pFinal);\n for (var s = g(), k = 0; s <= nn; ++k) s += g();\n return acc + (sign ? k : nn - k);\n };\n }\n\n randomBinomial.source = sourceRandomBinomial;\n\n return randomBinomial;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomWeibull(source) {\n function randomWeibull(k, a, b) {\n var outerFunc;\n if ((k = +k) === 0) {\n outerFunc = x => -Math.log(x);\n } else {\n k = 1 / k;\n outerFunc = x => Math.pow(x, k);\n }\n a = a == null ? 0 : +a;\n b = b == null ? 1 : +b;\n return function() {\n return a + b * outerFunc(-Math.log1p(-source()));\n };\n }\n\n randomWeibull.source = sourceRandomWeibull;\n\n return randomWeibull;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomCauchy(source) {\n function randomCauchy(a, b) {\n a = a == null ? 0 : +a;\n b = b == null ? 1 : +b;\n return function() {\n return a + b * Math.tan(Math.PI * source());\n };\n }\n\n randomCauchy.source = sourceRandomCauchy;\n\n return randomCauchy;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomLogistic(source) {\n function randomLogistic(a, b) {\n a = a == null ? 0 : +a;\n b = b == null ? 1 : +b;\n return function() {\n var u = source();\n return a + b * Math.log(u / (1 - u));\n };\n }\n\n randomLogistic.source = sourceRandomLogistic;\n\n return randomLogistic;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport binomial from \"./binomial.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomPoisson(source) {\n var G = gamma.source(source),\n B = binomial.source(source);\n\n function randomPoisson(lambda) {\n return function() {\n var acc = 0, l = lambda;\n while (l > 16) {\n var n = Math.floor(0.875 * l),\n t = G(n)();\n if (t > l) return acc + B(n - 1, l / t)();\n acc += n;\n l -= t;\n }\n for (var s = -Math.log1p(-source()), k = 0; s <= l; ++k) s -= Math.log1p(-source());\n return acc + k;\n };\n }\n\n randomPoisson.source = sourceRandomPoisson;\n\n return randomPoisson;\n})(defaultSource);\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst mul = 0x19660D;\nconst inc = 0x3C6EF35F;\nconst eps = 1 / 0x100000000;\n\nexport default function lcg(seed = Math.random()) {\n let state = (0 <= seed && seed < 1 ? seed / eps : Math.abs(seed)) | 0;\n return () => (state = mul * state + inc | 0, eps * (state >>> 0));\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return minIndex(values);\n if (p >= 1) return maxIndex(values);\n var n,\n i = Math.floor((n - 1) * p),\n order = (i, j) => ascendingDefined(values[i], values[j]),\n index = quickselect(Uint32Array.from(values, (_, i) => i), i, 0, n - 1, order);\n return greatest(index.subarray(0, i + 1), i => values[i]);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default scheme => interpolateRgbBasis(scheme[scheme.length - 1]);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import creator from \"./creator.js\";\nimport select from \"./select.js\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import pointer from \"./pointer.js\";\nimport sourceEvent from \"./sourceEvent.js\";\n\nexport default function(events, node) {\n if (events.target) { // i.e., instanceof Event, not TouchList or iterable\n events = sourceEvent(events);\n if (node === undefined) node = events.currentTarget;\n events = events.touches || [events];\n }\n return Array.from(events, event => pointer(event, node));\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {bumpX, bumpY, bumpRadial} from \"./curve/bump.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nexport function link(curve) {\n let source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null,\n output = null,\n path = withPath(link);\n\n function link() {\n let buffer;\n const argv = slice.call(arguments);\n const s = source.apply(this, argv);\n const t = target.apply(this, argv);\n if (context == null) output = curve(buffer = path());\n output.lineStart();\n argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n output.lineEnd();\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n };\n\n return link;\n}\n\nexport function linkHorizontal() {\n return link(bumpX);\n}\n\nexport function linkVertical() {\n return link(bumpY);\n}\n\nexport function linkRadial() {\n const l = link(bumpRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n const t = r / 2;\n const u = t * sqrt3;\n context.moveTo(0, r);\n context.lineTo(0, -r);\n context.moveTo(-u, -t);\n context.lineTo(u, t);\n context.moveTo(-u, t);\n context.lineTo(u, -t);\n }\n};\n","import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n draw(context, size) {\n const y = sqrt(size / tan30_2);\n const x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size) * 0.62625;\n context.moveTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.lineTo(-r, 0);\n context.closePath();\n }\n};\n","import {min, sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size - min(size / 7, 2)) * 0.87559;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n context.moveTo(0, r);\n context.lineTo(0, -r);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const w = sqrt(size);\n const x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size) * 0.4431;\n context.moveTo(r, r);\n context.lineTo(r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, r);\n context.closePath();\n }\n};\n","import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size * ka);\n const x = kx * r;\n const y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (let i = 1; i < 5; ++i) {\n const a = tau * i / 5;\n const c = cos(a);\n const s = sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const y = -sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const s = sqrt(size) * 0.6824;\n const t = s / 2;\n const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n context.moveTo(0, -s);\n context.lineTo(u, t);\n context.lineTo(-u, t);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / a);\n const x0 = r / 2, y0 = r * k;\n const x1 = x0, y1 = r * k + r;\n const x2 = -x1, y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {min, sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size - min(size / 6, 1.7)) * 0.6189;\n context.moveTo(-r, -r);\n context.lineTo(r, r);\n context.moveTo(-r, r);\n context.lineTo(r, -r);\n }\n};\n","import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n circle,\n plus,\n times,\n triangle2,\n asterisk,\n square2,\n diamond2\n];\n\nexport default function Symbol(type, size) {\n let context = null,\n path = withPath(symbol);\n\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n let buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n t._restart = t.restart;\n t.restart = function(callback, delay, time) {\n delay = +delay, time = time == null ? now() : +time;\n t._restart(function tick(elapsed) {\n elapsed += total;\n t._restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n }\n t.restart(callback, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n 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) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n 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) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n 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]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n"],"names":["this","Rails","linkClickSelector","buttonClickSelector","selector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","call","nonce","loadCSPNonce","ref","document","querySelector","content","cspNonce","expando","m","Element","prototype","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","element","getData","key","setData","value","$","Array","slice","querySelectorAll","csrfParam","csrfToken","meta","CSRFProtection","xhr","token","setRequestHeader","refreshCSRFTokens","param","forEach","input","CustomEvent","fire","preventDefault","window","event","params","evt","createEvent","initCustomEvent","bubbles","cancelable","detail","Event","result","defaultPrevented","Object","defineProperty","get","obj","name","data","dispatchEvent","stopEverything","e","target","stopPropagation","stopImmediatePropagation","delegate","eventType","handler","addEventListener","parentNode","AcceptHeaders","createXHR","prepareOptions","processResponse","text","html","xml","json","script","ajax","options","response","responseText","getResponseHeader","Math","floor","status","success","statusText","error","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","url","location","href","type","toUpperCase","indexOf","dataType","accept","done","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","match","JSON","parse","createElement","setAttribute","head","appendChild","removeChild","DOMParser","replace","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","elements","disabled","option","selected","push","checked","map","encodeURIComponent","join","formElements","form","filter","el","allowAction","handleConfirm","confirm","message","answer","callback","getAttribute","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","removeEventListener","handleMethod","formContent","link","method","action","style","display","body","click","isRemote","handleRemote","button","enctype","FormData","append","args","arguments","length","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","Error","ajaxPrefilter","originalOptions","start","_rails_loaded","setTimeout","module","exports","moment","jquery","fn","hasOwnProperty","DateRangePicker","cb","parentEl","startDate","startOf","endDate","endOf","minDate","maxDate","maxSpan","autoApply","singleDatePicker","showDropdowns","minYear","subtract","format","maxYear","add","showWeekNumbers","showISOWeekNumbers","showCustomRangeLabel","timePicker","timePicker24Hour","timePickerIncrement","timePickerSeconds","linkedCalendars","autoUpdateInput","alwaysShowCalendars","ranges","opens","hasClass","drops","buttonClasses","applyButtonClasses","cancelButtonClasses","locale","direction","localeData","longDateFormat","separator","applyLabel","cancelLabel","weekLabel","customRangeLabel","daysOfWeek","weekdaysMin","monthNames","monthsShort","firstDay","firstDayOfWeek","isShowing","leftCalendar","rightCalendar","extend","template","container","appendTo","elem","rangeHtml","addClass","isBefore","clone","isAfter","applyClass","cancelClass","dateLimit","isInvalidDate","isCustomDate","iterator","shift","end","range","is","val","split","setStartDate","setEndDate","timepicker","list","find","prepend","hide","show","on","proxy","clickPrev","clickNext","clickDate","hoverDate","monthOrYearChanged","timeChanged","clickRange","clickApply","clickCancel","elementChanged","keydown","toggle","updateElement","constructor","minute","round","updateMonthsInView","previousRightTime","updateView","renderTimePicker","prop","removeClass","updateCalendars","updateFormInputs","month","date","year","hour","second","ampm","parseInt","isNaN","renderCalendar","calculateChosenLabel","side","calendar","daysInMonth","lastDay","lastMonth","lastYear","daysInLastMonth","dayOfWeek","day","i","startDay","curDate","col","row","dateHtml","currentMonth","currentYear","inMinYear","inMaxYear","monthHtml","yearHtml","y","each","index","maxLimit","week","isoWeek","classes","isSame","Date","isoWeekday","isCustom","apply","cname","timeSelector","i_in_24","time","padded","am_html","pm_html","move","containerTop","parentOffset","top","left","parentRightEdge","width","offset","scrollTop","scrollLeft","clientWidth","outerHeight","scrollHeight","css","right","containerWidth","outerWidth","toggleClass","containerRight","containerLeft","_outsideClickProxy","outsideClick","oldStartDate","oldEndDate","trigger","chosenLabel","off","closest","showCalendars","hideCalendars","label","dates","parents","title","attr","substr","dt","customRange","isLeft","leftOrRight","cal","dateString","isValid","keyCode","newValue","remove","removeData","daterangepicker","implementOptions","defaultOptions","factory","S2","select2","amd","requirejs","require","define","undef","main","req","makeMap","handlers","defined","waiting","config","defining","hasOwn","aps","jsSuffixRegExp","hasProp","normalize","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","j","part","baseParts","starMap","nodeIdCompat","test","charAt","concat","splice","makeRequire","relName","forceSync","makeNormalize","makeLoad","depName","callDep","splitPrefix","prefix","substring","makeRelParts","makeConfig","relParts","plugin","parts","relResourceName","f","n","pr","p","id","uri","deps","cjsModule","ret","usingExports","callbackType","load","undefined","alt","cfg","_defined","_$","console","Utils","getMethods","theClass","proto","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","argCount","calledConstructor","ctr","displayName","superMethod","calledMethod","originalMethod","decoratedMethod","d","Observable","listeners","_type","invoke","len","generateChars","chars","random","toString","bind","func","context","_convertData","originalKey","keys","dataLevel","k","toLowerCase","hasScroll","$el","overflowX","overflowY","innerHeight","innerWidth","scrollWidth","escapeMarkup","markup","replaceMap","String","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","removeAttribute","copyNonInternalCssClasses","dest","src","destinationClasses","trim","clazz","sourceClasses","replacements","Results","$element","dataAdapter","render","$results","clear","empty","displayMessage","hideLoading","$message","className","hideMessages","$options","results","sort","item","$option","children","position","$dropdown","sorter","highlightFirstItem","$selected","first","ensureHighlightVisible","setClasses","self","current","selectedIds","s","classList","showLoading","loading","loadingMore","$loading","attrs","_resultId","role","$children","c","child","$child","$childrenContainer","$container","isOpen","removeAttr","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","eq","currentOffset","nextTop","nextOffset","nextBottom","mousewheel","bottom","deltaY","isAtTop","isAtBottom","height","$this","originalEvent","destroy","offsetDelta","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","which","update","_attachCloseHandler","_detachCloseHandler","activeElement","contains","$select","isEnabled","isDisabled","SingleSelection","$rendered","selectionContainer","selection","formatted","MultipleSelection","parent","$selections","selectionIdPrefix","selectionId","removeItem","$remove","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","placeholderTitle","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","searchLabel","$search","$searchContainer","_transferTabIndex","resizeSearch","_keyUpPrevented","isDefaultPrevented","$previousChoice","last","searchRemoveChoice","msie","documentMode","disableInputEvents","handleSearch","searchHadFocus","term","SelectionCSS","selectionCssClass","EventRelay","relayEvents","preventableEvents","Translation","dict","all","translation","_cache","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","selectedElement","select","tagName","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","defaults","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","q","transport","failure","$request","then","fail","_request","abort","request","isArray","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","wrapper","checkChildren","_removeOldTags","page","Tokenizer","tokenizer","dropdown","createAndSelect","tokenData","separators","termChar","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","count","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","x","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","$offsetParent","offsetParent","isConnected","minWidth","countResults","MinimumResultsForSearch","minimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","DropdownCSS","dropdownCssClass","TagsSearchHighlight","$firstOption","firstElement","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","search","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","selectionAdapter","allowClear","language","_resolveLanguage","uniqueLanguages","l","_processTranslations","debug","stripDiacritics","a","original","amdLanguageBase","autocomplete","dropdownAutoWidth","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","isPlainObject","resolvedLanguages","baseLanguage","languageData","ex","warn","set","camelCase","convertedData","Options","fromElement","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","WIDTH","styleWidth","elementWidth","getComputedStyle","_syncA","_syncS","_syncSubtree","_observer","MutationObserver","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","focus","altKey","close","_isChangeMutation","addedNodes","removedNodes","some","mutation","changed","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","disconnect","thisMethods","instanceOptions","instance","ascending","b","NaN","descending","bisector","compare1","compare2","delta","lo","hi","mid","zero","center","number","values","valueof","ascendingBisect","bisectRight","bisectLeft","bisectCenter","r","RangeError","blur","blurf","temp","blur2","Blur2","blurImage","radius","T","S","stop","step","rx","ry","blurx","blury","blurh","blurv","w","h","radius0","sum","min","max","bluri","s0","s1","array","arrayify","from","cross","reduce","reducer","pop","lengths","fill","product","cumsum","Float64Array","v","variance","mean","deviation","sqrt","extent","Adder","_partials","_n","abs","valueOf","fsum","adder","fcumsum","InternMap","Map","entries","keyof","super","defineProperties","_intern","_key","intern_get","has","intern_set","delete","intern_delete","InternSet","Set","identity","group","nest","groups","flatten","flatMap","g","flatGroup","flatRollup","rollups","rollup","unique","indexes","regroup","source","F","Symbol","TypeError","Uint32Array","compareDefined","compare","groupSort","ak","av","bk","bv","e10","e5","e2","tickSpec","power","log10","pow","factor","i1","i2","inc","ticks","reverse","tickIncrement","tickStep","nice","prestep","isFinite","ceil","thresholdSturges","log","LN2","bin","domain","threshold","histogram","xz","x0","x1","tz","tn","bins","bisect","thresholds","maxIndex","minIndex","z","exp","sd","swap","maxValue","quantile","i0","value0","subarray","quantileSorted","quantileIndex","thresholdFreedmanDiaconis","thresholdScott","cbrt","median","medianIndex","merge","arrays","mode","counts","modeValue","modeCount","pairs","pairof","pair","previous","rank","V","R","compareIndex","least","minValue","leastIndex","greatestIndex","scan","shuffler","transpose","matrix","zip","every","mapper","next","difference","others","other","disjoint","intersection","out","superset","o","io","intern","ivalue","subset","union","epsilon","translateX","translateY","scale","bandwidth","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","devicePixelRatio","transform","spacing","range0","range1","copy","selectAll","tick","order","tickExit","exit","tickEnter","enter","line","insert","transition","tickSize","axisTop","axisRight","axisBottom","axisLeft","noop","dispatch","Dispatch","typename","types","that","none","childMatcher","node","childFirst","firstElementChild","EnterNode","datum","ownerDocument","namespaceURI","_next","_parent","__data__","bindIndex","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","arraylike","insertBefore","xhtml","svg","xlink","xmlns","namespaces","space","local","attrRemove","attrRemoveNS","fullname","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","propertyRemove","propertyConstant","propertyFunction","classArray","string","ClassList","_node","_names","classedAdd","names","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","createElementNS","creatorFixed","namespace","constantNull","selection_cloneShallow","cloneNode","selection_cloneDeep","onRemove","__on","listener","onAdd","contextListener","initEvent","dispatchConstant","dispatchFunction","root","Selection","_groups","_parents","subgroups","subnode","subgroup","arrayAll","selectorAll","selectChild","childFind","selectChildren","childrenFilter","enterGroup","updateGroup","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compareNode","sortgroups","sortgroup","nodes","size","getAttributeNS","property","classed","create","creator","before","deep","typenames","nonpassivecapture","capture","passive","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","exec","rgbn","Rgb","rgba","hsla","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m2","basis","t1","v0","v1","v2","v3","t2","t3","channels","assign","displayable","formatHex8","formatHsl","clamp","linear","gamma","nogamma","exponential","rgbGamma","rgbSpline","spline","colors","genericArray","nb","na","setTime","reA","reB","am","bm","bs","bi","one","ArrayBuffer","isView","DataView","object","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","rect","clientLeft","clientTop","pageX","pageY","taskHead","taskTail","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","restart","wake","timerFlush","t0","sleep","nap","poke","clearInterval","setInterval","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","timing","schedules","__transition","tween","schedule","state","duration","ease","init","active","svgNode","degrees","PI","rotate","skewX","scaleX","scaleY","atan2","atan","interpolateTransform","pxComma","pxParen","degParen","xa","ya","xb","yb","translate","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","baseVal","consolidate","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","Promise","resolve","reject","cancel","interrupt","defaultTiming","BrushEvent","enumerable","configurable","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","X","handles","output","xy","Y","XY","cursors","overlay","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultFilter","defaultExtent","hasAttribute","viewBox","defaultTouchable","navigator","maxTouchPoints","__brush","brushSelection","dim","brushX","brushY","touchending","touchable","handleSize","brush","initialize","handle","redraw","started","touchmoved","touchended","emitter","clean","emit","Emitter","touches","w0","w1","n0","n1","e0","e1","moving","lockX","lockY","signX","signY","W","N","E","dx","dy","shifting","shiftKey","points","identifier","pointer","point0","beforestart","pts","moved","ended","view","noevent","__noselect","MozUserSelect","changedTouches","cur","noclick","selection0","selection1","starting","keyModifiers","cos","sin","pi","halfPi","tau","chordTranspose","chordDirected","directed","padAngle","sortGroups","sortSubgroups","sortChords","chord","groupSums","groupIndex","chords","subgroupIndex","startAngle","endAngle","tauEpsilon","strings","Path","digits","_x0","_y0","_x1","_y1","_append","appendRound","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","cw","da","defaultSource","defaultTarget","defaultRadius","defaultStartAngle","defaultEndAngle","defaultPadAngle","defaultArrowheadRadius","ribbon","headRadius","sourceRadius","targetRadius","buffer","ap","argv","sr","sa0","sa1","tr","ta0","ta1","tr2","ta2","ribbonArrow","radians","Xn","Yn","Zn","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","lch","hcl","A","B","C","D","ED","EB","BC_DA","Cubehelix","bl","cubehelixConvert","cosh","sinh","ring","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","cases","smooth","smoothLinear","contours","finite","contour","polygons","holes","fragmentByStart","fragmentByEnd","above","stitch","startIndex","endIndex","isorings","area","polygon","coordinates","xt","yt","valid","smooth1","_0","_1","sign","defaultX","defaultY","defaultWeight","weight","grid","Float32Array","pow2k","wi","density","pow4k","Number","MIN_VALUE","geometry","transformPolygon","transformRing","transformPoint","resize","cellSize","elen","flen","Q","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","vec","ccwerrboundA","ccwerrboundB","ccwerrboundC","C1","C2","u","orient2d","ax","ay","bx","by","cx","cy","detleft","detright","det","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_i","_j","u3","acx","bcx","acy","bcy","errbound","C1len","C2len","Dlen","orient2dadapt","EPSILON","EDGE_STACK","Delaunator","static","getX","defaultGetX","getY","defaultGetY","coords","maxTriangles","_triangles","_halfedges","Int32Array","_hashSize","_hullPrev","_hullNext","_hullTri","_hullHash","_ids","_dists","hullPrev","hullNext","hullTri","hullHash","minX","minY","maxX","maxY","minDist","dist","i0x","i0y","i1x","i1y","minRadius","circumradius","i2x","i2y","quicksort","hull","d0","triangles","halfedges","ey","cl","circumcenter","_cx","_cy","_hullStart","hullSize","_hashKey","trianglesLen","_addTriangle","xp","yp","_legalize","pseudoAngle","ar","b0","al","p0","pl","p1","inCircle","hbl","_link","br","px","py","fx","fy","bp","cp","ids","dists","tempDist","arr","tmp","Polygon","Voronoi","delaunay","xmin","ymin","xmax","ymax","_circumcenters","vectors","_init","circumcenters","x3","y3","ab","inedges","ti","tj","_renderSegment","h0","h1","_project","renderBounds","renderCell","_clip","cell","cellPolygon","c0","_regioncode","c1","_clipSegment","_step","ci","neighbors","cj","loop","ai","li","aj","lj","_cell","_clipInfinite","_clipFinite","P","sx0","sy0","sx1","sy1","_edgecode","_edge","vx0","vy0","vxn","vyn","vx","vy","pointX","pointY","jitter","Delaunay","flatArray","flatIterable","_delaunator","_hullIndex","bounds","hypot","hullIndex","voronoi","dc","renderHull","renderPoints","hullPolygon","renderTriangle","trianglePolygon","DragEvent","subject","defaultContainer","defaultSubject","mousedownx","mousedowny","mousemoving","gestures","clickDistance2","drag","mousedowned","touchstarted","gesture","mousemoved","mouseupped","mouse","touch","clickDistance","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","Function","stringify","inferColumns","rows","columnSet","column","pad","formatDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCMonth","getUTCDate","delimiter","reFormat","DELIMITER","charCodeAt","parseRows","I","eof","eol","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","csv","dsv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","autoType","fixtz","getHours","quadIn","quadOut","quadInOut","polyIn","custom","exponent","polyOut","polyInOut","sinIn","sinOut","sinInOut","tpmt","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","b1","b2","b3","b4","b5","b6","b7","b8","b9","bounceIn","bounceOut","bounceInOut","overshoot","backIn","backOut","backInOut","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","responseBlob","ok","blob","fetch","responseArrayBuffer","arrayBuffer","dsvParse","image","Image","onerror","onload","responseJson","strength","force","sx","sy","tree","xm","ym","_root","leaf","_x","_y","quadtree","Quadtree","addAll","leaf_copy","treeProto","radii","iterations","ri","ri2","visitAfter","prepare","visit","quad","rj","jiggle","_nodes","_random","nodeById","nodeId","links","strengths","distances","bias","distance","alpha","initializeStrength","initializeDistance","cover","yz","quads","d2","retainer","initialRadius","initialAngle","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","lcg","initializeNodes","angle","initializeForce","randomSource","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","theta","radiuses","formatDecimalParts","toExponential","coefficient","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","align","symbol","comma","precision","toFixed","toLocaleString","toPrecision","formatRounded","formatPrefix","prefixes","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","padding","defaultLocale","epsilon2","quarterPi","haversin","streamGeometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","lambda00","phi00","lambda0","cosPhi0","sinPhi0","phi0","lambda1","phi1","lambda2","deltaSum","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","z0","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","normal","inflection","phii","lambdai","antimeridian","rangeCompare","rangeContains","feature","merged","deltaMax","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","cosRadius","sinRadius","circleRadius","circle","lines","rejoin","Intersection","entry","segments","compareIntersection","startInside","clip","segment","pointEqual","isSubject","longitude","winding","sinPhi1","cosPhi1","point1","absDelta","phiArc","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","polygonContains","pointLine","ringSegments","validSegment","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","to","cr","smallRadius","notHemisphere","visible","intersect","two","n2","n2n2","n1n2","determinant","c2","n1xn2","uu","polar","q1","code","v00","point2","lengthSum","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","x__","y__","v__","x_","y_","v_","activeStream","bufferStream","clipStream","polygonInside","cleanInside","cache","cacheStream","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ringRadians","pointRadians","graticuleX","graticuleY","graticule","DX","DY","outline","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","cy0","cy1","kx0","ky0","kx1","ky1","x00","y00","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_context","_radius","pointRadius","_line","_point","lengthRing","cacheDigits","cacheAppend","cacheRadius","cacheCircle","PathString","projection","projectionStream","contextStream","measure","transformer","TransformStream","fit","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","maxDepth","cosMinDistance","project","delta2","resampleLineTo","depth","phi2","dx2","dy2","dz","a00","b00","c00","resampleStream","ringPoint","resampleNone","transformRadians","scaleTranslateRotate","scaleTranslate","cosAlpha","sinAlpha","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","preclip","postclip","recenter","resample","transformRotate","clipAngle","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","cylindricalEqualAreaRaw","r0","r0y","conicEqualArea","lower48Point","alaskaPoint","hawaiiPoint","lower48","albers","alaska","hawaii","pointStream","albersUsa","streams","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","gy","nx","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","gnomonicRaw","sa","tx","ty","kx","ky","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","defaultSeparation","meanXReduce","maxYReduce","separation","nodeSize","cluster","previousNode","eachAfter","meanX","leafLeft","leafRight","hierarchy","mapChildren","objectChildren","childs","Node","eachBefore","computeHeight","copyData","optional","required","constantZero","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","circles","packEncloseRandom","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r1","r2","r21","r3","a2","a3","c3","d1","d3","place","intersects","score","packSiblingsRandom","aa","sj","sk","pack","radiusLeaf","packChildrenRandom","translateChild","partition","positionNode","preroot","ambiguous","imputed","defaultId","defaultParentId","parentId","stratify","nodeKey","currentId","currentParentId","nodeByKey","slash","parentof","nextLeft","nextRight","moveSubtree","wm","wp","change","nextAncestor","vim","TreeNode","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","squarifyRatio","ratio","nodeValue","sumValue","newRatio","minRatio","beta","dice","squarify","tile","paddingStack","paddingInner","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","paddingOuter","sums","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","resquarify","_squarify","zoomRho","rho","rho2","rho4","zoom","ux0","uy0","ux1","uy1","coshr0","tanh","SQRT2","_2","hue","hslLong","hclLong","cubehelix","cubehelixGamma","cubehelixLong","piecewise","interpolator","samples","lexicographicOrder","computeUpperHullIndexes","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","inside","perimeter","sourceRandomUniform","randomUniform","sourceRandomInt","randomInt","sourceRandomNormal","randomNormal","mu","sigma","sourceRandomLogNormal","randomLogNormal","sourceRandomIrwinHall","randomIrwinHall","sourceRandomBates","irwinHall","randomBates","sourceRandomExponential","randomExponential","log1p","sourceRandomPareto","randomPareto","sourceRandomBernoulli","randomBernoulli","sourceRandomGeometric","randomGeometric","sourceRandomGamma","randomGamma","multiplier","sourceRandomBeta","G","randomBeta","sourceRandomBinomial","geometric","randomBinomial","acc","nn","pp","sourceRandomWeibull","randomWeibull","outerFunc","sourceRandomCauchy","randomCauchy","sourceRandomLogistic","randomLogistic","sourceRandomPoisson","binomial","randomPoisson","mul","eps","seed","initRange","initInterpolator","implicit","ordinal","unknown","band","ordinalRange","rescale","rangeRound","pointish","unit","bimap","polymap","untransform","clamper","continuous","linearish","maxIter","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","base","log2","logp","powp","transformSymlog","transformSymexp","expm1","symlogish","constant","symlog","transformPow","transformSqrt","transformSquare","powish","square","squared","unsquare","invertExtent","quantiles","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","timeInterval","floori","offseti","field","millisecond","getMilliseconds","timeMinute","getSeconds","getMinutes","utcMinute","setUTCSeconds","timeHour","utcHour","setUTCMinutes","timeDay","setHours","setDate","getDate","getTimezoneOffset","utcDay","setUTCHours","setUTCDate","unixDay","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","getMonth","getFullYear","utcMonth","setUTCMonth","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","L","utcDate","UTC","newDate","timeFormat","utcFormat","pads","numberRe","percentRe","requoteRe","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","parseWeekNumberMonday","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","utcTime","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","newParse","utcParse","formatLocale","scheme","ramp","warm","cool","ts","pi_1_3","pi_2_3","magma","inferno","plasma","nextId","Local","events","withPath","shape","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","cx0","cx1","dx0","dy0","dx1","dy1","cornerRadius","padRadius","a01","a11","a10","da0","da1","rp","rc0","rc1","oc","x32","y32","kc","lc","Linear","curve","defined0","x0z","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","sortValues","pie","arcs","pa","curveRadialLinear","curveRadial","Radial","_curve","radial","lineRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","Bump","BumpRadial","pointRadial","p2","p3","bumpX","bumpY","bumpRadial","linkSource","linkTarget","linkHorizontal","linkVertical","linkRadial","sqrt3","draw","tan30","tan30_2","kr","symbolsFill","diamond","star","triangle","wye","symbolsStroke","plus","times","triangle2","asterisk","square2","diamond2","Basis","BasisClosed","BasisOpen","Bundle","_basis","_beta","_x2","_x3","_x4","_y2","_y3","_y4","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","slope3","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","Step","_t","stepBefore","stepAfter","series","stackValue","stackSeries","stack","oz","sz","yn","s2","si","sij0","s3","peaks","peak","vi","vj","appearance","tops","bottoms","_t0","isoSpecifier","formatIso","toISOString","parseIso","total","_restart","ZoomEvent","Transform","applyX","applyY","invertX","invertY","rescaleX","rescaleY","__zoom","SVGElement","clientHeight","defaultTransform","defaultWheelDelta","deltaMode","defaultConstrain","translateExtent","touchstarting","touchfirst","constrain","wheelDelta","scaleExtent","touchDelay","wheelDelay","tapDistance","wheeled","dblclicked","__zooming","Gesture","taps","wheel","k1","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","translateBy","translateTo"],"sourceRoot":""}