{"version":3,"file":"website-carbon-meter.umd.cjs","sources":["../node_modules/@tgwf/co2/dist/esm/1byte.js","../node_modules/@tgwf/co2/dist/esm/constants/file-size.js","../node_modules/@tgwf/co2/dist/esm/data/average-intensities.min.js","../node_modules/@tgwf/co2/dist/esm/constants/index.js","../node_modules/@tgwf/co2/dist/esm/helpers/index.js","../node_modules/@tgwf/co2/dist/esm/sustainable-web-design-v3.js","../node_modules/@tgwf/co2/dist/esm/sustainable-web-design-v4.js","../node_modules/@tgwf/co2/dist/esm/co2.js","../node_modules/@tgwf/co2/dist/esm/hosting-json.js","../node_modules/@tgwf/co2/dist/esm/hosting-api.js","../node_modules/@tgwf/co2/dist/esm/hosting.js","../node_modules/@tgwf/co2/dist/esm/data/marginal-intensities-2021.min.js","../node_modules/@tgwf/co2/dist/esm/index.js","../lib/carbon.js"],"sourcesContent":["const CO2_PER_KWH_IN_DC_GREY = 519;\nconst CO2_PER_KWH_NETWORK_GREY = 475;\nconst CO2_PER_KWH_IN_DC_GREEN = 0;\nconst KWH_PER_BYTE_IN_DC = 72e-12;\nconst FIXED_NETWORK_WIRED = 429e-12;\nconst FIXED_NETWORK_WIFI = 152e-12;\nconst FOUR_G_MOBILE = 884e-12;\nconst KWH_PER_BYTE_FOR_NETWORK = (FIXED_NETWORK_WIRED + FIXED_NETWORK_WIFI + FOUR_G_MOBILE) / 3;\nconst KWH_PER_BYTE_FOR_DEVICES = 13e-11;\nclass OneByte {\n  constructor(options) {\n    this.allowRatings = false;\n    this.options = options;\n    this.KWH_PER_BYTE_FOR_NETWORK = KWH_PER_BYTE_FOR_NETWORK;\n  }\n  perByte(bytes, green) {\n    if (bytes < 1) {\n      return 0;\n    }\n    if (green) {\n      const Co2ForDC = bytes * KWH_PER_BYTE_IN_DC * CO2_PER_KWH_IN_DC_GREEN;\n      const Co2forNetwork = bytes * KWH_PER_BYTE_FOR_NETWORK * CO2_PER_KWH_NETWORK_GREY;\n      return Co2ForDC + Co2forNetwork;\n    }\n    const KwHPerByte = KWH_PER_BYTE_IN_DC + KWH_PER_BYTE_FOR_NETWORK;\n    return bytes * KwHPerByte * CO2_PER_KWH_IN_DC_GREY;\n  }\n}\nvar byte_default = OneByte;\nexport {\n  OneByte,\n  byte_default as default\n};\n","const GIGABYTE = 1e3 * 1e3 * 1e3;\nvar file_size_default = {\n  GIGABYTE\n};\nexport {\n  GIGABYTE,\n  file_size_default as default\n};\n","const data = { \"AFG\": 132.53, \"AFRICA\": 547.83, \"ALB\": 24.29, \"DZA\": 634.61, \"ASM\": 611.11, \"AGO\": 174.73, \"ATG\": 611.11, \"ARG\": 353.96, \"ARM\": 264.54, \"ABW\": 561.22, \"ASEAN\": 570.43, \"ASIA\": 591.02, \"AUS\": 556.3, \"AUT\": 110.14, \"AZE\": 671.39, \"BHS\": 660.1, \"BHR\": 904.62, \"BGD\": 691.41, \"BRB\": 605.51, \"BLR\": 441.74, \"BEL\": 138.11, \"BLZ\": 225.81, \"BEN\": 584.07, \"BTN\": 23.33, \"BOL\": 531.69, \"BIH\": 600.94, \"BWA\": 847.91, \"BRA\": 96.4, \"BRN\": 893.91, \"BGR\": 335.33, \"BFA\": 467.53, \"BDI\": 250, \"CPV\": 558.14, \"KHM\": 417.71, \"CMR\": 305.42, \"CAN\": 165.15, \"CYM\": 642.86, \"CAF\": 0, \"TCD\": 628.57, \"CHL\": 291.11, \"CHN\": 583.61, \"COL\": 259.51, \"COM\": 642.86, \"COG\": 700, \"COD\": 24.46, \"COK\": 250, \"CRI\": 53.38, \"CIV\": 393.89, \"HRV\": 202.68, \"CUB\": 637.61, \"CYP\": 526.02, \"CZE\": 449.72, \"DNK\": 151.65, \"DJI\": 692.31, \"DMA\": 529.41, \"DOM\": 578.41, \"ECU\": 166.91, \"EGY\": 574.04, \"SLV\": 224.76, \"GNQ\": 591.84, \"ERI\": 631.58, \"EST\": 416.67, \"SWZ\": 172.41, \"ETH\": 24.64, \"EU\": 243.55, \"EUROPE\": 302.09, \"FLK\": 500, \"FRO\": 404.76, \"FJI\": 288.46, \"FIN\": 79.39, \"FRA\": 56.02, \"GUF\": 217.82, \"PYF\": 442.86, \"G20\": 477.79, \"G7\": 341.49, \"GAB\": 491.6, \"GMB\": 666.67, \"GEO\": 167.59, \"DEU\": 381.41, \"GHA\": 484, \"GRC\": 336.57, \"GRL\": 178.57, \"GRD\": 640, \"GLP\": 500, \"GUM\": 622.86, \"GTM\": 328.27, \"GIN\": 236.84, \"GNB\": 625, \"GUY\": 640.35, \"HTI\": 567.31, \"HND\": 282.27, \"HKG\": 699.5, \"HUN\": 204.01, \"ISL\": 27.68, \"IND\": 713.01, \"IDN\": 682.43, \"IRN\": 641.73, \"IRQ\": 688.81, \"IRL\": 283.71, \"ISR\": 582.93, \"ITA\": 330.72, \"JAM\": 555.56, \"JPN\": 493.59, \"JOR\": 540.92, \"KAZ\": 821.9, \"KEN\": 71.2, \"KIR\": 666.67, \"XKX\": 894.65, \"KWT\": 649.16, \"KGZ\": 147.29, \"LAO\": 265.51, \"LATIN AMERICA AND CARIBBEAN\": 259.77, \"LVA\": 123.99, \"LBN\": 599.01, \"LSO\": 20, \"LBR\": 227.85, \"LBY\": 818.69, \"LTU\": 160.07, \"LUX\": 105.26, \"MAC\": 448.98, \"MDG\": 436.44, \"MWI\": 66.67, \"MYS\": 607.88, \"MDV\": 611.77, \"MLI\": 408, \"MLT\": 444.03, \"MTQ\": 523.18, \"MRT\": 464.71, \"MUS\": 632.48, \"MEX\": 492.34, \"MIDDLE EAST\": 643.04, \"MDA\": 643.46, \"MNG\": 775.31, \"MNE\": 418.09, \"MSR\": 1e3, \"MAR\": 624.45, \"MOZ\": 135.65, \"MMR\": 440.37, \"NAM\": 59.26, \"NRU\": 750, \"NPL\": 24.44, \"NLD\": 268.48, \"NCL\": 660.58, \"NZL\": 112.76, \"NIC\": 265.12, \"NER\": 670.89, \"NGA\": 523.25, \"NORTH AMERICA\": 343.03, \"PRK\": 389.59, \"MKD\": 539.55, \"NOR\": 30.05, \"OCEANIA\": 495.74, \"OECD\": 341.25, \"OMN\": 564.55, \"PAK\": 440.61, \"PSE\": 516.13, \"PAN\": 161.68, \"PNG\": 507.25, \"PRY\": 24.31, \"PER\": 266.48, \"POL\": 661.93, \"PRT\": 164.86, \"PRI\": 677.96, \"QAT\": 602.5, \"REU\": 572.82, \"ROU\": 238.65, \"RUS\": 445.02, \"RWA\": 316.33, \"KNA\": 636.36, \"LCA\": 666.67, \"SPM\": 600, \"VCT\": 529.41, \"WSM\": 473.68, \"STP\": 642.86, \"SAU\": 696.31, \"SEN\": 511.6, \"SRB\": 648.2, \"SYC\": 564.52, \"SLE\": 50, \"SGP\": 470.87, \"SVK\": 116.77, \"SVN\": 230.87, \"SLB\": 700, \"SOM\": 578.95, \"ZAF\": 709.69, \"KOR\": 432.11, \"SSD\": 629.03, \"ESP\": 172.2, \"LKA\": 509.78, \"SDN\": 263.16, \"SUR\": 349.28, \"SWE\": 40.77, \"CHE\": 29.56, \"SYR\": 701.66, \"TWN\": 644.36, \"TJK\": 116.86, \"TZA\": 339.25, \"THA\": 549.85, \"PHL\": 610.74, \"TGO\": 443.18, \"TON\": 625, \"TTO\": 681.53, \"TUN\": 563.96, \"TUR\": 464.59, \"TKM\": 1306.03, \"TCA\": 653.85, \"UGA\": 44.53, \"UKR\": 256.21, \"ARE\": 492.7, \"GBR\": 228.25, \"USA\": 369.53, \"URY\": 128.79, \"UZB\": 1167.6, \"VUT\": 571.43, \"VEN\": 185.8, \"VNM\": 472.47, \"VGB\": 647.06, \"VIR\": 632.35, \"WORLD\": 481.6, \"YEM\": 566.1, \"ZMB\": 111.97, \"ZWE\": 297.87 };\nconst type = \"average\";\nvar average_intensities_min_default = { data, type };\nexport {\n  data,\n  average_intensities_min_default as default,\n  type\n};\n","import fileSize from \"./file-size.js\";\nimport averageIntensity from \"../data/average-intensities.min.js\";\nconst KWH_PER_GB = 0.81;\nconst END_USER_DEVICE_ENERGY = 0.52;\nconst NETWORK_ENERGY = 0.14;\nconst DATACENTER_ENERGY = 0.15;\nconst PRODUCTION_ENERGY = 0.19;\nconst GLOBAL_GRID_INTENSITY = averageIntensity.data[\"WORLD\"];\nconst RENEWABLES_GRID_INTENSITY = 50;\nconst FIRST_TIME_VIEWING_PERCENTAGE = 0.75;\nconst RETURNING_VISITOR_PERCENTAGE = 0.25;\nconst PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD = 0.02;\nconst SWDV4 = {\n  OPERATIONAL_KWH_PER_GB_DATACENTER: 0.055,\n  OPERATIONAL_KWH_PER_GB_NETWORK: 0.059,\n  OPERATIONAL_KWH_PER_GB_DEVICE: 0.08,\n  EMBODIED_KWH_PER_GB_DATACENTER: 0.012,\n  EMBODIED_KWH_PER_GB_NETWORK: 0.013,\n  EMBODIED_KWH_PER_GB_DEVICE: 0.081,\n  GLOBAL_GRID_INTENSITY: 494\n};\nconst SWDMV3_RATINGS = {\n  FIFTH_PERCENTILE: 0.095,\n  TENTH_PERCENTILE: 0.186,\n  TWENTIETH_PERCENTILE: 0.341,\n  THIRTIETH_PERCENTILE: 0.493,\n  FORTIETH_PERCENTILE: 0.656,\n  FIFTIETH_PERCENTILE: 0.846\n};\nconst SWDMV4_RATINGS = {\n  FIFTH_PERCENTILE: 0.04,\n  TENTH_PERCENTILE: 0.079,\n  TWENTIETH_PERCENTILE: 0.145,\n  THIRTIETH_PERCENTILE: 0.209,\n  FORTIETH_PERCENTILE: 0.278,\n  FIFTIETH_PERCENTILE: 0.359\n};\nexport {\n  DATACENTER_ENERGY,\n  END_USER_DEVICE_ENERGY,\n  FIRST_TIME_VIEWING_PERCENTAGE,\n  GLOBAL_GRID_INTENSITY,\n  KWH_PER_GB,\n  NETWORK_ENERGY,\n  PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD,\n  PRODUCTION_ENERGY,\n  RENEWABLES_GRID_INTENSITY,\n  RETURNING_VISITOR_PERCENTAGE,\n  SWDMV3_RATINGS,\n  SWDMV4_RATINGS,\n  SWDV4,\n  fileSize\n};\n","import { averageIntensity } from \"../index.js\";\nimport {\n  GLOBAL_GRID_INTENSITY as SWDM3_GLOBAL_GRID_INTENSITY,\n  SWDV4,\n  PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD,\n  FIRST_TIME_VIEWING_PERCENTAGE,\n  RETURNING_VISITOR_PERCENTAGE,\n  SWDMV3_RATINGS,\n  SWDMV4_RATINGS\n} from \"../constants/index.js\";\nconst SWDM4_GLOBAL_GRID_INTENSITY = SWDV4.GLOBAL_GRID_INTENSITY;\nconst formatNumber = (num) => parseFloat(num.toFixed(2));\nconst lessThanEqualTo = (num, limit) => num <= limit;\nfunction parseByteTraceOptions(options = {}, version = 3, green = false) {\n  const globalGridIntensity = version === 4 ? SWDM4_GLOBAL_GRID_INTENSITY : SWDM3_GLOBAL_GRID_INTENSITY;\n  if (typeof options !== \"object\") {\n    throw new Error(\"Options must be an object\");\n  }\n  const adjustments = {};\n  function setIntensity(segment, segmentIntensity) {\n    var _a, _b;\n    if (segmentIntensity || segmentIntensity === 0) {\n      if (typeof segmentIntensity === \"object\") {\n        if (!averageIntensity.data[(_a = segmentIntensity.country) == null ? void 0 : _a.toUpperCase()]) {\n          console.warn(\n            `\"${segmentIntensity.country}\" is not a valid country. Please use a valid 3 digit ISO 3166 country code. \nSee https://developers.thegreenwebfoundation.org/co2js/data/ for more information. \nFalling back to global average grid intensity.`\n          );\n          adjustments.gridIntensity[segment] = {\n            value: globalGridIntensity\n          };\n        }\n        adjustments.gridIntensity[segment] = {\n          country: segmentIntensity.country,\n          value: parseFloat(\n            averageIntensity.data[(_b = segmentIntensity.country) == null ? void 0 : _b.toUpperCase()]\n          )\n        };\n      } else if (typeof segmentIntensity === \"number\") {\n        adjustments.gridIntensity[segment] = {\n          value: segmentIntensity\n        };\n      } else {\n        adjustments.gridIntensity[segment] = {\n          value: globalGridIntensity\n        };\n        console.warn(\n          `The ${segment} grid intensity must be a number or an object. You passed in a ${typeof segmentIntensity}. \nFalling back to global average grid intensity.`\n        );\n      }\n    } else {\n      adjustments.gridIntensity[segment] = {\n        value: globalGridIntensity\n      };\n    }\n  }\n  if (options == null ? void 0 : options.gridIntensity) {\n    adjustments.gridIntensity = {};\n    const { device, dataCenter, network } = options.gridIntensity;\n    setIntensity(\"device\", device);\n    setIntensity(\"dataCenter\", dataCenter);\n    setIntensity(\"network\", network);\n  } else {\n    adjustments.gridIntensity = {\n      device: { value: globalGridIntensity },\n      dataCenter: { value: globalGridIntensity },\n      network: { value: globalGridIntensity }\n    };\n  }\n  if ((options == null ? void 0 : options.greenHostingFactor) || options.greenHostingFactor === 0 && version === 4) {\n    if (typeof options.greenHostingFactor === \"number\") {\n      if (options.greenHostingFactor >= 0 && options.greenHostingFactor <= 1) {\n        adjustments.greenHostingFactor = options.greenHostingFactor;\n      } else {\n        adjustments.greenHostingFactor = 0;\n        console.warn(\n          `The returnVisitPercentage option must be a number between 0 and 1. You passed in ${options.returnVisitPercentage}. \nFalling back to default value.`\n        );\n      }\n    } else {\n      adjustments.greenHostingFactor = 0;\n      console.warn(\n        `The returnVisitPercentage option must be a number. You passed in a ${typeof options.returnVisitPercentage}. \nFalling back to default value.`\n      );\n    }\n  } else if (version === 4) {\n    adjustments.greenHostingFactor = 0;\n  }\n  if (green) {\n    adjustments.greenHostingFactor = 1;\n  }\n  return adjustments;\n}\nfunction parseVisitTraceOptions(options = {}, version = 3, green = false) {\n  if (typeof options !== \"object\") {\n    throw new Error(\"Options must be an object\");\n  }\n  const adjustments = parseByteTraceOptions(options, version, green);\n  if ((options == null ? void 0 : options.dataReloadRatio) || options.dataReloadRatio === 0) {\n    if (typeof options.dataReloadRatio === \"number\") {\n      if (options.dataReloadRatio >= 0 && options.dataReloadRatio <= 1) {\n        adjustments.dataReloadRatio = options.dataReloadRatio;\n      } else {\n        adjustments.dataReloadRatio = version === 3 ? PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD : 0;\n        console.warn(\n          `The dataReloadRatio option must be a number between 0 and 1. You passed in ${options.dataReloadRatio}. \nFalling back to default value.`\n        );\n      }\n    } else {\n      adjustments.dataReloadRatio = version === 3 ? PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD : 0;\n      console.warn(\n        `The dataReloadRatio option must be a number. You passed in a ${typeof options.dataReloadRatio}. \nFalling back to default value.`\n      );\n    }\n  } else {\n    adjustments.dataReloadRatio = version === 3 ? PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD : 0;\n    console.warn(\n      `The dataReloadRatio option must be a number. You passed in a ${typeof options.dataReloadRatio}. \nFalling back to default value.`\n    );\n  }\n  if ((options == null ? void 0 : options.firstVisitPercentage) || options.firstVisitPercentage === 0) {\n    if (typeof options.firstVisitPercentage === \"number\") {\n      if (options.firstVisitPercentage >= 0 && options.firstVisitPercentage <= 1) {\n        adjustments.firstVisitPercentage = options.firstVisitPercentage;\n      } else {\n        adjustments.firstVisitPercentage = version === 3 ? FIRST_TIME_VIEWING_PERCENTAGE : 1;\n        console.warn(\n          `The firstVisitPercentage option must be a number between 0 and 1. You passed in ${options.firstVisitPercentage}. \nFalling back to default value.`\n        );\n      }\n    } else {\n      adjustments.firstVisitPercentage = version === 3 ? FIRST_TIME_VIEWING_PERCENTAGE : 1;\n      console.warn(\n        `The firstVisitPercentage option must be a number. You passed in a ${typeof options.firstVisitPercentage}. \nFalling back to default value.`\n      );\n    }\n  } else {\n    adjustments.firstVisitPercentage = version === 3 ? FIRST_TIME_VIEWING_PERCENTAGE : 1;\n    console.warn(\n      `The firstVisitPercentage option must be a number. You passed in a ${typeof options.firstVisitPercentage}. \nFalling back to default value.`\n    );\n  }\n  if ((options == null ? void 0 : options.returnVisitPercentage) || options.returnVisitPercentage === 0) {\n    if (typeof options.returnVisitPercentage === \"number\") {\n      if (options.returnVisitPercentage >= 0 && options.returnVisitPercentage <= 1) {\n        adjustments.returnVisitPercentage = options.returnVisitPercentage;\n      } else {\n        adjustments.returnVisitPercentage = version === 3 ? RETURNING_VISITOR_PERCENTAGE : 0;\n        console.warn(\n          `The returnVisitPercentage option must be a number between 0 and 1. You passed in ${options.returnVisitPercentage}. \nFalling back to default value.`\n        );\n      }\n    } else {\n      adjustments.returnVisitPercentage = version === 3 ? RETURNING_VISITOR_PERCENTAGE : 0;\n      console.warn(\n        `The returnVisitPercentage option must be a number. You passed in a ${typeof options.returnVisitPercentage}. \nFalling back to default value.`\n      );\n    }\n  } else {\n    adjustments.returnVisitPercentage = version === 3 ? RETURNING_VISITOR_PERCENTAGE : 0;\n    console.warn(\n      `The returnVisitPercentage option must be a number. You passed in a ${typeof options.returnVisitPercentage}. \nFalling back to default value.`\n    );\n  }\n  return adjustments;\n}\nfunction getApiRequestHeaders(comment = \"\") {\n  return { \"User-Agent\": `co2js/${\"0.16.4\"} ${comment}` };\n}\nfunction outputRating(co2e, swdmVersion) {\n  let {\n    FIFTH_PERCENTILE,\n    TENTH_PERCENTILE,\n    TWENTIETH_PERCENTILE,\n    THIRTIETH_PERCENTILE,\n    FORTIETH_PERCENTILE,\n    FIFTIETH_PERCENTILE\n  } = SWDMV3_RATINGS;\n  if (swdmVersion === 4) {\n    FIFTH_PERCENTILE = SWDMV4_RATINGS.FIFTH_PERCENTILE;\n    TENTH_PERCENTILE = SWDMV4_RATINGS.TENTH_PERCENTILE;\n    TWENTIETH_PERCENTILE = SWDMV4_RATINGS.TWENTIETH_PERCENTILE;\n    THIRTIETH_PERCENTILE = SWDMV4_RATINGS.THIRTIETH_PERCENTILE;\n    FORTIETH_PERCENTILE = SWDMV4_RATINGS.FORTIETH_PERCENTILE;\n    FIFTIETH_PERCENTILE = SWDMV4_RATINGS.FIFTIETH_PERCENTILE;\n  }\n  if (lessThanEqualTo(co2e, FIFTH_PERCENTILE)) {\n    return \"A+\";\n  } else if (lessThanEqualTo(co2e, TENTH_PERCENTILE)) {\n    return \"A\";\n  } else if (lessThanEqualTo(co2e, TWENTIETH_PERCENTILE)) {\n    return \"B\";\n  } else if (lessThanEqualTo(co2e, THIRTIETH_PERCENTILE)) {\n    return \"C\";\n  } else if (lessThanEqualTo(co2e, FORTIETH_PERCENTILE)) {\n    return \"D\";\n  } else if (lessThanEqualTo(co2e, FIFTIETH_PERCENTILE)) {\n    return \"E\";\n  } else {\n    return \"F\";\n  }\n}\nexport {\n  formatNumber,\n  getApiRequestHeaders,\n  lessThanEqualTo,\n  outputRating,\n  parseByteTraceOptions,\n  parseVisitTraceOptions\n};\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport {\n  fileSize,\n  KWH_PER_GB,\n  END_USER_DEVICE_ENERGY,\n  NETWORK_ENERGY,\n  DATACENTER_ENERGY,\n  PRODUCTION_ENERGY,\n  GLOBAL_GRID_INTENSITY,\n  RENEWABLES_GRID_INTENSITY,\n  FIRST_TIME_VIEWING_PERCENTAGE,\n  RETURNING_VISITOR_PERCENTAGE,\n  PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD\n} from \"./constants/index.js\";\nimport { formatNumber, outputRating } from \"./helpers/index.js\";\nclass SustainableWebDesign {\n  constructor(options) {\n    this.allowRatings = true;\n    this.options = options;\n    this.version = 3;\n  }\n  energyPerByteByComponent(bytes) {\n    const transferedBytesToGb = bytes / fileSize.GIGABYTE;\n    const energyUsage = transferedBytesToGb * KWH_PER_GB;\n    return {\n      consumerDeviceEnergy: energyUsage * END_USER_DEVICE_ENERGY,\n      networkEnergy: energyUsage * NETWORK_ENERGY,\n      productionEnergy: energyUsage * PRODUCTION_ENERGY,\n      dataCenterEnergy: energyUsage * DATACENTER_ENERGY\n    };\n  }\n  co2byComponent(energyByComponent, carbonIntensity = GLOBAL_GRID_INTENSITY, options = {}) {\n    let deviceCarbonIntensity = GLOBAL_GRID_INTENSITY;\n    let networkCarbonIntensity = GLOBAL_GRID_INTENSITY;\n    let dataCenterCarbonIntensity = GLOBAL_GRID_INTENSITY;\n    let globalEmissions = GLOBAL_GRID_INTENSITY;\n    if (options == null ? void 0 : options.gridIntensity) {\n      const { device, network, dataCenter } = options.gridIntensity;\n      if ((device == null ? void 0 : device.value) || (device == null ? void 0 : device.value) === 0) {\n        deviceCarbonIntensity = device.value;\n      }\n      if ((network == null ? void 0 : network.value) || (network == null ? void 0 : network.value) === 0) {\n        networkCarbonIntensity = network.value;\n      }\n      if ((dataCenter == null ? void 0 : dataCenter.value) || (dataCenter == null ? void 0 : dataCenter.value) === 0) {\n        dataCenterCarbonIntensity = dataCenter.value;\n      }\n    }\n    if (carbonIntensity === true) {\n      dataCenterCarbonIntensity = RENEWABLES_GRID_INTENSITY;\n    }\n    const returnCO2ByComponent = {};\n    for (const [key, value] of Object.entries(energyByComponent)) {\n      if (key.startsWith(\"dataCenterEnergy\")) {\n        returnCO2ByComponent[key.replace(\"Energy\", \"CO2\")] = value * dataCenterCarbonIntensity;\n      } else if (key.startsWith(\"consumerDeviceEnergy\")) {\n        returnCO2ByComponent[key.replace(\"Energy\", \"CO2\")] = value * deviceCarbonIntensity;\n      } else if (key.startsWith(\"networkEnergy\")) {\n        returnCO2ByComponent[key.replace(\"Energy\", \"CO2\")] = value * networkCarbonIntensity;\n      } else {\n        returnCO2ByComponent[key.replace(\"Energy\", \"CO2\")] = value * globalEmissions;\n      }\n    }\n    return returnCO2ByComponent;\n  }\n  perByte(bytes, carbonIntensity = false, segmentResults = false, ratingResults = false, options = {}) {\n    if (bytes < 1) {\n      bytes = 0;\n    }\n    const energyBycomponent = this.energyPerByteByComponent(bytes, options);\n    if (typeof carbonIntensity !== \"boolean\") {\n      throw new Error(\n        `perByte expects a boolean for the carbon intensity value. Received: ${carbonIntensity}`\n      );\n    }\n    const co2ValuesbyComponent = this.co2byComponent(\n      energyBycomponent,\n      carbonIntensity,\n      options\n    );\n    const co2Values = Object.values(co2ValuesbyComponent);\n    const co2ValuesSum = co2Values.reduce(\n      (prevValue, currentValue) => prevValue + currentValue\n    );\n    let rating = null;\n    if (ratingResults) {\n      rating = this.ratingScale(co2ValuesSum);\n    }\n    if (segmentResults) {\n      if (ratingResults) {\n        return __spreadProps(__spreadValues({}, co2ValuesbyComponent), {\n          total: co2ValuesSum,\n          rating\n        });\n      }\n      return __spreadProps(__spreadValues({}, co2ValuesbyComponent), { total: co2ValuesSum });\n    }\n    if (ratingResults) {\n      return { total: co2ValuesSum, rating };\n    }\n    return co2ValuesSum;\n  }\n  perVisit(bytes, carbonIntensity = false, segmentResults = false, ratingResults = false, options = {}) {\n    const energyBycomponent = this.energyPerVisitByComponent(bytes, options);\n    if (typeof carbonIntensity !== \"boolean\") {\n      throw new Error(\n        `perVisit expects a boolean for the carbon intensity value. Received: ${carbonIntensity}`\n      );\n    }\n    const co2ValuesbyComponent = this.co2byComponent(\n      energyBycomponent,\n      carbonIntensity,\n      options\n    );\n    const co2Values = Object.values(co2ValuesbyComponent);\n    const co2ValuesSum = co2Values.reduce(\n      (prevValue, currentValue) => prevValue + currentValue\n    );\n    let rating = null;\n    if (ratingResults) {\n      rating = this.ratingScale(co2ValuesSum);\n    }\n    if (segmentResults) {\n      if (ratingResults) {\n        return __spreadProps(__spreadValues({}, co2ValuesbyComponent), {\n          total: co2ValuesSum,\n          rating\n        });\n      }\n      return __spreadProps(__spreadValues({}, co2ValuesbyComponent), { total: co2ValuesSum });\n    }\n    if (ratingResults) {\n      return { total: co2ValuesSum, rating };\n    }\n    return co2ValuesSum;\n  }\n  energyPerByte(bytes) {\n    const energyByComponent = this.energyPerByteByComponent(bytes);\n    const energyValues = Object.values(energyByComponent);\n    return energyValues.reduce(\n      (prevValue, currentValue) => prevValue + currentValue\n    );\n  }\n  energyPerVisitByComponent(bytes, options = {}, firstView = FIRST_TIME_VIEWING_PERCENTAGE, returnView = RETURNING_VISITOR_PERCENTAGE, dataReloadRatio = PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD) {\n    if (options.dataReloadRatio || options.dataReloadRatio === 0) {\n      dataReloadRatio = options.dataReloadRatio;\n    }\n    if (options.firstVisitPercentage || options.firstVisitPercentage === 0) {\n      firstView = options.firstVisitPercentage;\n    }\n    if (options.returnVisitPercentage || options.returnVisitPercentage === 0) {\n      returnView = options.returnVisitPercentage;\n    }\n    const energyBycomponent = this.energyPerByteByComponent(bytes);\n    const cacheAdjustedSegmentEnergy = {};\n    const energyValues = Object.values(energyBycomponent);\n    for (const [key, value] of Object.entries(energyBycomponent)) {\n      cacheAdjustedSegmentEnergy[`${key} - first`] = value * firstView;\n      cacheAdjustedSegmentEnergy[`${key} - subsequent`] = value * returnView * dataReloadRatio;\n    }\n    return cacheAdjustedSegmentEnergy;\n  }\n  energyPerVisit(bytes) {\n    let firstVisits = 0;\n    let subsequentVisits = 0;\n    const energyBycomponent = Object.entries(\n      this.energyPerVisitByComponent(bytes)\n    );\n    for (const [key, val] of energyBycomponent) {\n      if (key.indexOf(\"first\") > 0) {\n        firstVisits += val;\n      }\n    }\n    for (const [key, val] of energyBycomponent) {\n      if (key.indexOf(\"subsequent\") > 0) {\n        subsequentVisits += val;\n      }\n    }\n    return firstVisits + subsequentVisits;\n  }\n  emissionsPerVisitInGrams(energyPerVisit, carbonintensity = GLOBAL_GRID_INTENSITY) {\n    return formatNumber(energyPerVisit * carbonintensity);\n  }\n  annualEnergyInKwh(energyPerVisit, monthlyVisitors = 1e3) {\n    return energyPerVisit * monthlyVisitors * 12;\n  }\n  annualEmissionsInGrams(co2grams, monthlyVisitors = 1e3) {\n    return co2grams * monthlyVisitors * 12;\n  }\n  annualSegmentEnergy(annualEnergy) {\n    return {\n      consumerDeviceEnergy: formatNumber(annualEnergy * END_USER_DEVICE_ENERGY),\n      networkEnergy: formatNumber(annualEnergy * NETWORK_ENERGY),\n      dataCenterEnergy: formatNumber(annualEnergy * DATACENTER_ENERGY),\n      productionEnergy: formatNumber(annualEnergy * PRODUCTION_ENERGY)\n    };\n  }\n  ratingScale(co2e) {\n    return outputRating(co2e, this.version);\n  }\n}\nvar sustainable_web_design_v3_default = SustainableWebDesign;\nexport {\n  SustainableWebDesign,\n  sustainable_web_design_v3_default as default\n};\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { fileSize, SWDV4 } from \"./constants/index.js\";\nimport { outputRating } from \"./helpers/index.js\";\nconst {\n  OPERATIONAL_KWH_PER_GB_DATACENTER,\n  OPERATIONAL_KWH_PER_GB_NETWORK,\n  OPERATIONAL_KWH_PER_GB_DEVICE,\n  EMBODIED_KWH_PER_GB_DATACENTER,\n  EMBODIED_KWH_PER_GB_NETWORK,\n  EMBODIED_KWH_PER_GB_DEVICE,\n  GLOBAL_GRID_INTENSITY\n} = SWDV4;\nfunction outputSegments(operationalEmissions, embodiedEmissions) {\n  const totalOperationalCO2e = operationalEmissions.dataCenter + operationalEmissions.network + operationalEmissions.device;\n  const totalEmbodiedCO2e = embodiedEmissions.dataCenter + embodiedEmissions.network + embodiedEmissions.device;\n  const dataCenterCO2e = operationalEmissions.dataCenter + embodiedEmissions.dataCenter;\n  const networkCO2e = operationalEmissions.network + embodiedEmissions.network;\n  const consumerDeviceCO2e = operationalEmissions.device + embodiedEmissions.device;\n  return {\n    dataCenterOperationalCO2e: operationalEmissions.dataCenter,\n    networkOperationalCO2e: operationalEmissions.network,\n    consumerDeviceOperationalCO2e: operationalEmissions.device,\n    dataCenterEmbodiedCO2e: embodiedEmissions.dataCenter,\n    networkEmbodiedCO2e: embodiedEmissions.network,\n    consumerDeviceEmbodiedCO2e: embodiedEmissions.device,\n    totalEmbodiedCO2e,\n    totalOperationalCO2e,\n    dataCenterCO2e,\n    networkCO2e,\n    consumerDeviceCO2e\n  };\n}\nfunction getGreenHostingFactor(green, options) {\n  if (green) {\n    return 1;\n  } else if ((options == null ? void 0 : options.greenHostingFactor) || (options == null ? void 0 : options.greenHostingFactor) === 0) {\n    return options.greenHostingFactor;\n  }\n  return 0;\n}\nclass SustainableWebDesign {\n  constructor(options) {\n    this.allowRatings = true;\n    this.options = options;\n    this.version = 4;\n  }\n  operationalEnergyPerSegment(bytes) {\n    const transferedBytesToGb = bytes / fileSize.GIGABYTE;\n    const dataCenter = transferedBytesToGb * OPERATIONAL_KWH_PER_GB_DATACENTER;\n    const network = transferedBytesToGb * OPERATIONAL_KWH_PER_GB_NETWORK;\n    const device = transferedBytesToGb * OPERATIONAL_KWH_PER_GB_DEVICE;\n    return {\n      dataCenter,\n      network,\n      device\n    };\n  }\n  operationalEmissions(bytes, options = {}) {\n    const { dataCenter, network, device } = this.operationalEnergyPerSegment(bytes);\n    let dataCenterGridIntensity = GLOBAL_GRID_INTENSITY;\n    let networkGridIntensity = GLOBAL_GRID_INTENSITY;\n    let deviceGridIntensity = GLOBAL_GRID_INTENSITY;\n    if (options == null ? void 0 : options.gridIntensity) {\n      const { device: device2, network: network2, dataCenter: dataCenter2 } = options.gridIntensity;\n      if ((device2 == null ? void 0 : device2.value) || (device2 == null ? void 0 : device2.value) === 0) {\n        deviceGridIntensity = device2.value;\n      }\n      if ((network2 == null ? void 0 : network2.value) || (network2 == null ? void 0 : network2.value) === 0) {\n        networkGridIntensity = network2.value;\n      }\n      if ((dataCenter2 == null ? void 0 : dataCenter2.value) || (dataCenter2 == null ? void 0 : dataCenter2.value) === 0) {\n        dataCenterGridIntensity = dataCenter2.value;\n      }\n    }\n    const dataCenterEmissions = dataCenter * dataCenterGridIntensity;\n    const networkEmissions = network * networkGridIntensity;\n    const deviceEmissions = device * deviceGridIntensity;\n    return {\n      dataCenter: dataCenterEmissions,\n      network: networkEmissions,\n      device: deviceEmissions\n    };\n  }\n  embodiedEnergyPerSegment(bytes) {\n    const transferedBytesToGb = bytes / fileSize.GIGABYTE;\n    const dataCenter = transferedBytesToGb * EMBODIED_KWH_PER_GB_DATACENTER;\n    const network = transferedBytesToGb * EMBODIED_KWH_PER_GB_NETWORK;\n    const device = transferedBytesToGb * EMBODIED_KWH_PER_GB_DEVICE;\n    return {\n      dataCenter,\n      network,\n      device\n    };\n  }\n  embodiedEmissions(bytes) {\n    const { dataCenter, network, device } = this.embodiedEnergyPerSegment(bytes);\n    const dataCenterGridIntensity = GLOBAL_GRID_INTENSITY;\n    const networkGridIntensity = GLOBAL_GRID_INTENSITY;\n    const deviceGridIntensity = GLOBAL_GRID_INTENSITY;\n    const dataCenterEmissions = dataCenter * dataCenterGridIntensity;\n    const networkEmissions = network * networkGridIntensity;\n    const deviceEmissions = device * deviceGridIntensity;\n    return {\n      dataCenter: dataCenterEmissions,\n      network: networkEmissions,\n      device: deviceEmissions\n    };\n  }\n  perByte(bytes, green = false, segmented = false, ratingResults = false, options = {}) {\n    if (bytes < 1) {\n      return 0;\n    }\n    const operationalEmissions = this.operationalEmissions(bytes, options);\n    const embodiedEmissions = this.embodiedEmissions(bytes);\n    const greenHostingFactor = getGreenHostingFactor(green, options);\n    const totalEmissions = {\n      dataCenter: operationalEmissions.dataCenter * (1 - greenHostingFactor) + embodiedEmissions.dataCenter,\n      network: operationalEmissions.network + embodiedEmissions.network,\n      device: operationalEmissions.device + embodiedEmissions.device\n    };\n    const total = totalEmissions.dataCenter + totalEmissions.network + totalEmissions.device;\n    let rating = null;\n    if (ratingResults) {\n      rating = this.ratingScale(total);\n    }\n    if (segmented) {\n      const segments = __spreadValues({}, outputSegments(operationalEmissions, embodiedEmissions));\n      if (ratingResults) {\n        return __spreadProps(__spreadValues({}, segments), {\n          total,\n          rating\n        });\n      }\n      return __spreadProps(__spreadValues({}, segments), { total });\n    }\n    if (ratingResults) {\n      return { total, rating };\n    }\n    return total;\n  }\n  perVisit(bytes, green = false, segmented = false, ratingResults = false, options = {}) {\n    let firstViewRatio = 1;\n    let returnViewRatio = 0;\n    let dataReloadRatio = 0;\n    const greenHostingFactor = getGreenHostingFactor(green, options);\n    const operationalEmissions = this.operationalEmissions(bytes, options);\n    const embodiedEmissions = this.embodiedEmissions(bytes);\n    if (bytes < 1) {\n      return 0;\n    }\n    if (options.firstVisitPercentage || options.firstVisitPercentage === 0) {\n      firstViewRatio = options.firstVisitPercentage;\n    }\n    if (options.returnVisitPercentage || options.returnVisitPercentage === 0) {\n      returnViewRatio = options.returnVisitPercentage;\n    }\n    if (options.dataReloadRatio || options.dataReloadRatio === 0) {\n      dataReloadRatio = options.dataReloadRatio;\n    }\n    const firstVisitEmissions = operationalEmissions.dataCenter * (1 - greenHostingFactor) + embodiedEmissions.dataCenter + operationalEmissions.network + embodiedEmissions.network + operationalEmissions.device + embodiedEmissions.device;\n    const returnVisitEmissions = (operationalEmissions.dataCenter * (1 - greenHostingFactor) + embodiedEmissions.dataCenter + operationalEmissions.network + embodiedEmissions.network + operationalEmissions.device + embodiedEmissions.device) * (1 - dataReloadRatio);\n    const total = firstVisitEmissions * firstViewRatio + returnVisitEmissions * returnViewRatio;\n    let rating = null;\n    if (ratingResults) {\n      rating = this.ratingScale(total);\n    }\n    if (segmented) {\n      const segments = __spreadProps(__spreadValues({}, outputSegments(operationalEmissions, embodiedEmissions)), {\n        firstVisitCO2e: firstVisitEmissions,\n        returnVisitCO2e: returnVisitEmissions\n      });\n      if (ratingResults) {\n        return __spreadProps(__spreadValues({}, segments), {\n          total,\n          rating\n        });\n      }\n      return __spreadProps(__spreadValues({}, segments), { total });\n    }\n    if (ratingResults) {\n      return { total, rating };\n    }\n    return total;\n  }\n  ratingScale(co2e) {\n    return outputRating(co2e, this.version);\n  }\n}\nvar sustainable_web_design_v4_default = SustainableWebDesign;\nexport {\n  SustainableWebDesign,\n  sustainable_web_design_v4_default as default\n};\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __objRest = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nimport OneByte from \"./1byte.js\";\nimport SustainableWebDesignV3 from \"./sustainable-web-design-v3.js\";\nimport SustainableWebDesignV4 from \"./sustainable-web-design-v4.js\";\nimport {\n  parseByteTraceOptions,\n  parseVisitTraceOptions\n} from \"./helpers/index.js\";\nclass CO2 {\n  constructor(options) {\n    this.model = new SustainableWebDesignV3();\n    if ((options == null ? void 0 : options.model) === \"1byte\") {\n      this.model = new OneByte();\n    } else if ((options == null ? void 0 : options.model) === \"swd\") {\n      this.model = new SustainableWebDesignV3();\n      if ((options == null ? void 0 : options.version) === 4) {\n        this.model = new SustainableWebDesignV4();\n      }\n    } else if (options == null ? void 0 : options.model) {\n      throw new Error(\n        `\"${options.model}\" is not a valid model. Please use \"1byte\" for the OneByte model, and \"swd\" for the Sustainable Web Design model.\nSee https://developers.thegreenwebfoundation.org/co2js/models/ to learn more about the models available in CO2.js.`\n      );\n    }\n    if ((options == null ? void 0 : options.rating) && typeof options.rating !== \"boolean\") {\n      throw new Error(\n        `The rating option must be a boolean. Please use true or false.\nSee https://developers.thegreenwebfoundation.org/co2js/options/ to learn more about the options available in CO2.js.`\n      );\n    }\n    const allowRatings = !!this.model.allowRatings;\n    this._segment = (options == null ? void 0 : options.results) === \"segment\";\n    this._rating = (options == null ? void 0 : options.rating) === true;\n    if (!allowRatings && this._rating) {\n      throw new Error(\n        `The rating system is not supported in the model you are using. Try using the Sustainable Web Design model instead.\nSee https://developers.thegreenwebfoundation.org/co2js/models/ to learn more about the models available in CO2.js.`\n      );\n    }\n  }\n  perByte(bytes, green = false) {\n    return this.model.perByte(bytes, green, this._segment, this._rating);\n  }\n  perVisit(bytes, green = false) {\n    var _a;\n    if ((_a = this.model) == null ? void 0 : _a.perVisit) {\n      return this.model.perVisit(bytes, green, this._segment, this._rating);\n    } else {\n      throw new Error(\n        `The perVisit() method is not supported in the model you are using. Try using perByte() instead.\nSee https://developers.thegreenwebfoundation.org/co2js/methods/ to learn more about the methods available in CO2.js.`\n      );\n    }\n  }\n  perByteTrace(bytes, green = false, options = {}) {\n    const adjustments = parseByteTraceOptions(\n      options,\n      this.model.version,\n      green\n    );\n    const _a = adjustments, { gridIntensity } = _a, traceVariables = __objRest(_a, [\"gridIntensity\"]);\n    const _b = traceVariables, {\n      dataReloadRatio,\n      firstVisitPercentage,\n      returnVisitPercentage\n    } = _b, otherVariables = __objRest(_b, [\n      \"dataReloadRatio\",\n      \"firstVisitPercentage\",\n      \"returnVisitPercentage\"\n    ]);\n    return {\n      co2: this.model.perByte(\n        bytes,\n        green,\n        this._segment,\n        this._rating,\n        adjustments\n      ),\n      green,\n      variables: __spreadValues({\n        description: \"Below are the variables used to calculate this CO2 estimate.\",\n        bytes,\n        gridIntensity: __spreadValues({\n          description: \"The grid intensity (grams per kilowatt-hour) used to calculate this CO2 estimate.\"\n        }, adjustments.gridIntensity)\n      }, otherVariables)\n    };\n  }\n  perVisitTrace(bytes, green = false, options = {}) {\n    var _a;\n    if ((_a = this.model) == null ? void 0 : _a.perVisit) {\n      const adjustments = parseVisitTraceOptions(\n        options,\n        this.model.version,\n        green\n      );\n      const _b = adjustments, { gridIntensity } = _b, variables = __objRest(_b, [\"gridIntensity\"]);\n      return {\n        co2: this.model.perVisit(\n          bytes,\n          green,\n          this._segment,\n          this._rating,\n          adjustments\n        ),\n        green,\n        variables: __spreadValues({\n          description: \"Below are the variables used to calculate this CO2 estimate.\",\n          bytes,\n          gridIntensity: __spreadValues({\n            description: \"The grid intensity (grams per kilowatt-hour) used to calculate this CO2 estimate.\"\n          }, adjustments.gridIntensity)\n        }, variables)\n      };\n    } else {\n      throw new Error(\n        `The perVisitTrace() method is not supported in the model you are using. Try using perByte() instead.\nSee https://developers.thegreenwebfoundation.org/co2js/methods/ to learn more about the methods available in CO2.js.`\n      );\n    }\n  }\n  SustainableWebDesignV3() {\n    return new SustainableWebDesignV3();\n  }\n  SustainableWebDesignV4() {\n    return new SustainableWebDesignV4();\n  }\n  OneByte() {\n    return new OneByte();\n  }\n}\nvar co2_default = CO2;\nexport {\n  CO2,\n  co2_default as default\n};\n","var __getOwnPropNames = Object.getOwnPropertyNames;\nvar __commonJS = (cb, mod) => function __require() {\n  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar require_hosting_json = __commonJS({\n  \"src/hosting-json.js\"(exports, module) {\n    async function check(domain, db) {\n      if (typeof domain === \"string\") {\n        return checkInJSON(domain, db);\n      } else {\n        return checkDomainsInJSON(domain, db);\n      }\n    }\n    function checkInJSON(domain, db) {\n      if (db.indexOf(domain) > -1) {\n        return true;\n      }\n      return false;\n    }\n    function greenDomainsFromResults(greenResults) {\n      const entries = Object.entries(greenResults);\n      const greenEntries = entries.filter(([key, val]) => val.green);\n      return greenEntries.map(([key, val]) => val.url);\n    }\n    function checkDomainsInJSON(domains, db) {\n      let greenDomains = [];\n      for (let domain of domains) {\n        if (db.indexOf(domain) > -1) {\n          greenDomains.push(domain);\n        }\n      }\n      return greenDomains;\n    }\n    function find(domain, db) {\n      if (typeof domain === \"string\") {\n        return findInJSON(domain, db);\n      } else {\n        return findDomainsInJSON(domain, db);\n      }\n    }\n    function findInJSON(domain, db) {\n      if (db.indexOf(domain) > -1) {\n        return domain;\n      }\n      return {\n        url: domain,\n        green: false\n      };\n    }\n    function findDomainsInJSON(domains, db) {\n      const result = {};\n      for (let domain of domains) {\n        result[domain] = findInJSON(domain, db);\n      }\n      return result;\n    }\n    module.exports = {\n      check,\n      greenDomainsFromResults,\n      find\n    };\n  }\n});\nexport default require_hosting_json();\n","import { getApiRequestHeaders } from \"./helpers/index.js\";\nimport hostingJSON from \"./hosting-json.js\";\nfunction check(domain, optionsOrAgentId) {\n  const options = typeof optionsOrAgentId === \"string\" ? { userAgentIdentifier: optionsOrAgentId } : optionsOrAgentId;\n  if ((options == null ? void 0 : options.db) && options.verbose) {\n    throw new Error(\"verbose mode cannot be used with a local lookup database\");\n  }\n  if (typeof domain === \"string\") {\n    return checkAgainstAPI(domain, options);\n  } else {\n    return checkDomainsAgainstAPI(domain, options);\n  }\n}\nasync function checkAgainstAPI(domain, options = {}) {\n  const req = await fetch(\n    `https://api.thegreenwebfoundation.org/greencheck/${domain}`,\n    {\n      headers: getApiRequestHeaders(options.userAgentIdentifier)\n    }\n  );\n  if (options == null ? void 0 : options.db) {\n    return hostingJSON.check(domain, options.db);\n  }\n  const res = await req.json();\n  return options.verbose ? res : res.green;\n}\nasync function checkDomainsAgainstAPI(domains, options = {}) {\n  try {\n    const apiPath = \"https://api.thegreenwebfoundation.org/v2/greencheckmulti\";\n    const domainsString = JSON.stringify(domains);\n    const req = await fetch(`${apiPath}/${domainsString}`, {\n      headers: getApiRequestHeaders(options.userAgentIdentifier)\n    });\n    const allGreenCheckResults = await req.json();\n    return options.verbose ? allGreenCheckResults : greenDomainsFromResults(allGreenCheckResults);\n  } catch (e) {\n    return options.verbose ? {} : [];\n  }\n}\nfunction greenDomainsFromResults(greenResults) {\n  const entries = Object.entries(greenResults);\n  const greenEntries = entries.filter(([key, val]) => val.green);\n  return greenEntries.map(([key, val]) => val.url);\n}\nvar hosting_api_default = {\n  check\n};\nexport {\n  hosting_api_default as default\n};\n","import hostingAPI from \"./hosting-api.js\";\nfunction check(domain, optionsOrAgentId) {\n  return hostingAPI.check(domain, optionsOrAgentId);\n}\nvar hosting_default = check;\nexport {\n  hosting_default as default\n};\n","const data = { \"AFG\": \"414\", \"ALB\": \"0\", \"DZA\": \"528\", \"ASM\": \"753\", \"AND\": \"188\", \"AGO\": \"1476\", \"AIA\": \"753\", \"ATG\": \"753\", \"ARG\": \"478\", \"ARM\": \"390\", \"ABW\": \"753\", \"AUS\": \"808\", \"AUT\": \"242\", \"AZE\": \"534\", \"AZORES (PORTUGAL)\": \"753\", \"BHS\": \"753\", \"BHR\": \"726\", \"BGD\": \"528\", \"BRB\": \"749\", \"BLR\": \"400\", \"BEL\": \"252\", \"BLZ\": \"403\", \"BEN\": \"745\", \"BMU\": \"753\", \"BTN\": \"0\", \"BOL\": \"604\", \"BES\": \"753\", \"BIH\": \"1197\", \"BWA\": \"1486\", \"BRA\": \"284\", \"VGB\": \"753\", \"BRN\": \"681\", \"BGR\": \"911\", \"BFA\": \"753\", \"BDI\": \"414\", \"KHM\": \"1046\", \"CMR\": \"659\", \"CAN\": \"372\", \"CYM\": \"753\", \"CPV\": \"753\", \"CAF\": \"188\", \"TCD\": \"753\", \"CHANNEL ISLANDS (U.K)\": \"753\", \"CHL\": \"657\", \"CHN\": \"899\", \"COL\": \"410\", \"COM\": \"753\", \"COD\": \"0\", \"COG\": \"659\", \"COK\": \"753\", \"CRI\": \"108\", \"CIV\": \"466\", \"HRV\": \"294\", \"CUB\": \"559\", \"CUW\": \"876\", \"CYP\": \"751\", \"CZE\": \"902\", \"DNK\": \"362\", \"DJI\": \"753\", \"DMA\": \"753\", \"DOM\": \"601\", \"ECU\": \"560\", \"EGY\": \"554\", \"SLV\": \"547\", \"GNQ\": \"632\", \"ERI\": \"915\", \"EST\": \"1057\", \"SWZ\": \"0\", \"ETH\": \"0\", \"FLK\": \"753\", \"FRO\": \"753\", \"FJI\": \"640\", \"FIN\": \"267\", \"FRA\": \"158\", \"GUF\": \"423\", \"PYF\": \"753\", \"GAB\": \"946\", \"GMB\": \"753\", \"GEO\": \"289\", \"DEU\": \"650\", \"GHA\": \"495\", \"GIB\": \"779\", \"GRC\": \"507\", \"GRL\": \"264\", \"GRD\": \"753\", \"GLP\": \"753\", \"GUM\": \"753\", \"GTM\": \"798\", \"GIN\": \"753\", \"GNB\": \"753\", \"GUY\": \"847\", \"HTI\": \"1048\", \"HND\": \"662\", \"HUN\": \"296\", \"ISL\": \"0\", \"IND\": \"951\", \"IDN\": \"783\", \"IRN\": \"592\", \"IRQ\": \"1080\", \"IRL\": \"380\", \"IMN\": \"436\", \"ISR\": \"394\", \"ITA\": \"414\", \"JAM\": \"711\", \"JPN\": \"471\", \"JOR\": \"529\", \"KAZ\": \"797\", \"KEN\": \"574\", \"KIR\": \"753\", \"PRK\": \"754\", \"KOR\": \"555\", \"XKX\": \"1145\", \"KWT\": \"675\", \"KGZ\": \"217\", \"LAO\": \"1069\", \"LVA\": \"240\", \"LBN\": \"794\", \"LSO\": \"0\", \"LBR\": \"677\", \"LBY\": \"668\", \"LIE\": \"151\", \"LTU\": \"211\", \"LUX\": \"220\", \"MDG\": \"876\", \"MADEIRA (PORTUGAL)\": \"663\", \"MWI\": \"489\", \"MYS\": \"551\", \"MDV\": \"753\", \"MLI\": \"1076\", \"MLT\": \"520\", \"MHL\": \"753\", \"MTQ\": \"753\", \"MRT\": \"753\", \"MUS\": \"700\", \"MYT\": \"753\", \"MEX\": \"531\", \"FSM\": \"753\", \"MDA\": \"541\", \"MCO\": \"158\", \"MNG\": \"1366\", \"MNE\": \"899\", \"MSR\": \"753\", \"MAR\": \"729\", \"MOZ\": \"234\", \"MMR\": \"719\", \"NAM\": \"355\", \"NRU\": \"753\", \"NPL\": \"0\", \"NLD\": \"326\", \"NCL\": \"779\", \"NZL\": \"246\", \"NIC\": \"675\", \"NER\": \"772\", \"NGA\": \"526\", \"NIU\": \"753\", \"MKD\": \"851\", \"MNP\": \"753\", \"NOR\": \"47\", \"OMN\": \"479\", \"PAK\": \"592\", \"PLW\": \"753\", \"PSE\": \"719\", \"PAN\": \"477\", \"PNG\": \"597\", \"PRY\": \"0\", \"PER\": \"473\", \"PHL\": \"672\", \"POL\": \"828\", \"PRT\": \"389\", \"PRI\": \"596\", \"QAT\": \"503\", \"REU\": \"772\", \"ROU\": \"489\", \"RUS\": \"476\", \"RWA\": \"712\", \"SHN\": \"753\", \"KNA\": \"753\", \"LCA\": \"753\", \"MAF\": \"753\", \"SPM\": \"753\", \"VCT\": \"753\", \"WSM\": \"753\", \"SMR\": \"414\", \"STP\": \"753\", \"SAU\": \"592\", \"SEN\": \"870\", \"SRB\": \"1086\", \"SYC\": \"753\", \"SLE\": \"489\", \"SGP\": \"379\", \"SXM\": \"753\", \"SVK\": \"332\", \"SVN\": \"620\", \"SLB\": \"753\", \"SOM\": \"753\", \"ZAF\": \"1070\", \"SSD\": \"890\", \"ESP\": \"402\", \"LKA\": \"731\", \"SDN\": \"736\", \"SUR\": \"1029\", \"SWE\": \"68\", \"CHE\": \"48\", \"SYR\": \"713\", \"TWN\": \"484\", \"TJK\": \"255\", \"TZA\": \"531\", \"THA\": \"450\", \"TLS\": \"753\", \"TGO\": \"859\", \"TON\": \"753\", \"TTO\": \"559\", \"TUN\": \"468\", \"TUR\": \"376\", \"TKM\": \"927\", \"TCA\": \"753\", \"TUV\": \"753\", \"UGA\": \"279\", \"UKR\": \"768\", \"ARE\": \"556\", \"GBR\": \"380\", \"USA\": \"416\", \"URY\": \"174\", \"UZB\": \"612\", \"VUT\": \"753\", \"VEN\": \"711\", \"VNM\": \"560\", \"VIR\": \"650\", \"YEM\": \"807\", \"ZMB\": \"416\", \"ZWE\": \"1575\", \"MEMO:  EU 27\": \"409\" };\nconst type = \"marginal\";\nconst year = \"2021\";\nvar marginal_intensities_2021_min_default = { data, type, year };\nexport {\n  data,\n  marginal_intensities_2021_min_default as default,\n  type,\n  year\n};\n","import co2 from \"./co2.js\";\nimport hosting from \"./hosting.js\";\nimport averageIntensity from \"./data/average-intensities.min.js\";\nimport marginalIntensity from \"./data/marginal-intensities-2021.min.js\";\nvar src_default = { co2, hosting, averageIntensity, marginalIntensity };\nexport {\n  averageIntensity,\n  co2,\n  src_default as default,\n  hosting,\n  marginalIntensity\n};\n","import tgwf from '@tgwf/co2';\r\n\r\nexport default class CarbonMeter {\r\n\r\n    #listner = (totalEmission, estimatedCO2) => { };\r\n    #location = 'de';\r\n    #co2 = undefined;\r\n    #totalEmissionsCacheEntry = new CacheEntry(window.sessionStorage, \"carbonMeter.totalEmission\", Number.MAX_SAFE_INTEGER);\r\n    #carbonIntensityCacheEntry;\r\n    #forecastDataCacheEntry;\r\n\r\n    constructor(location) {\r\n        if (location) {\r\n            this.#location = location;\r\n            console.info(`CarbonMeter: Choose '${location}' for gathering grid carbon intensity`);\r\n        }\r\n        this.#co2 = new tgwf.co2({ model: \"swd\", version: 4 });\r\n        let tenMinutes = 600000;\r\n        let fourHours = 14400000;\r\n        this.#carbonIntensityCacheEntry = new CacheEntry(window.sessionStorage, `carbonMeter.${location}.carbonIntensity`, tenMinutes);\r\n        this.#forecastDataCacheEntry = new CacheEntry(window.localStorage, `carbonMeter.${location}.forecastData`, fourHours);\r\n    }\r\n\r\n    start() {\r\n        setTimeout(() => {\r\n            this.#startMetering();\r\n        }, 1);\r\n    }\r\n\r\n    /**\r\n     * Registers a listener function to handle metering data.\r\n     *\r\n     * @param {function(number, number): void} listnerFunc - The listener function that will be called with the total CO2 emissions and the estimated CO2 emissions for the current metering event.\r\n     */\r\n    onMetering(listnerFunc) {\r\n        this.#listner = listnerFunc;\r\n\r\n    }\r\n\r\n    async #startMetering() {\r\n        await this.#getEmissionsFromBrowserRessources();\r\n        await this.#observerEmissionsFromBackgroundTransfer();\r\n    }\r\n\r\n    async #observerEmissionsFromBackgroundTransfer() {\r\n        let carbonIntensity = await this.#getCarbonIntensity();\r\n        const observer = new PerformanceObserver((list) => {\r\n            setTimeout(() => {                \r\n                for (const entry of list.getEntries()) {\r\n                    if (entry.initiatorType === \"fetch\" || entry.initiatorType === \"xmlhttprequest\" || entry.initiatorType === \"img\" || entry.initiatorType === \"script\" ) {\r\n                        let bytesSent = entry.transferSize;\r\n                        this.#calculateAndReportEmissions(\"From Background\",bytesSent, carbonIntensity);\r\n                        console.debug(`${entry.initiatorType}: Count ${bytesSent} bytes in background from ${entry.name}`);\r\n                    }\r\n                }\r\n            }, 1);\r\n\r\n        });\r\n\r\n        observer.observe({\r\n            entryTypes: [\"resource\"]\r\n        });\r\n    }\r\n    async #getEmissionsFromBrowserRessources() {\r\n        let carbonIntensity = await this.#getCarbonIntensity();\r\n        let bytesSent = this.#getTransferSize();\r\n        this.#calculateAndReportEmissions(\"From Browser\", bytesSent, carbonIntensity);\r\n    }\r\n    #calculateAndReportEmissions(context, bytesTransfered, carbonIntensity) {\r\n        let result = this.#co2.perByteTrace(\r\n            bytesTransfered,\r\n            false,\r\n            {\r\n                gridIntensity: {\r\n                    device: carbonIntensity,\r\n                    dataCenter: carbonIntensity,\r\n                    networks: carbonIntensity,\r\n                }\r\n            }\r\n        )        \r\n        let estimatedCO2 = parseFloat(result.co2.toFixed(2));\r\n        console.debug(`Report: ${context}, Bytes transfered: ${bytesTransfered}, Grid intensity: ${carbonIntensity}, Carbon: ${estimatedCO2}`);\r\n        this.#reportEmissions(estimatedCO2);\r\n    }\r\n    #reportEmissions(estimatedCO2) {\r\n        let totalEmission = parseFloat(this.#totalEmissionsCacheEntry.getItem());\r\n\r\n        if (totalEmission) {\r\n            totalEmission += estimatedCO2;\r\n        }\r\n        else {\r\n            totalEmission = estimatedCO2;\r\n        }\r\n        this.#totalEmissionsCacheEntry.setItem(totalEmission);\r\n        if (this.#listner) {\r\n            this.#listner(totalEmission, estimatedCO2);\r\n        }\r\n\r\n    }\r\n    #getTransferSize = () => {\r\n        let totalTransferSize = 0;\r\n\r\n        performance.getEntriesByType('resource').map((resource) => {\r\n            const data = resource.toJSON();\r\n            totalTransferSize += data.transferSize;\r\n            console.debug(`Count ${data.transferSize} bytes in browser from ${data.name}`);\r\n        });\r\n        performance.getEntriesByType('navigation').map((resource) => {\r\n            const data = resource.toJSON();\r\n            totalTransferSize += data.transferSize;\r\n            console.debug(`Count ${data.transferSize} bytes in browser from ${data.name}`);\r\n        });\r\n\r\n        return totalTransferSize;\r\n    };\r\n    #calculateCarbonIntensityFromForecast(forecastJson) {\r\n        let forecast = JSON.parse(forecastJson);\r\n        let start = forecast.Start;\r\n        let intervall = forecast.Interval;\r\n        let ratings = forecast.Ratings;\r\n        let now = Date.now();\r\n        let currentIndex = Math.round((now - start) / intervall);\r\n        if (currentIndex >= 0 && currentIndex < ratings.length) {\r\n            let rating = ratings[currentIndex];\r\n            console.debug(`Current Grid CO2 Intensity: ${rating}`);\r\n            return rating;\r\n        }\r\n        return null;\r\n    }\r\n    async #getCarbonIntensity() {\r\n        let carbonIntensity = parseFloat(this.#carbonIntensityCacheEntry.getItem());\r\n        if (carbonIntensity === undefined || Number.isNaN(carbonIntensity)) {\r\n            let forecastDataJson = this.#forecastDataCacheEntry.getItem();\r\n            if (forecastDataJson === undefined) {\r\n                let forecastData = await this.#getForcastFromServer();\r\n                forecastDataJson = JSON.stringify(forecastData)\r\n                this.#forecastDataCacheEntry.setItem(forecastDataJson);\r\n            }\r\n            carbonIntensity = this.#calculateCarbonIntensityFromForecast(forecastDataJson);\r\n            if (carbonIntensity) {\r\n                this.#carbonIntensityCacheEntry.setItem(carbonIntensity);\r\n            }\r\n        }\r\n        return carbonIntensity;\r\n\r\n    }\r\n    async #getForcastFromServer() {\r\n        let forecast = await this.#fetchData(this.#location);\r\n        return forecast;\r\n    }\r\n    async #fetchData(location) {\r\n        let response = await fetch(`https://carbonawarecomputing.blob.core.windows.net/forecasts/${location}.min.json`);\r\n        let data = await response.json();\r\n        return data;\r\n\r\n    }\r\n}\r\n\r\nclass CacheEntry {\r\n    #keyName;\r\n    #dueKeyName;\r\n    #due;\r\n    #cacheProvider;\r\n    constructor(cacheProvider, keyName, dueInMiliSeconds) {\r\n        this.#due = dueInMiliSeconds;\r\n        this.#keyName = keyName;\r\n        this.#dueKeyName = keyName + \".Updated\"\r\n        this.#cacheProvider = cacheProvider;\r\n    }\r\n\r\n    getItem() {\r\n        let item = this.#cacheProvider.getItem(this.#keyName);\r\n        if (item) {\r\n            let lastUpdate = parseInt(this.#cacheProvider.getItem(this.#dueKeyName));\r\n            if (lastUpdate + this.#due > Date.now()) {\r\n                return item;\r\n            }\r\n        }\r\n        return undefined;\r\n    }\r\n    setItem(value) {\r\n        this.#cacheProvider.setItem(this.#keyName, value);\r\n        this.#cacheProvider.setItem(this.#dueKeyName, Date.now());\r\n    }\r\n\r\n}"],"names":["KWH_PER_BYTE_FOR_NETWORK","OneByte","options","bytes","green","Co2ForDC","Co2forNetwork","KwHPerByte","byte_default","file_size_default","average_intensities_min_default","KWH_PER_GB","END_USER_DEVICE_ENERGY","NETWORK_ENERGY","DATACENTER_ENERGY","PRODUCTION_ENERGY","GLOBAL_GRID_INTENSITY","averageIntensity","RENEWABLES_GRID_INTENSITY","FIRST_TIME_VIEWING_PERCENTAGE","RETURNING_VISITOR_PERCENTAGE","PERCENTAGE_OF_DATA_LOADED_ON_SUBSEQUENT_LOAD","SWDV4","SWDMV3_RATINGS","SWDMV4_RATINGS","SWDM4_GLOBAL_GRID_INTENSITY","formatNumber","num","lessThanEqualTo","limit","parseByteTraceOptions","version","globalGridIntensity","SWDM3_GLOBAL_GRID_INTENSITY","adjustments","setIntensity","segment","segmentIntensity","_a","_b","device","dataCenter","network","parseVisitTraceOptions","getApiRequestHeaders","comment","outputRating","co2e","swdmVersion","FIFTH_PERCENTILE","TENTH_PERCENTILE","TWENTIETH_PERCENTILE","THIRTIETH_PERCENTILE","FORTIETH_PERCENTILE","FIFTIETH_PERCENTILE","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","__spreadProps","sustainable_web_design_v3_default","energyUsage","fileSize","energyByComponent","carbonIntensity","deviceCarbonIntensity","networkCarbonIntensity","dataCenterCarbonIntensity","globalEmissions","returnCO2ByComponent","segmentResults","ratingResults","energyBycomponent","co2ValuesbyComponent","co2ValuesSum","prevValue","currentValue","rating","firstView","returnView","dataReloadRatio","cacheAdjustedSegmentEnergy","firstVisits","subsequentVisits","val","energyPerVisit","carbonintensity","monthlyVisitors","co2grams","annualEnergy","OPERATIONAL_KWH_PER_GB_DATACENTER","OPERATIONAL_KWH_PER_GB_NETWORK","OPERATIONAL_KWH_PER_GB_DEVICE","EMBODIED_KWH_PER_GB_DATACENTER","EMBODIED_KWH_PER_GB_NETWORK","EMBODIED_KWH_PER_GB_DEVICE","outputSegments","operationalEmissions","embodiedEmissions","totalOperationalCO2e","totalEmbodiedCO2e","dataCenterCO2e","networkCO2e","consumerDeviceCO2e","getGreenHostingFactor","SustainableWebDesign","transferedBytesToGb","dataCenterGridIntensity","networkGridIntensity","deviceGridIntensity","device2","network2","dataCenter2","dataCenterEmissions","networkEmissions","deviceEmissions","segmented","greenHostingFactor","totalEmissions","total","segments","firstViewRatio","returnViewRatio","firstVisitEmissions","returnVisitEmissions","sustainable_web_design_v4_default","__objRest","source","exclude","target","CO2","SustainableWebDesignV3","SustainableWebDesignV4","allowRatings","otherVariables","variables","co2_default","__getOwnPropNames","__commonJS","cb","mod","require_hosting_json","exports","module","check","domain","db","checkInJSON","checkDomainsInJSON","greenDomainsFromResults","greenResults","domains","greenDomains","find","findInJSON","findDomainsInJSON","result","hostingJSON","optionsOrAgentId","checkAgainstAPI","checkDomainsAgainstAPI","req","res","apiPath","domainsString","allGreenCheckResults","hosting_api_default","hostingAPI","hosting_default","marginal_intensities_2021_min_default","src_default","co2","hosting","marginalIntensity","CarbonMeter","location","__privateAdd","_CarbonMeter_instances","_listner","totalEmission","estimatedCO2","_location","_co2","_totalEmissionsCacheEntry","CacheEntry","_carbonIntensityCacheEntry","_forecastDataCacheEntry","_getTransferSize","totalTransferSize","resource","data","__privateSet","tgwf","tenMinutes","fourHours","__privateMethod","startMetering_fn","listnerFunc","getEmissionsFromBrowserRessources_fn","observerEmissionsFromBackgroundTransfer_fn","getCarbonIntensity_fn","list","entry","bytesSent","calculateAndReportEmissions_fn","__privateGet","context","bytesTransfered","reportEmissions_fn","calculateCarbonIntensityFromForecast_fn","forecastJson","forecast","start","intervall","ratings","now","currentIndex","forecastDataJson","forecastData","getForcastFromServer_fn","fetchData_fn","cacheProvider","keyName","dueInMiliSeconds","_keyName","_dueKeyName","_due","_cacheProvider","item"],"mappings":"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,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,OAAQ,IAAO,IAAK,IAAO,IAAK,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,OAAQ,IAAO,MAAO,IAAO,MAAO,IAAO,IAAK,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,OAAQ,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,OAAQ,IAAO,MAAO,IAAO,MAAO,IAAO,OAAQ,IAAO,MAAO,IAAO,MAAO,IAAO,IAAK,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,qBAAsB,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,OAAQ,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,OAAQ,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,IAAK,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,KAAM,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,IAAK,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IAAO,MAAO,IA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12]}