diff --git a/.env.example b/.env.example index ada816b1..a67e35fe 100644 --- a/.env.example +++ b/.env.example @@ -6,3 +6,4 @@ FIREWORKS_API_KEY= FIRECRAWL_API_KEY= GROQ_API_KEY= TOGETHER_API_KEY= +AIML_API_KEY= diff --git a/README.md b/README.md index 4340d7db..5e9465bb 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ Example code and guides for building with [E2B SDK](https://github.com/e2b-dev/e Read more about E2B on the [E2B website](https://e2b.dev) and the official [E2B documentation](https://e2b.dev/docs). +E2B works with any LLM that supports tool use. You can connect providers like OpenAI, Anthropic, Mistral, Groq, or custom OpenAI-compatible APIs such as the [AI/ML API](https://aimlapi.com/app/?utm_source=e2b&utm_medium=github&utm_campaign=integration). + ## Examples **Hello World guide** @@ -112,6 +114,13 @@ Read more about E2B on the [E2B website](https://e2b.dev) and the official [E2B Python TypeScript + + AI/ML API + 300+ models + OpenAI-compatible API + Python + TypeScript + diff --git a/examples/aimlapi-js/.env.template b/examples/aimlapi-js/.env.template new file mode 100644 index 00000000..05abb829 --- /dev/null +++ b/examples/aimlapi-js/.env.template @@ -0,0 +1,3 @@ +# API keys for running the example +AIML_API_KEY=your_aimlapi_api_key_here +E2B_API_KEY=your_e2b_api_key_here diff --git a/examples/aimlapi-js/.gitignore b/examples/aimlapi-js/.gitignore new file mode 100644 index 00000000..2a46c411 --- /dev/null +++ b/examples/aimlapi-js/.gitignore @@ -0,0 +1,4 @@ +.env +node_modules +.eslintcache +.eslintrc.json \ No newline at end of file diff --git a/examples/aimlapi-js/README.md b/examples/aimlapi-js/README.md new file mode 100644 index 00000000..4ca93822 --- /dev/null +++ b/examples/aimlapi-js/README.md @@ -0,0 +1,67 @@ +# AI Code Execution with AI/ML API and E2B + +This example demonstrates how to run LLM-generated Python code using the [AI/ML API](https://aimlapi.com/app/?utm_source=e2b&utm_medium=github&utm_campaign=integration) and [E2B Code Interpreter SDK](https://e2b.dev). + +The AI performs a data analysis task on an uploaded CSV file, generates Python code with an AI/ML API model, and executes the code inside a sandboxed environment using E2B. + +--- + +## 🔧 Setup + +### 1. Install dependencies + +```bash +npm install +```` + +### 2. Setup environment + +Create `.env` file: + +```bash +cp .env.template .env +``` + +Then set your: + +* `AIML_API_KEY`: Get it at [https://aimlapi.com/app/keys](https://aimlapi.com/app/keys/?utm_source=e2b&utm_medium=github&utm_campaign=integration) +* `E2B_API_KEY`: Get it at [https://e2b.dev/docs/getting-started/api-key](https://e2b.dev/docs/getting-started/api-key) + +### 3. Run + +```bash +npm run start +``` + +You will see: + +* The dataset gets uploaded +* Prompt sent to the model +* Code generated and executed in the cloud +* A result saved as `image_1.png` + +![image](image_1.png) + +--- + +## 🤖 Models + +This example defaults to **`openai/gpt-5-chat-latest`** via AI/ML API. +You can switch to any OpenAI-compatible model available on AI/ML API (see the Models Directory in their docs). + +**Examples:** + +* `openai/gpt-5-chat-latest` +* `openai/gpt-4o` +* `google/gemini-1.5-flash` +* `deepseek/deepseek-chat` +* and many more + +> Ensure your API key has access to the chosen model. + +--- + +## 🧠 Learn more + +* [AI/ML API Documentation](https://docs.aimlapi.com/?utm_source=e2b&utm_medium=github&utm_campaign=integration) +* [E2B Code Interpreter Docs](https://e2b.dev/docs) diff --git a/examples/aimlapi-js/aimlapi.ts b/examples/aimlapi-js/aimlapi.ts new file mode 100644 index 00000000..c46ae123 --- /dev/null +++ b/examples/aimlapi-js/aimlapi.ts @@ -0,0 +1,197 @@ +import fs from 'node:fs' +import path from 'node:path' +import { Sandbox, Result, OutputMessage } from '@e2b/code-interpreter' +import * as dotenv from 'dotenv' +import OpenAI from 'openai' + +dotenv.config() + +const AIML_API_KEY = process.env.AIML_API_KEY || '' +const E2B_API_KEY = process.env.E2B_API_KEY || '' // required by E2B SDK + +if (!AIML_API_KEY || !E2B_API_KEY) { + console.error('Missing API key(s). Please set AIML_API_KEY and E2B_API_KEY in your .env file.') + process.exit(1) +} + +const openai = new OpenAI({ + apiKey: AIML_API_KEY, + baseURL: 'https://api.aimlapi.com/v1', +}) + +const MODEL_ID = 'openai/gpt-5-chat-latest' + +// ---------- Prompts ---------- +const SYSTEM_STRAWBERRY = ` +You are a helpful assistant that can execute python code in a Jupyter notebook. +Only respond with the code to be executed and nothing else. +Respond with a Python code block in Markdown (\`\`\`python ... \`\`\`). +` + +const PROMPT_STRAWBERRY = "Calculate how many r's are in the word 'strawberry'" + +const SYSTEM_LINEAR = ` +You're a Python data scientist. You are given tasks to complete and you run Python code to solve them. +Information about the csv dataset: +- It's in the \`/home/user/data.csv\` file +- The CSV file uses "," as the delimiter +- It contains statistical country-level data +Rules: +- ALWAYS FORMAT YOUR RESPONSE IN MARKDOWN +- RESPOND ONLY WITH PYTHON CODE INSIDE \`\`\`python ... \`\`\` BLOCKS +- You can use matplotlib/seaborn/pandas/numpy/etc. +- Code is executed in a secure Jupyter-like environment with internet access and preinstalled packages +` + +const PROMPT_LINEAR = + 'Plot a linear regression of "GDP per capita (current US$)" vs "Life expectancy at birth, total (years)" from the dataset. Drop rows with missing values.' + +// ---------- Helpers ---------- +function extractPythonCode(markdown: string): string | null { + if (!markdown) return null + + // 1) ```python ... ``` + const rePython = /```python\s*([\s\S]*?)```/i + const m1 = rePython.exec(markdown) + if (m1 && m1[1]) return m1[1].trim() + + // 2) ``` ... ``` + const reAnyFence = /```\s*([\s\S]*?)```/ + const m2 = reAnyFence.exec(markdown) + if (m2 && m2[1]) return m2[1].trim() + + // 3) Fallback: treat whole string as code if it looks python-ish + if (/import |def |print\(|len\(/.test(markdown)) return markdown.trim() + + return null +} + +async function requestCode(systemPrompt: string, userPrompt: string): Promise { + let response + try { + response = await openai.chat.completions.create( + { + model: MODEL_ID, + messages: [ + { role: 'system', content: systemPrompt }, + { role: 'user', content: userPrompt }, + ], + }, + { + headers: { + 'HTTP-Referer': 'https://github.com/e2b-dev/e2b-cookbook', + 'X-Title': 'e2b-cookbook:aimlapi-js', + }, + } + ) + } catch (err) { + throw new Error(`LLM request failed: ${String(err)}`) + } + + const content = response?.choices?.[0]?.message?.content + if (content == null) { + throw new Error('Model returned null/empty content (possibly filtered). Try adjusting the prompt.') + } + + const code = extractPythonCode(content) + if (!code) { + // Show what model returned for easier debugging + console.error('LLM response content:\n', content) + throw new Error('No Python code block found in LLM response.') + } + return code +} + +async function runCodeInSandbox(code: string): Promise<{ results: Result[]; text: string; png?: Buffer }> { + const sandbox = await Sandbox.create() + try { + const exec = await sandbox.runCode(code) + if (exec.error) throw new Error(exec.error.value) + + const results = exec.results ?? [] + const first = (results[0] ?? {}) as any + + const text = String(first?.text ?? '').trim() + + let png: Buffer | undefined + if (first?.png) { + try { + png = Buffer.from(first.png, 'base64') + } catch {} + } + + return { results, text, png } + } finally { + await sandbox.kill() + } +} + +async function uploadDatasetIfExists(sandbox: Sandbox, localPath = './data.csv', targetName = 'data.csv') { + const p = path.resolve(localPath) + if (!fs.existsSync(p)) return false + const buf = fs.readFileSync(p) + await sandbox.files.write(targetName, buf) + return true +} + +// ---------- Tests ---------- +export async function testStrawberry(): Promise { + const code = await requestCode(SYSTEM_STRAWBERRY, PROMPT_STRAWBERRY) + const { text } = await runCodeInSandbox(code) + if (!text.includes('3')) { + throw new Error(`Expected '3' in output, got: ${JSON.stringify(text)}`) + } + return text +} + +export async function testLinearRegression(imageOut = 'image_1.png'): Promise { + const code = await requestCode(SYSTEM_LINEAR, PROMPT_LINEAR) + + const sandbox = await Sandbox.create() + try { + const uploaded = await uploadDatasetIfExists(sandbox, './data.csv', 'data.csv') + if (!uploaded) { + console.warn('⚠️ data.csv not found next to aimlapi.ts — running anyway, code may fail if it expects the file.') + } + + const exec = await sandbox.runCode(code) + if (exec.error) throw new Error(exec.error.value) + + const first = (exec.results?.[0] ?? {}) as any + const text = String(first?.text ?? '').trim() + + if (first?.png) { + try { + const png = Buffer.from(first.png, 'base64') + fs.writeFileSync(imageOut, png) + console.log(`✅ Image saved as ${imageOut}`) + } catch (e) { + console.warn('⚠️ Could not save image:', e) + } + } else { + console.warn('⚠️ No image result returned.') + } + + return text + } finally { + await sandbox.kill() + } +} + +// ---------- Entry ---------- +async function main() { + console.log('=== Strawberry test ===') + const s = await testStrawberry() + console.log(PROMPT_STRAWBERRY, '->', s) + + console.log('\n=== Linear regression test ===') + const l = await testLinearRegression() + console.log('Linear regression output:\n', l) +} + +if (require.main === module) { + main().catch((e) => { + console.error('❌ Error:', e) + process.exit(1) + }) +} diff --git a/examples/aimlapi-js/data.csv b/examples/aimlapi-js/data.csv new file mode 100644 index 00000000..4a71f4c1 --- /dev/null +++ b/examples/aimlapi-js/data.csv @@ -0,0 +1,67 @@ +,country,Region,Surface area (km2),Population in thousands (2017),"Population density (per km2, 2017)","Sex ratio (m per 100 f, 2017)",GDP: Gross domestic product (million current US$),"GDP growth rate (annual %, const. 2005 prices)",GDP per capita (current US$),Economy: Agriculture (% of GVA),Economy: Industry (% of GVA),Economy: Services and other activity (% of GVA),Employment: Agriculture (% of employed),Employment: Industry (% of employed),Employment: Services (% of employed),Unemployment (% of labour force),Labour force participation (female/male pop. %),Agricultural production index (2004-2006=100),Food production index (2004-2006=100),International trade: Exports (million US$),International trade: Imports (million US$),International trade: Balance (million US$),"Balance of payments, current account (million US$)",Population growth rate (average annual %),Urban population (% of total population)_x,Urban population growth rate (average annual %),"Fertility rate, total (live births per woman)","Population age distribution (0-14 / 60+ years, %)",International migrant stock (000/% of total pop.),Refugees and others of concern to UNHCR (in thousands),Infant mortality rate (per 1000 live births,Health: Total expenditure (% of GDP),Health: Physicians (per 1000 pop.),Education: Government expenditure (% of GDP),Education: Primary gross enrol. ratio (f/m per 100 pop.),Education: Secondary gross enrol. ratio (f/m per 100 pop.),Education: Tertiary gross enrol. ratio (f/m per 100 pop.),Seats held by women in national parliaments %,Mobile-cellular subscriptions (per 100 inhabitants),Mobile-cellular subscriptions (per 100 inhabitants).1,Individuals using the Internet (per 100 inhabitants),Threatened species (number),Forested area (% of land area),CO2 emission estimates (million tons/tons per capita),"Energy production, primary (Petajoules)",Energy supply per capita (Gigajoules),"Pop. using improved drinking water (urban/rural, %)","Pop. using improved sanitation facilities (urban/rural, %)",Net Official Development Assist. received (% of GNI),Quality Of Life Index,Purchasing Power Index,Safety Index,Health Care Index,Cost of Living,Property price to income ratio,Traffic commute time index,Pollution index,Climate index,Gross Rental Yield City Center,Gross Rental Yield Outside Center,Property Price to Rent Ratio City Center,Property Price to Rent Ratio Outside Center,Mortgate as percentage of income,Affordability Index,Cost Of Living Index,Rent Index,Cost Of Living Plus Rent Index,Grocery Index,Restaurant Price Index,Local Purchasing Power Index,Access to electricity (% of population),Adjusted net national income per capita (constant 2010 US$),Age dependency ratio (% of working-age population),"Air transport, freight (million ton-km)","Air transport, passengers carried",Commercial service exports (current US$),Commercial service imports (current US$),Consumer price index (2010 = 100),Current account balance (% of GDP),Current health expenditure (% of GDP),Exports of goods and services (% of GDP),Gross domestic savings (% of GDP),High-technology exports (current US$),Human capital index (HCI) (scale 0-1),Imports of goods and services (% of GDP),"Inflation, consumer prices (annual %)","Life expectancy at birth, female (years)","Life expectancy at birth, male (years)","Life expectancy at birth, total (years)",Military expenditure (% of GDP),"Population, female","Population, male",Tax revenue (% of GDP),"Taxes on income, profits and capital gains (% of revenue)",Urban population (% of total population)_y +0,Argentina,SouthAmerica,2780400,44271,16.2,95.9,632343,2.4,14564.5,6.0,27.8,66.2,2.0,24.8,73.1,6.5,48.6/74.4,119,119,57733,55610,2124,-15944,1.0,91.8,1.0,2.3,24.9/15.4,2086.3/4.8,5.0,13.7,4.8,3.8,5.3,109.8/110.2,110.3/103.4,102.9/63.5,38.9,143.9,69.4,256,10.0,204.0/4.7,3167,85,99.0/100.0,96.2/98.3,0.01,-99,139.59,58.40,37.37,73.30,52.57,12.07,37.95,53.33,90.67,3.77,3.90,26.53,25.64,333.23,0.30,52.57,13.92,34.05,44.06,50.37,58.40,100.0,9094.367252161,56.04635544369761,305.10200000000003,16749271.0,15274156208.2134,24982416353.4138,112.887108333333,-4.84884981091141,9.12431478500366,11.2427213207093,16.0193423909208,1494147748.0,0.611,13.9806106427674,,79.726,72.92399999999999,76.372,0.856137916373543,22572521.0,21472290.0,10.955501490436301,12.9299128513563,91.749 +1,Australia,Oceania,7692060,24451,3.2,99.3,1230859,2.4,51352.2,2.5,26.5,71.1,2.7,21.2,76.1,5.5,58.4/70.7,111,111,189630,189406,224,-57746,1.5,89.4,1.5,1.9,19.0/21.0,6763.7/28.2,58.2,3.9,9.4,3.4,5.2,102.1/102.3,133.6/141.3,106.3/75.4,28.7,132.8,84.6,948,16.2,361.3/15.3,15282,222,100.0/100.0,100.0/100.0,-99,-99,176.54,101.94,57.58,74.25,80.66,9.24,34.73,24.58,72.79,4.90,5.05,20.41,19.82,70.87,1.41,80.66,42.54,62.39,76.87,77.12,101.94,100.0,43073.9671702132,52.599670595728206,1982.586170817,74257326.0,64296388330.0338,67392204900.9734,115.686784599376,-2.68999652428858,9.20594781637192,21.1932001494647,24.687192926848997,4837243928.0,0.8029999999999999,20.576799969608103,1.94864740944522,84.6,80.5,82.5,2.00796639339341,12349632.0,12252228.0,21.915858625435,64.1103056368251,85.904 +2,Austria,WesternEurope,83871,8736,106.0,96.2,376967,1.0,44117.7,1.3,28.3,70.4,4.7,25.6,69.7,6.2,54.6/65.8,108,108,145503,149299,-3795,7020,0.6,66.0,0.4,1.4,14.1/25.1,1492.4/17.5,166.4,3.3,11.2,5.2,5.5,102.2/103.7,97.6/102.4,89.2/74.3,30.6,157.4,83.9,118,46.9,58.7/6.9,505,158,100.0/100.0,100.0/100.0,-99,-99,190.37,95.66,80.75,80.91,71.52,9.66,26.27,21.90,62.13,3.63,3.78,27.55,26.46,59.08,1.69,71.52,25.86,49.64,65.86,66.94,95.66,100.0,39557.6679946118,49.6725857002038,391.26800000000003,16171640.0,66403956922.3678,55455087774.4416,113.99973674915199,1.5345140680346,10.396616905927699,54.037671021734894,28.291362874601603,17027611644.0,0.7929999999999999,50.7355052962123,2.08126858275521,84.0,79.4,81.64390243902442,0.7561790419805479,4478340.0,4319226.0,25.3552369771872,27.0240733573006,58.093999999999994 +3,Belarus,EasternEurope,207600,9468,46.7,87.0,54609,-3.9,5750.8,7.5,38.9,53.6,9.6,32.0,58.4,0.5,54.0/67.8,122,122,23414,27464,-4050,-2037,~0.0,76.7,~0.0,1.6,16.7/21.3,1082.9/11.4,7.9,3.6,5.7,4.1,4.9,101.3/101.4,106.4/107.8,100.7/75.9,34.5,123.6,62.2,25,42.5,63.5/6.7,155,122,99.9/99.1,94.1/95.2,0.20,-99,119.23,36.43,77.74,53.76,33.84,18.73,27.66,39.64,20.07,5.31,4.82,18.85,20.75,587.51,0.17,33.84,12.21,23.47,27.19,37.60,36.43,100.0,5923.22311762587,45.5244210861446,1.9151,2493100.0,7883700000.0,4820200000.0,,-1.74028732403957,5.92578575015068,66.7896002012327,29.891194365483305,687613900.0,,66.5781545217791,6.0318372517778895,79.2,69.3,74.12926829268291,1.16241694312684,5077542.0,4420722.0,13.0190056104974,2.9331006348086297,78.134 +4,Belgium,WesternEurope,30528,11429,377.5,97.3,455107,1.5,40277.8,0.7,22.2,77.1,1.2,21.2,77.6,8.3,48.1/58.9,108,107,398033,372713,25321,1936,0.6,97.9,0.5,1.8,17.1/24.6,1387.9/12.3,63.8,3.5,10.6,3.0,6.6,104.2/104.2,177.7/156.4,85.4/65.0,38.0,115.7,85.1,37,22.6,93.4/8.3,520,196,100.0/100.0,99.5/99.4,-99,-99,160.52,91.02,55.49,78.92,75.36,6.96,36.26,48.92,75.16,5.82,5.92,17.18,16.88,44.69,2.24,75.36,29.64,53.44,65.77,82.34,91.02,100.0,38493.2724438044,55.329079400808105,1574.378609,13676844.0,115167388267.646,114004179542.095,113.128902605325,1.2267750362186298,10.338669270277,82.38680624975609,25.504993086771197,34397964674.0,0.757,80.9918274558556,2.12597086002609,83.9,79.2,81.4926829268293,0.910370732936129,5766141.0,5609017.0,23.3997209593938,33.727746392633904,97.961 +5,Bosnia and Herzegovina,SouthernEurope,51209,3507,68.8,96.4,16251,3.1,4265.0,7.3,26.5,66.2,18.0,30.4,51.7,25.4,34.3/57.5,96,97,5327,9130,-3803,-923,-1.0,39.8,0.1,1.3,14.1/23.4,34.8/0.9,157.6,7.6,9.6,1.9,-99,-99,-99,-99,21.4,90.2,65.1,91,42.7,22.2/5.8,252,85,99.7/100.0,98.9/92.0,2.20,-99,139.14,51.29,59.03,61.49,35.05,11.35,26.63,60.69,73.29,3.41,3.31,29.36,30.18,104.89,0.95,35.05,6.22,21.23,29.76,24.22,51.29,100.0,5061.66690367064,43.9790668132436,,,2006406620.98605,657386055.099024,102.85158612695,-4.33992505123469,8.93166735768318,40.830587810769,1.771104673897,236675619.0,0.618,57.043590026426706,0.8101333219530471,79.581,74.622,77.128,0.906093302475231,1709258.0,1642269.0,20.2593374095498,8.22683714661225,47.876000000000005 +6,Brazil,SouthAmerica,8515767,209288,25.0,96.6,1772591,-3.8,8528.3,5.2,22.7,72.0,15.2,21.5,63.2,12.4,56.0/78.2,135,136,185235,137552,47683,-58882,0.9,85.7,1.2,1.8,21.7/12.6,713.6/0.3,41.1,15.8,8.3,1.9,6.0,113.8/116.8,102.2/97.2,59.3/42.4,10.7,126.6,59.1,990,59.2,529.8/2.6,10948,61,100.0/87.0,88.0/51.5,0.06,-99,96.15,42.38,29.38,51.70,53.07,16.96,46.39,61.17,70.76,4.01,4.02,24.92,24.85,224.60,0.45,53.07,15.52,35.07,41.65,42.33,42.38,100.0,9359.89169634609,43.450060748941794,1736.549227,96395709.0,33676596772.93,70369731833.56,155.66878623001801,-0.727859993379999,9.46747660636902,12.5230753666957,15.348823291108902,10756516887.0,0.56,11.804638359465802,3.4463733503267204,79.156,71.804,75.456,1.4195266380701699,105601740.0,102232091.0,13.615780876238999,24.9622611349703,86.309 +7,Bulgaria,EasternEurope,111002,7085,65.3,94.6,48953,3.0,6846.8,5.1,27.6,67.2,6.5,29.4,64.1,8.1,48.5/60.1,117,119,26088,28875,-2787,196,-0.6,73.9,-0.3,1.5,14.2/27.7,102.1/1.4,33.7,8.3,8.4,4.0,4.1,96.7/97.7,97.4/100.5,82.9/65.4,19.2,129.3,56.7,104,35.1,42.4/5.9,474,103,99.6/99.0,86.8/83.7,-99,-99,138.20,51.40,59.82,54.03,36.49,9.07,27.92,63.12,77.05,5.36,5.68,18.65,17.59,77.24,1.29,36.49,8.91,23.27,30.49,29.56,51.40,100.0,7224.353984864671,54.3265513629189,1.7189599999999998,1133069.0,9383450000.0,5879280000.0,107.93895718849501,3.59956827691833,8.095603436231611,67.3035598741689,24.225190650399398,1684916675.0,0.6759999999999999,62.9680088765738,2.06435506312528,78.4,71.4,74.81463414634149,1.42170625732142,3636886.0,3439061.0,20.1081515255189,16.86693626951,74.669 +8,Canada,NorthernAmerica,9984670,36624,4.0,98.5,1552808,0.9,43205.6,1.8,28.6,69.6,2.1,19.5,78.4,7.1,60.7/69.9,109,109,388911,402954,-14043,-53083,1.0,81.8,1.2,1.6,16.0/23.5,7835.5/21.8,155.8,4.7,10.4,2.5,5.3,101.1/100.1,110.0/109.8,.../...,26.3,81.9,88.5,122,38.2,537.2/15.1,19276,324,100.0/99.0,100.0/99.0,-99,-99,167.18,108.01,60.75,69.23,70.16,6.40,36.24,26.54,44.31,5.47,6.16,18.29,16.23,42.14,2.37,70.16,29.84,50.83,69.26,65.65,108.01,100.0,41350.0699269085,48.6160745277263,2840.9851350232,91404001.0,93063926790.1683,111157192260.8,111.98483113909599,-2.81404646394062,10.5727694928646,31.4105273580442,21.322801709582897,27599664924.0,0.799,33.6232145334166,1.5968841285297,84.1,79.9,81.94878048780491,1.2933951067783702,18418770.0,18124551.0,12.7154317836521,54.9120234604106,81.35 +9,Chile,SouthAmerica,756102,18055,24.3,98.2,240796,2.3,13416.2,3.9,32.8,63.3,9.6,22.9,67.5,6.8,50.7/74.7,111,111,59884,58804,1080,-4761,0.9,89.5,1.1,1.8,20.3/16.0,469.4/2.6,3.7,7.4,7.8,...,4.9,100.0/103.3,101.3/100.0,94.4/83.0,15.8,129.5,64.3,197,23.4,82.6/4.7,540,85,99.7/93.3,100.0/90.9,0.02,-99,136.20,61.28,52.50,60.97,50.09,10.67,35.70,67.67,89.39,4.42,5.06,22.64,19.77,83.59,1.20,50.09,15.43,33.48,43.19,44.38,61.28,100.0,10980.762997382,45.3828389358575,1237.960141,17664974.0,9763417564.2942,13194488376.6783,125.566544829069,-2.15290830965023,8.983509987592699,28.439500474910304,22.4799188188258,623854353.0,0.674,27.2161650772848,2.18271846868523,82.333,77.333,79.90899999999999,1.9356127328857198,9373185.0,9097254.0,17.462826293603698,36.5514783039443,87.49 +10,"China, Hong Kong SAR",EasternAsia,1106,7365,7014.2,85.1,309236,2.4,42431.0,0.1,7.2,92.7,0.2,14.9,84.9,3.5,52.6/67.8,34,34,516588,547124,-30536,10101,0.6,100.0,0.7,1.2,11.5/23.5,2838.7/38.9,2.5,1.6,-99.0,-99,3.3,-99,98.8/102.8,73.7/63.5,-99.0,228.8,84.9,64,-99,46.2/6.4,-99,83,-99,-99,-99,-99,94.45,81.45,79.32,67.99,79.96,36.15,42.22,69.90,29.73,2.25,2.23,44.35,44.81,224.85,0.44,79.96,84.08,81.93,81.88,54.87,81.45,100.0,,38.469034560778496,12415.19932,45580297.0,103999552739.194,77558692271.0508,127.768157278191,4.57768253118139,,188.918523989014,23.080119305824198,293614183698.0,0.8220000000000001,187.90930531280898,1.48058252427183,87.6,81.9,84.6804878048781,,3978989.0,3412711.0,,,100.0 +11,China,EasternAsia,9600000,1409517,150.1,106.3,11158457,6.9,8109.1,9.2,41.1,49.7,27.0,23.9,49.1,4.6,63.0/77.7,132,133,2118981,1588696,530285,330602,0.5,55.6,3.0,1.6,17.7/16.2,978.0/0.1,301.7,11.6,5.5,1.5,-99,104.3/104.0,95.6/93.2,47.3/39.9,23.7,93.2,50.3,1080,22.0,10291.9/7.5,101394,87,97.5/93.0,86.6/63.7,0.00,-99,90.95,67.84,66.10,62.25,44.76,23.29,43.87,88.96,38.70,2.23,2.74,44.83,36.49,189.71,0.53,44.76,18.67,32.26,47.74,29.68,67.84,100.0,5480.724340937801,39.4359455718714,23323.6147,551234509.0,211364158904.64,468540008742.41205,119.088051569694,1.58497312329912,5.151193216443059,19.6922781375567,45.1323883645045,654187610235.0,0.6729999999999999,17.9401372992739,1.59313725490194,78.828,74.315,76.47,1.8965104068693999,674707818.0,711687182.0,9.419318202271429,19.1020651229559,57.96 +12,Colombia,SouthAmerica,1141748,49066,44.2,96.8,292080,3.1,6056.1,6.8,34.0,59.2,13.5,16.6,69.9,10.5,58.0/79.8,114,115,31045,44831,-13786,-18922,1.0,76.4,1.7,1.9,23.5/11.6,133.1/0.3,7127.0,17.9,7.2,...,4.5,111.6/115.4,101.5/94.8,59.9/51.5,18.7,115.7,55.9,835,52.8,84.1/1.8,5380,31,96.8/73.8,85.2/67.9,0.47,-99,115.38,37.63,48.31,65.79,34.45,19.43,43.77,63.90,81.34,4.25,4.30,23.52,23.28,283.62,0.35,34.45,10.69,23.06,28.76,24.97,37.63,98.5,5988.75423502148,46.5330306568285,1273.5686380000002,32504898.0,8305703414.6355095,12298296661.9256,131.87726913518,-3.2835570523265805,7.22628086805344,15.1452897484005,16.6070413951119,694848478.0,0.593,20.1376251940583,4.3121410323772995,79.694,74.124,76.925,3.1862726276321296,24915291.0,23985775.0,14.658915578840402,23.3441910275351,80.446 +13,Croatia,SouthernEurope,56594,4189,74.9,93.1,48676,1.6,11479.4,4.1,26.6,69.3,9.2,26.8,64.0,11.7,46.3/58.4,91,91,13648,21830,-8182,2492,-0.4,59.0,0.1,1.5,14.7/26.8,576.9/13.6,15.5,3.9,7.8,3.1,4.6,98.1/97.8,100.6/95.9,79.8/58.8,19.9,103.8,69.8,176,34.3,16.8/4.0,182,79,99.6/99.7,97.8/95.8,...,-99,170.63,60.71,72.20,65.49,48.00,10.91,28.45,33.34,82.02,3.31,3.69,30.24,27.07,89.21,1.12,48.00,10.09,29.83,39.91,37.53,60.71,100.0,13047.4642755732,52.579572358686,0.58275,2057804.0,14773948041.0347,4624578000.31845,107.363994273443,3.80106777376375,6.78913369774818,50.0289280782477,22.389513844541604,923411397.0,0.723,49.409157647110206,1.12937210282344,80.9,74.9,77.8268292682927,1.42558734937722,2139934.0,1984597.0,21.5627731110784,7.2834216667925595,56.667 +14,Cyprus,WesternAsia,9251,1180,127.7,100.2,19561,1.7,21941.9,2.3,10.6,87.2,4.1,16.7,79.2,10.3,57.8/70.4,80,80,1920,6604,-4684,-576,0.9,66.9,0.9,1.4,16.8/18.5,196.2/16.8,16.2,4.2,7.4,2.5,6.1,99.3/99.3,99.4/100.1,69.4/51.1,17.9,95.4,71.7,72,18.7,6.1/5.2,5,72,100.0/100.0,100.0/100.0,-99,-99,166.64,95.92,67.54,54.23,54.07,5.21,20.32,54.77,71.01,4.90,5.14,20.42,19.45,39.85,2.51,54.07,12.28,34.04,44.06,58.05,95.92,100.0,26093.20402367,43.37320111861529,0.34031950189000004,711554.0,13326017977.192,7831409650.46734,100.807886777964,-5.00386384410902,6.68456926941872,73.0152992340802,19.5436497639485,57707767.0,0.7509999999999999,73.3895414381535,0.5317664961745,82.794,78.547,80.672,1.62751716003059,589132.0,590548.0,24.1665342627952,23.348511602519,66.836 +15,Czechia,EasternEurope,78868,10618,137.5,96.7,185156,4.5,17561.7,2.5,37.8,59.7,2.5,37.0,60.5,3.9,51.3/67.8,102,102,161248,140316,20932,1683,0.1,73.0,0.3,1.5,15.4/25.6,405.1/3.8,6.0,2.5,7.4,3.7,4.1,99.9/99.6,106.1/105.1,76.3/54.2,20.0,129.2,81.3,53,34.5,96.5/9.2,1221,164,100.0/100.0,99.1/99.2,-99,-99,165.41,76.22,69.82,74.09,41.22,10.70,31.98,41.04,65.32,4.17,4.61,24.01,21.71,65.37,1.53,41.22,14.83,28.57,35.84,27.99,76.22,100.0,16801.7164687198,52.397390622639996,27.81465,5450671.0,27307594297.3567,21801376859.9076,110.86722809532301,1.45799390726686,7.2313390672206905,79.72607749897121,33.3962320598455,29543508515.0,0.782,72.202798068737,2.45053398460138,82.0,76.1,78.9780487804878,0.969085790261929,5385332.0,5209106.0,14.8773583802878,15.2005276465305,73.675 +16,Denmark,NorthernEurope,42921,5734,135.1,99.0,301308,1.6,53149.3,1.2,22.9,75.8,2.4,19.2,78.4,6.0,58.1/66.0,105,105,94355,85133,9222,27582,0.5,87.7,0.6,1.7,16.5/25.3,572.5/10.1,48.2,3.5,10.8,3.6,8.6,100.7/102.3,133.4/128.3,96.3/69.7,37.4,128.3,96.3,47,14.4,33.5/5.9,666,119,100.0/100.0,99.6/99.6,-99,-99,184.92,98.76,78.87,75.45,83.02,8.20,28.42,25.97,64.24,4.71,4.82,21.21,20.76,52.39,1.91,83.02,35.02,60.01,63.84,101.01,98.76,100.0,53704.9593894897,56.6199956477692,,,69657202239.7128,62995124117.5794,108.633157753772,7.79658986323749,10.108279436826699,55.1388663944531,28.8453392474058,8937322533.0,0.774,48.1422353799985,1.1471321695760601,83.1,79.2,81.10243902439029,1.1460161693832198,2897965.0,2867015.0,33.6709598218165,45.2183251328341,87.757 +17,Egypt,NorthernAfrica,1002000,97553,98.0,102.3,315917,4.2,3452.3,11.2,36.3,52.5,25.4,25.3,49.3,11.5,23.1/76.2,120,122,22507,58053,-35545,-16786,2.2,43.1,1.7,3.4,33.5/7.9,491.6/0.5,256.5,18.9,5.6,0.8,...,103.8/104.1,85.9/86.3,35.6/36.9,14.9,111.0,35.9,156,0.1,201.9/2.2,3509,36,100.0/99.0,96.8/93.1,0.78,-99,91.81,29.39,47.14,43.73,22.36,10.66,48.84,88.88,75.59,7.18,7.74,13.93,12.93,138.09,0.72,22.36,5.03,14.05,19.01,18.56,29.39,100.0,2524.4759906719896,63.8363130332394,403.82873900000004,11748510.0,18612600000.0,16081600000.0,231.094115427901,-3.37329709394813,5.28763681650162,15.818443804034601,1.78386167146974,73845751.0,0.486,29.308357348703197,29.506608394003898,73.967,69.453,71.656,1.42260927104117,47706816.0,48735777.0,,,42.705 +18,Estonia,NorthernEurope,45227,1310,30.9,88.2,22460,1.4,17112.0,3.4,27.4,69.2,3.8,29.0,67.3,7.2,55.4/69.4,136,136,13952,15759,-1807,493,-0.3,67.5,-0.4,1.6,16.4/25.9,202.3/15.4,84.2,3.2,6.4,3.3,5.5,98.5/98.3,114.7/115.6,84.8/55.4,26.7,148.7,88.4,23,52.7,19.5/14.8,242,193,100.0/99.0,97.5/96.6,-99,-99,171.09,68.48,77.00,71.30,49.50,10.54,26.71,17.71,44.56,4.11,3.95,24.33,25.30,68.75,1.45,49.50,13.98,32.47,36.74,46.76,68.48,100.0,16294.785167381202,55.1231614681643,,13103.0,6839243919.352321,4752130176.94124,115.455324823776,2.69313927893907,6.42935782670975,76.1376865328606,29.835523430561,1844023020.0,0.747,71.8574286059871,3.4172354948805697,82.6,73.8,78.0926829268293,2.02836226346766,698154.0,619230.0,20.9927107384988,19.876438451702896,68.717 +19,Finland,NorthernEurope,338440,5523,18.2,97.2,231960,0.2,42148.1,2.5,26.8,70.6,4.2,22.0,73.8,8.9,54.5/61.7,101,101,57326,60502,-3176,-979,0.4,84.2,0.5,1.8,16.4/27.8,315.9/5.7,32.6,2.3,9.7,3.0,7.2,101.4/101.7,156.3/142.8,95.6/79.3,42.0,135.5,92.7,36,73.1,47.3/8.6,757,257,100.0/100.0,99.4/88.0,-99,-99,182.93,114.97,75.37,74.85,73.06,7.60,34.92,13.38,35.83,3.74,4.60,26.72,21.76,44.51,2.25,73.06,26.95,50.96,61.47,76.43,114.97,100.0,39458.5092005397,60.0766175741488,852.0126300000001,12209646.0,29913728719.0783,31453244990.2233,110.000779878603,-0.6849719681636821,9.20693874359131,37.675589434718496,23.9580540209884,4405114576.0,0.8140000000000001,37.5609043825519,0.754015047084413,84.5,78.9,81.63170731707321,1.36568934476396,2794857.0,2713357.0,20.7765920181751,15.958140251490299,85.325 +20,France,WesternEurope,551500,64980,118.7,96.7,2418946,1.3,36304.2,1.7,19.5,78.8,2.7,20.5,76.8,9.8,50.3/59.4,103,103,488885,560555,-71670,-4861,0.4,79.5,0.8,2.0,18.1/25.7,7784.4/12.1,356.2,3.4,11.5,3.2,5.5,105.0/105.7,111.2/110.1,71.0/57.9,25.8,102.6,84.7,278,30.8,303.3/4.7,5694,158,100.0/100.0,98.6/98.9,-99,-99,160.25,87.29,56.34,78.62,74.89,11.58,35.81,40.15,73.91,3.00,3.67,33.29,27.22,73.86,1.35,74.89,24.83,50.90,69.54,72.89,87.29,100.0,36547.8795790623,60.716987819599105,4260.597,68316473.0,271067199595.21,249030090796.29398,106.864453008147,-0.6346628787315111,11.312892287969598,30.9486331871,22.3716090860258,109359053829.0,0.765,32.0132141063066,1.03228275064674,85.7,79.6,82.57560975609759,2.34967851446849,34480922.0,32383457.0,23.619888544611303,25.666199432290696,80.18 +21,Germany,WesternEurope,357376,82114,235.6,97.0,3363600,1.7,41686.2,0.6,30.5,68.9,1.4,27.5,71.2,4.2,54.5/66.1,111,111,1340752,1060672,280080,279969,0.2,75.3,0.2,1.4,13.1/28.0,12005.7/14.9,1052.1,3.4,11.3,4.1,5.0,104.7/105.2,99.6/105.6,66.8/69.7,37.0,116.7,87.6,116,32.7,719.9/8.9,5004,158,100.0/100.0,99.3/99.0,-99,-99,189.74,124.88,67.97,76.74,65.50,7.46,30.55,27.05,57.97,3.75,4.09,26.68,24.47,45.91,2.18,65.50,25.35,46.26,50.09,62.62,124.88,100.0,40038.3451814871,53.426417753932895,7901.65234423,114160685.0,315403008911.47,345731488765.965,109.35246347718001,7.83505437684049,11.246834695339198,47.3974341985646,27.8485912129159,195752362801.0,0.795,40.29596393209221,1.50949655801608,83.4,78.7,80.9926829268293,1.2341411022353501,41919970.0,40737032.0,11.4719613927932,17.7355216696669,77.26100000000001 +22,Greece,SouthernEurope,131957,11160,86.6,96.9,194860,-0.2,17788.0,4.1,15.7,80.2,12.9,15.0,72.1,23.0,44.1/60.1,86,87,27811,47595,-19784,218,-0.4,78.0,0.5,1.3,14.2/26.5,1242.5/11.3,94.7,3.3,8.1,6.3,...,97.1/98.1,103.4/109.5,113.7/114.0,18.3,114.0,66.8,374,31.2,67.3/6.1,368,89,100.0/100.0,99.2/98.1,-99,-99,148.32,58.24,59.68,53.92,55.87,8.33,31.60,52.05,87.25,4.14,4.20,24.15,23.80,62.48,1.60,55.87,10.20,33.98,44.95,54.62,58.24,100.0,19581.010806431,55.289531570416095,23.525,13852857.0,38237102482.622,17510745541.4493,101.05987334585501,-1.7712180122928998,8.04139003157616,32.9903963772026,11.4897638856844,1384000150.0,0.6809999999999999,34.0101586285405,1.1212354772078998,83.9,78.8,81.2878048780488,2.51912140468631,5475485.0,5279194.0,25.9719369265181,18.761723822807898,78.72399999999999 +23,Hungary,EasternEurope,93024,9722,107.4,90.7,121715,3.1,12350.6,4.1,31.9,64.0,4.3,29.8,65.9,4.5,46.6/62.4,99,99,103071,92044,11027,3946,-0.3,71.2,0.5,1.3,14.3/26.0,449.6/4.6,14.4,4.9,7.4,3.3,4.7,101.3/101.9,105.3/105.1,56.7/45.3,10.1,118.9,72.8,66,22.8,42.1/4.3,423,97,100.0/100.0,97.8/98.6,-99,-99,138.82,47.52,61.61,53.46,42.77,11.20,33.09,43.99,66.49,5.43,5.97,18.43,16.76,97.32,1.03,42.77,12.67,28.35,33.62,32.72,47.52,100.0,12430.284766151799,49.1427083392061,,26066294.0,26887572029.5942,18639180669.2928,114.450017176228,2.3123718973044505,6.879989802837371,87.143096211555,30.137444048535198,16903987958.0,0.703,79.8541973019801,2.34824281150159,79.3,72.5,75.8170731707317,1.05016762431816,5133501.0,4654465.0,23.1775351555229,17.0302284164738,71.062 +24,India,SouthernAsia,3287263,1339180,450.4,107.6,2116239,7.6,1614.2,17.0,29.7,53.2,44.3,24.5,31.2,3.4,27.0/79.1,143,142,260327,356705,-96378,-22457,1.2,32.7,2.4,2.4,27.8/9.4,5241.0/0.4,211.1,41.3,4.7,0.7,3.8,115.1/102.8,74.5/73.5,26.7/27.0,11.8,78.8,26.0,1052,23.7,2238.4/1.7,23103,27,97.1/92.6,62.6/28.5,0.16,-99,101.52,76.73,56.04,69.18,25.08,10.28,46.38,76.53,9.30,3.08,3.81,32.44,26.24,123.44,0.81,25.08,6.77,16.31,25.20,16.38,76.73,92.6,1724.84357225624,50.289637256324504,2407.0981070000003,139752424.0,184672831370.242,108735877735.935,159.829464708669,-1.43879339568494,3.5349596291780494,18.7826851657717,30.2335763460221,15161028362.0,0.44,21.940126113982,2.49088699878493,70.425,68.0,69.165,2.50962455841482,642787641.0,695871194.0,11.1799218352875,44.15729341953771,33.6 +25,Indonesia,South-easternAsia,1910931,263991,145.7,101.4,861934,4.8,3346.5,14.0,41.3,44.7,31.4,22.4,46.2,5.8,51.0/83.7,139,140,144490,135653,8837,-17697,1.2,53.7,2.7,2.4,27.4/8.6,328.8/0.1,13.8,25.0,2.8,0.2,3.6,104.4/107.2,86.0/85.7,25.7/22.9,19.8,132.4,22.0,1281,50.6,464.2/1.8,19481,35,94.2/79.5,72.3/47.5,0.00,-99,62.02,27.61,50.32,64.80,41.11,21.03,49.44,76.41,9.62,4.67,4.94,21.41,20.26,247.68,0.40,41.11,11.66,26.99,45.80,20.29,27.61,98.14,3136.52441830271,48.3610188883414,1052.36048,108393123.0,24665052782.0696,32591673212.1994,142.182412273917,-1.5946569023963202,2.98905447125435,20.177304435110603,33.6038558737747,5974888118.0,0.535,19.17819263535,3.8087980695316297,73.515,69.156,71.282,0.804336712672088,131375660.0,133270226.0,9.8772930803788,38.8197326535585,54.659 +26,Iran (Islamic Republic of),SouthernAsia,1628750,81163,49.8,101.2,398563,0.4,5038.1,8.6,39.1,52.3,16.6,32.5,50.9,11.3,16.3/73.2,106,107,45627,35333,10294,-99,1.2,73.4,2.1,1.7,23.7/8.8,2726.4/3.4,978.3,14.8,7.5,1.5,2.9,111.7/106.3,88.9/89.4,67.7/75.9,5.9,93.4,44.1,134,6.6,649.5/8.3,13291,127,97.7/92.1,92.8/82.3,0.02,-99,97.17,43.18,49.10,51.55,38.26,13.50,49.70,82.51,71.48,6.10,8.12,16.39,12.31,275.34,0.36,38.26,17.05,28.09,33.53,33.17,43.18,100.0,4523.723568531311,43.444339449111396,325.668724283288,26858178.78,,,333.673322422363,,8.659663796424871,24.9421768507619,38.9462495748058,278924957.0,0.591,23.8384608001943,8.04492437660281,77.436,75.217,76.271,3.10518416947631,39854933.0,40819018.0,,,74.39399999999999 +27,Ireland,NorthernEurope,69797,4762,69.1,98.4,283716,26.3,60513.6,1.0,41.7,57.3,4.8,17.7,77.4,7.6,51.9/67.1,102,102,129315,76997,52318,28967,0.3,63.2,1.6,2.0,21.6/19.1,746.3/15.9,10.5,3.4,7.8,2.8,5.3,102.0/100.9,129.4/125.6,87.6/80.1,22.2,103.7,80.1,50,10.9,34.1/7.3,84,114,97.9/97.8,89.1/92.9,-99,-99,166.90,103.52,54.23,53.33,76.98,7.02,35.01,27.18,70.18,6.02,6.91,16.61,14.48,50.79,1.97,76.98,40.64,59.56,62.21,81.38,103.52,100.0,41859.253033146,54.10677358065371,154.38504,153944513.0,182945785463.57602,231218911719.57397,105.079585978951,1.0121980419305,7.18438327312469,121.042588526693,55.851370141226504,34827021587.0,0.8059999999999999,98.95576008631409,0.34053156146179303,84.0,80.4,82.1560975609756,0.31063192898547803,2426140.0,2381248.0,18.270065966569398,40.6923290952421,62.946999999999996 +28,Israel,WesternAsia,22072,8322,384.5,98.7,299413,2.5,37129.4,1.3,21.2,77.5,1.0,17.9,81.0,5.9,58.5/69.0,112,112,60571,65803,-5232,13642,1.6,92.1,1.4,3.0,27.9/16.1,2011.7/24.9,44.7,3.4,7.8,3.6,5.8,105.1/104.4,103.0/102.0,75.5/54.6,27.5,133.5,78.9,174,7.5,64.6/8.1,313,119,100.0/100.0,100.0/100.0,-99,-99,157.88,94.47,70.99,74.78,77.74,10.87,36.52,61.71,81.01,3.45,3.54,28.98,28.27,71.94,1.39,77.74,28.44,54.11,65.39,81.35,94.47,100.0,30793.6485488014,65.75526287655089,912.898,6993888.0,44080200000.0,28429900000.0,106.380697050938,2.3189868345825295,7.40746408700943,28.684321571823897,22.6665195027388,12057719000.0,0.763,27.5215154198101,0.244210526315802,84.6,80.6,82.55121951219509,4.4325638900397095,4385803.0,4327497.0,24.579623305461602,34.2926786791163,92.336 +29,Italy,SouthernEurope,302073,59360,201.8,95.1,1821580,0.7,30462.4,2.2,23.5,74.2,3.5,27.1,69.4,11.4,39.2/57.8,89,89,461529,404578,56951,29348,-0.1,69.0,0.4,1.4,13.5/29.4,5788.9/9.7,216.7,3.0,9.2,3.9,4.1,100.6/101.4,101.7/104.1,72.2/53.2,31.0,151.3,65.6,359,31.4,320.4/5.4,1539,103,100.0/100.0,99.5/99.6,-99,-99,142.52,71.83,55.34,66.31,83.70,12.39,36.38,51.57,82.60,2.69,3.56,37.18,28.06,82.64,1.21,83.70,21.49,53.89,73.94,76.24,71.83,100.0,29414.346286651602,56.1884000768445,1437.245062,26288001.0,112119916109.798,114804493330.453,108.71490177435699,2.6198702410610197,8.84025916457176,30.733733319636002,20.9173561009812,32232276659.0,0.769,27.870442627655695,1.22653316645808,85.2,80.8,82.94634146341471,1.36652876351231,31121471.0,29415238.0,24.634790608368302,32.0745611389274,70.14399999999999 +30,Japan,EasternAsia,377930,127484,349.7,95.4,4383076,1.2,34628.7,1.2,26.4,72.4,3.7,26.5,69.8,3.0,48.9/69.7,96,97,644932,606924,38008,135608,-0.1,93.5,0.6,1.4,12.9/33.4,2043.9/1.6,19.4,2.2,10.2,2.3,3.6,101.2/101.3,101.9/101.6,60.9/65.7,9.3,125.0,93.3,404,68.5,1214.0/9.6,1114,146,100.0/100.0,100.0/100.0,-99,-99,147.49,102.52,79.11,78.63,85.28,12.68,46.81,41.01,31.91,2.21,2.75,45.15,36.32,72.76,1.37,85.28,27.56,57.62,89.92,47.83,102.52,100.0,39433.5079901762,66.4554629240626,10684.573999999999,123898000.0,181994112163.05,191028067326.953,103.962703962704,4.17453025153592,10.9359331429005,17.751852271141104,24.940309296215702,106416048221.0,0.8440000000000001,16.8215858877511,0.467211747038214,87.26,81.09,84.099756097561,0.930768157014813,64853783.0,61932014.0,11.625407997913198,48.6057745782829,91.535 +31,Jordan,WesternAsia,89318,9702,109.3,102.6,37517,2.4,4940.1,4.0,27.7,68.4,2.0,17.8,80.2,13.4,14.5/64.5,134,135,7509,19207,-11698,-3332,4.9,83.7,3.8,3.6,35.5/5.7,3112.0/41.0,721.4,17.1,7.5,2.6,-99,97.6/97.1,84.8/80.2,47.3/42.5,15.4,179.4,53.4,113,1.1,26.5/3.6,7,47,97.8/92.3,98.6/98.9,5.80,-99,117.47,42.27,56.86,71.92,59.22,7.96,47.76,85.73,88.42,6.48,7.23,15.43,13.84,76.63,1.30,59.22,12.51,36.83,50.19,56.19,42.27,100.0,2894.8275272608503,63.1227776186631,158.95506,3381677.0,6389295774.64789,4626619718.30986,119.329869272798,-10.5659032603487,8.119250833988191,35.1204964130456,-1.9293611294192499,83323220.0,0.562,56.353329285359706,3.32389447576096,76.05199999999999,72.628,74.292,4.841143745217691,4829775.0,4949398.0,15.026977841668902,12.6313095943544,90.74700000000001 +32,Lebanon,WesternAsia,10452,6082,594.6,100.6,50149,1.5,8571.4,3.2,19.6,77.2,8.2,22.4,69.4,7.0,23.8/70.6,95,95,3402,20409,-17007,-8146,6.0,87.8,3.2,1.7,23.1/12.0,1997.8/34.1,1054.2,9.2,6.4,2.4,2.6,88.3/96.6,61.0/61.5,45.7/39.5,3.1,87.1,74.0,87,13.4,24.1/4.3,7,55,99.0/99.0,80.7/80.7,2.04,-99,106.18,53.61,50.84,64.28,61.65,13.95,36.15,85.11,69.39,5.36,6.27,18.67,15.94,126.66,0.79,61.65,30.89,46.91,46.92,60.23,53.61,100.0,5665.79323227701,50.0021360068211,53.387,2879528.0,15125597884.431002,13823773941.8732,118.999307190905,-22.8335648276373,8.19554403424263,21.880324536709498,-3.1741948129041098,272165501.0,0.5379999999999999,46.4295934881725,4.32135218303198,80.786,77.031,78.833,4.59676966111758,3386334.0,3425539.0,15.3272322664641,25.5262719143953,88.429 +33,Lithuania,NorthernEurope,65286,2890,46.1,85.4,41402,1.8,14383.7,3.6,29.8,66.5,8.7,24.5,66.8,9.2,54.1/66.1,125,125,25025,27501,-2476,-977,-1.3,66.5,-0.5,1.6,14.8/25.3,136.0/4.7,4.7,4.4,6.6,4.3,4.6,103.7/103.2,106.1/110.3,82.0/55.8,21.3,139.5,71.4,26,34.8,12.8/4.4,74,98,99.7/90.4,97.2/82.8,-99,-99,130.28,51.67,59.97,68.74,46.73,14.19,28.00,34.27,25.04,3.90,4.14,25.62,24.18,89.18,1.12,46.73,13.25,30.69,36.15,40.08,51.67,100.0,14388.794501364298,51.580488568240604,0.47200000000000003,1069268.0,9462919104.20664,5901919958.24257,112.64248975119499,0.96944893225771,6.457564234733581,73.6057866057133,21.544148322694696,2317936056.0,0.7120000000000001,71.2221455107718,3.72288862303693,80.5,70.7,75.4804878048781,1.71553862681485,1523077.0,1305326.0,16.6366224898438,16.5768029491542,67.516 +34,Malaysia,South-easternAsia,330323,31624,96.3,106.7,296284,5.0,9768.4,8.6,39.6,51.8,11.8,27.3,60.9,3.3,49.3/77.8,122,130,189414,168375,21039,8960,1.8,74.7,2.7,2.1,24.3/9.7,2514.2/8.3,238.6,6.5,4.2,1.3,5.0,101.9/101.7,80.7/74.6,31.8/20.8,10.4,143.9,71.1,1272,67.5,242.8/8.1,3738,118,100.0/93.0,96.1/95.9,0.00,-99,51.65,73.34,35.25,65.99,40.24,9.53,39.40,67.08,-79.43,4.07,4.05,24.60,24.66,72.87,1.37,40.24,11.19,26.32,42.44,20.87,73.34,100.0,8653.81754055216,44.462209546693295,1455.20982395985,58711937.0,37022387968.2993,42022247442.2415,119.60506582236299,2.80919895028417,3.85939814150333,70.04552188316539,32.431133935237,74136279705.0,0.622,63.173933837252704,3.8712011577424,78.008,73.903,75.828,1.11654055241519,15104524.0,16000504.0,12.95221278164,47.7170284581736,75.447 +35,Mexico,CentralAmerica,1964375,129163,66.4,99.2,1140724,2.5,8980.9,3.6,36.0,60.4,13.4,25.2,61.3,4.1,45.5/79.5,120,120,373883,387064,-13181,-33216,1.4,79.2,1.6,2.3,26.7/10.1,1193.2/0.9,5.9,18.8,6.3,2.1,5.3,103.2/103.6,93.5/87.7,30.0/29.9,42.6,85.3,57.4,1162,34.0,480.3/3.8,8514,62,97.2/92.1,88.0/74.5,0.03,-99,129.06,60.08,49.68,70.11,29.81,6.94,41.66,66.74,60.74,6.85,6.31,14.60,15.85,86.58,1.16,29.81,8.37,19.53,28.06,25.80,60.08,100.0,7901.164712232149,51.469241270074605,928.83550977,58537832.0,27463459761.0,37265060551.0,130.197802476747,-1.7702370101286,5.516541376709941,37.689840960347794,23.104552258239302,69687047762.0,0.607,39.5042984417504,6.04145724018992,77.827,72.046,74.947,0.502372222667342,63752822.0,61024502.0,13.048923522174801,35.7564754229319,79.867 +36,Netherlands,WesternEurope,41542,17036,505.2,99.0,750318,2.0,44332.1,1.8,20.0,78.2,2.2,15.9,81.9,5.6,57.3/69.7,115,115,511714,420969,90745,65129,0.3,90.5,1.0,1.7,16.4/25.0,1979.5/11.7,116.3,3.5,10.9,3.4,5.5,104.4/105.0,136.3/134.7,82.5/74.7,38.0,123.5,93.1,40,11.1,167.3/9.9,2447,178,100.0/100.0,97.5/99.9,-99,-99,175.23,86.52,70.11,82.50,72.47,8.52,33.90,27.62,61.87,5.38,5.93,18.60,16.86,56.24,1.78,72.47,32.45,53.29,55.95,82.27,86.52,100.0,45289.3048835763,54.190741208935,5855.480475616,42763443.0,174353871463.76,166614487993.924,111.042062834942,10.813913780342801,10.1008348166943,83.391768024212,31.3479989053656,78192852335.0,0.8,72.6364431968743,1.3814587140721002,83.4,80.2,81.7609756097561,1.15852698874429,8607750.0,8523546.0,23.085541342769602,29.5563497506557,91.07700000000001 +37,New Zealand,Oceania,268107,4706,17.9,96.7,173417,3.1,38294.3,6.5,23.0,70.6,5.9,21.4,72.6,5.5,62.1/72.8,116,118,33833,36423,-2589,-5501,1.1,86.3,1.0,2.0,19.8/20.8,1039.7/23.0,1.7,4.4,11.0,2.9,6.4,99.1/99.6,119.9/113.4,96.7/71.6,34.2,121.8,88.2,199,38.6,34.7/7.7,783,207,100.0/100.0,-99,-99,-99,184.74,89.87,61.22,70.58,80.77,8.14,30.23,20.03,85.41,4.99,5.92,20.04,16.90,63.92,1.56,80.77,33.80,58.26,73.13,77.46,89.87,100.0,31778.6664061585,53.9542071417744,1335.9532054567699,16271523.0,16950151675.6521,13002353627.8465,110.65157873712099,-2.7070346661924396,9.1700553894043,27.483189440478203,24.952958105041798,564489408.0,0.767,26.3669821240799,1.85078767452532,83.4,80.0,81.65853658536591,1.2084632895300902,2436831.0,2357069.0,27.4841925397089,52.8147733894267,86.46600000000001 +38,Norway,NorthernEurope,386194,5305,14.5,101.8,386578,1.6,74185.5,1.8,34.6,63.5,2.2,20.2,77.6,5.1,61.1/68.3,103,104,89120,72473,16647,33746,1.2,80.5,1.3,1.8,17.8/22.3,741.8/14.2,73.2,2.4,9.7,4.4,7.4,100.3/100.5,111.1/114.7,91.5/62.8,39.6,113.6,96.8,64,33.2,47.6/9.2,8204,233,100.0/100.0,98.0/98.3,-99,-99,165.93,105.58,54.31,74.19,106.31,7.90,31.32,19.45,49.32,4.18,4.51,23.94,22.16,50.95,1.96,106.31,39.88,74.47,98.31,117.13,105.58,100.0,71668.66678743559,52.683567187265794,,,40502614063.1295,49724162253.0968,114.55071939191002,4.5714251083483495,10.446342080831501,36.3329956891189,31.335820854759803,4272827826.0,0.7709999999999999,32.831428951180804,1.8751005955254798,84.3,81.0,82.609756097561,1.6178237818885401,2615346.0,2661622.0,22.4775458505266,21.890553561886396,81.87100000000001 +39,Pakistan,SouthernAsia,796095,197016,255.6,105.6,266458,5.5,1410.4,25.5,19.0,55.5,42.1,19.8,38.1,5.9,24.8/82.5,135,138,20534,46998,-26464,-1603,2.1,38.8,2.8,3.7,34.8/6.7,3629.0/1.9,2739.4,69.8,2.6,0.8,2.6,85.2/99.7,39.2/49.5,9.2/10.6,20.6,66.9,18.0,140,2.0,166.3/0.9,2202,17,93.9/89.9,83.1/51.1,1.32,-99,93.41,39.95,45.62,59.05,27.18,12.09,38.69,80.08,42.54,4.08,3.81,24.51,26.26,156.97,0.64,27.18,5.03,16.57,24.83,21.01,39.95,70.79,1163.7250971125802,66.0921456528151,214.52857000000003,7260769.0,4499440000.0,11160061000.0,156.91134586661698,-5.31233112850804,2.89863366633654,8.2573202960672,6.812339584295219,362376598.0,0.389,17.5955165571328,4.08537368032604,67.928,66.041,66.947,3.76619210655443,100907719.0,106988967.0,,,36.442 +40,Philippines,South-easternAsia,300000,104918,351.9,101.3,292449,5.9,2904.2,10.5,31.3,58.2,27.7,16.3,56.1,5.9,50.8/78.9,122,120,56313,85909,-29596,7694,1.6,44.4,1.3,3.0,31.7/7.6,211.9/0.2,240.2,22.2,4.7,...,...,116.9/116.8,92.7/84.4,40.3/31.4,29.5,118.1,40.7,783,26.2,105.7/1.1,991,19,93.7/90.3,77.9/70.8,0.15,-99,56.87,36.00,60.23,69.16,34.71,16.91,45.14,70.25,-44.10,3.75,3.54,26.69,28.29,162.87,0.61,34.71,7.32,21.58,33.95,19.86,36.00,93.0,2994.28192882229,57.245327105353795,753.351739,39341995.0,34812501415.6187,25844797492.5497,120.211352458706,-0.6523879267514829,4.4464077800512305,29.552290854788104,16.494985830771,33502479344.0,0.5479999999999999,38.616078887881606,2.85318772590942,75.268,66.971,70.952,1.1975353534869098,52293794.0,52879470.0,13.593793749028402,41.4692223964639,46.681999999999995 +41,Poland,EasternEurope,312679,38171,124.6,93.4,477066,3.9,12355.5,2.6,34.1,63.3,10.9,29.6,59.5,5.3,49.1/64.9,113,113,196455,188518,7937,-2932,-~0.0,60.5,-0.1,1.3,14.8/24.0,619.4/1.6,23.7,4.5,6.4,2.3,4.9,100.7/100.5,106.1/110.0,82.6/54.2,28.0,148.7,68.0,58,30.7,285.7/7.4,2819,102,99.3/96.9,97.5/96.7,-99,-99,150.21,71.75,68.47,61.46,38.15,10.12,34.55,50.33,62.53,4.66,5.25,21.44,19.04,73.08,1.37,38.15,13.93,26.54,29.69,31.53,71.75,100.0,13520.2490882131,46.650308179456,221.81400000000002,7376512.0,58739000000.0,38313000000.0,109.637670529558,0.0189976530034167,6.5419539809227,54.33711798470961,24.0000884710642,19261853887.0,0.747,50.1550505667426,2.07593553673862,81.8,73.9,77.7536585365854,1.8959838691023898,19565914.0,18408912.0,16.7966336760079,12.471409906448699,60.105 +42,Portugal,SouthernEurope,92226,10330,112.8,89.8,199122,1.6,19239.2,2.3,22.3,75.4,8.0,23.8,68.2,10.5,53.3/63.7,104,104,55658,67580,-11922,842,-0.4,63.5,1.0,1.3,13.6/27.9,837.3/8.1,1.8,2.9,9.5,4.4,5.1,105.3/109.4,117.3/121.0,65.7/58.0,34.8,110.4,68.6,281,34.9,45.1/4.3,250,84,100.0/100.0,99.6/99.8,-99,-99,178.43,62.72,64.61,70.31,49.19,8.85,30.44,28.91,92.19,5.95,6.08,16.81,16.46,60.87,1.64,49.19,16.77,33.66,39.14,41.24,62.72,100.0,19172.4766666951,54.3800233871429,421.8294532,15937325.0,34948649028.0397,16517160294.984,109.166705134988,1.37839079896265,8.96957442164421,42.7242663980773,18.2361172685235,2816236487.0,0.7759999999999999,41.714874123494795,1.3686141164348102,84.6,78.4,81.42439024390251,1.6699769206106498,5429333.0,4870967.0,22.370587976220698,24.0191056582023,64.652 +43,Qatar,WesternAsia,11607,2639,227.3,301.2,164641,3.6,73653.4,0.2,56.4,43.5,1.2,54.1,44.7,0.3,53.1/93.6,154,154,57254,32058,25196,13751,6.6,99.2,6.0,2.0,13.9/2.8,1687.6/75.5,1.5,7.2,2.2,2.0,3.6,103.6/102.4,103.6/82.0,43.9/6.3,0.0,153.6,92.9,39,0.0,107.9/49.7,9166,846,100.0/100.0,98.0/98.0,-99,-99,132.37,111.28,84.30,66.14,69.20,6.19,32.97,73.29,9.26,9.49,9.19,10.54,10.88,47.11,2.12,69.20,66.81,68.06,56.09,72.73,111.28,100.0,42663.336827574196,17.2922167762509,10970.08988,29949181.0,17527197802.1978,29715109890.1099,115.85880342488899,3.84928080050031,2.60742865502834,51.04242783318521,58.388466475757895,292252.0,0.615,37.2570027319706,0.394878914083008,81.743,78.83,79.98100000000001,,662995.0,2061729.0,,,99.07799999999999 +44,Republic of Korea,EasternAsia,100284,50982,524.3,100.2,1377873,2.6,27396.7,2.3,38.0,59.7,5.0,24.7,70.3,3.6,50.2/71.9,104,104,495418,406182,89236,105871,0.4,82.5,0.7,1.2,13.5/20.1,1327.3/2.6,8.0,3.0,7.4,2.2,5.1,98.7/99.3,98.4/99.3,80.2/104.8,17.0,118.5,89.9,111,63.5,587.2/11.7,2023,223,99.7/87.9,100.0/100.0,-99,-99,162.49,102.38,74.73,83.20,75.41,12.38,34.18,52.73,61.20,2.04,2.51,49.10,39.90,85.47,1.17,75.41,22.02,49.82,88.52,44.62,102.38,100.0,22899.6799642164,37.1323499276971,11511.801211,82818983.0,88720200000.0,124753100000.0,113.050800144607,4.63272557766522,7.60386362671852,40.934206940988396,37.035554101431295,166675269584.0,0.845,36.186710865653204,1.94445590723395,85.7,79.7,82.62682926829271,2.56884353517412,25632820.0,25729091.0,14.4938185341627,28.340191337644,81.503 +45,Romania,EasternEurope,238391,19679,85.5,94.0,177956,3.7,9120.7,4.8,34.9,60.3,25.5,27.7,46.8,7.1,47.3/64.5,100,100,63581,74605,-11024,-2096,-0.6,54.6,~0.0,1.5,15.3/24.9,226.9/1.2,3.2,8.7,5.6,2.7,3.1,89.0/90.5,92.0/92.5,59.0/47.8,20.7,107.1,55.8,104,29.5,70.0/3.6,1109,68,100.0/100.0,92.2/63.3,-99,-99,143.04,53.44,72.05,53.11,35.63,10.79,31.97,50.90,64.45,4.89,4.76,20.43,20.99,83.30,1.20,35.63,9.59,23.15,29.05,30.16,53.44,100.0,8947.49984137703,49.99522537201321,2.8045,4423249.0,24570199854.841,15287952957.9184,113.946361611816,-2.7899432228983505,5.15788830816746,41.4700877973861,21.3026478626714,5558653635.0,0.601,43.594063940406706,1.33902121104396,79.1,71.7,75.30975609756099,1.71954054901384,10053129.0,9534161.0,15.491428620052499,19.7958480781778,53.93600000000001 +46,Russian Federation,EasternEurope,17098246,143990,8.8,86.8,1326016,-3.7,9243.3,4.7,31.8,63.5,6.8,27.1,66.1,5.8,56.3/71.3,120,120,285491,182257,103234,69000,0.1,74.0,-0.1,1.7,17.6/21.1,11643.3/8.1,418.4,8.3,7.1,3.3,3.9,100.9/100.1,103.4/105.5,88.3/72.9,15.8,160.0,73.4,235,49.8,1705.3/11.9,54829,208,98.9/91.2,77.0/58.7,-99,-99,85.93,48.27,53.95,56.40,42.01,13.55,48.57,63.04,10.69,5.75,6.31,17.39,15.85,193.91,0.52,42.01,17.58,30.30,33.58,43.85,48.27,100.0,8827.81629757085,46.837027069056305,6845.229509999999,89373638.0,56748830000.0,87439810000.0,168.175238863746,2.06006877313944,5.3445778787136105,26.0908809797568,28.9119934845476,10483802377.0,0.7290000000000001,20.7856433573743,3.68332944412231,77.6,67.51,72.4319512195122,4.23340736959348,77546481.0,66950259.0,10.288405674018302,2.0728372755302,74.292 +47,Saudi Arabia,WesternAsia,2206714,32938,15.3,132.9,653219,3.4,20710.6,2.3,46.0,51.8,5.9,22.7,71.4,5.5,20.0/78.5,96,96,182329,135904,46426,-56724,2.8,83.1,2.1,2.7,25.2/5.6,10185.9/32.3,70.2,13.0,4.7,2.6,...,111.1/107.9,93.7/122.6,61.8/64.4,19.9,176.6,69.6,131,0.5,601.0/19.5,25904,287,97.0/97.0,100.0/100.0,...,-99,146.41,138.05,76.35,60.41,48.37,2.85,36.31,74.18,17.96,7.29,8.01,13.72,12.49,21.07,4.75,48.37,14.36,32.07,40.54,30.22,138.05,99.93,14520.2110951169,39.7948324923324,867.640758,37503000.0,17446931306.6667,54304994784.6974,118.02997718146901,1.51967798314106,5.23025318980217,34.8530604740613,34.372878179752306,261725653.0,0.585,29.3421244342998,-0.838194579675057,76.487,73.671,74.874,10.2513563494886,14125194.0,18973953.0,3.38483623653337,2.02651444937161,83.62200000000001 +48,Serbia,SouthernEurope,88499,8791,100.5,95.6,37160,0.8,5238.6,8.2,31.4,60.5,19.4,24.5,56.1,15.5,43.4/59.9,102,102,14852,19231,-4379,-1751,-0.4,55.6,-0.3,1.6,16.5/24.5,807.4/9.1,254.1,9.8,10.4,2.5,4.2,101.2/101.5,97.4/96.0,66.9/50.2,34.4,120.5,65.3,71,31.1,37.7/4.3,393,62,99.4/98.9,98.2/94.2,0.90,-99,133.43,40.80,61.38,53.86,33.79,17.87,29.93,55.29,82.66,3.14,3.33,31.88,30.07,142.63,0.70,33.79,7.25,21.07,24.96,27.20,40.80,100.0,5116.37695128391,50.876524160932505,7.355192,2442731.0,5943301156.75442,4802207665.47188,138.66545344252398,-5.264526002465759,8.433958142995829,50.540787909056704,13.0006287901327,396951920.0,0.755,57.1320754796352,3.13106248590119,78.1,73.1,75.5390243902439,1.95935588331478,3580264.0,3440594.0,,,55.942 +49,Singapore,South-easternAsia,719,5709,8155.5,97.7,292734,2.0,52239.0,~0.0,26.4,73.6,0.3,17.0,82.6,2.0,57.8/76.1,112,112,329871,283009,46862,57922,1.7,100.0,2.0,1.2,15.0/19.5,2543.6/45.4,~0.0,2.1,4.9,1.9,2.9,-99,-99,-99,23.8,146.1,82.1,293,23.1,56.4/10.2,27,209,100.0/...,100.0/...,-99,-99,86.50,92.70,83.42,69.87,82.41,21.63,43.39,37.04,-71.47,2.75,3.65,36.41,27.39,134.33,0.74,82.41,70.22,76.57,71.68,58.33,92.70,100.0,45178.6935099864,29.520863642741602,5062.992579,38094990.0,169389575827.796,180034252403.28,113.265922901941,16.2638231598757,4.44038286805153,170.705375433905,54.51476246247721,147178835744.0,0.884,145.307195340781,0.5762603101663709,85.4,80.9,83.0951219512195,3.1548782818950403,2674905.0,2937348.0,14.0473782042035,33.4574635273207,100.0 +50,Slovakia,EasternEurope,49035,5448,113.3,94.6,87268,3.8,16082.5,3.7,34.8,61.5,3.3,34.5,62.2,9.9,51.4/68.0,97,97,77565,75156,2409,193,0.1,53.6,-0.3,1.4,15.4/21.8,177.2/3.3,2.7,5.7,8.1,3.4,4.2,99.2/100.2,92.8/92.1,64.6/41.8,20.0,122.3,85.0,54,40.3,30.7/5.6,264,121,100.0/100.0,99.4/98.2,-99,-99,152.55,64.75,69.82,62.63,44.90,9.85,36.03,43.51,65.06,5.62,5.57,17.78,17.94,61.59,1.62,44.90,16.49,31.29,38.84,33.17,64.75,100.0,14893.3474884849,43.716889591369,,7925.0,10557099767.6392,9556991730.001741,109.590332058318,-1.9212403897281998,6.74253478646278,95.17070123262519,25.145243818432103,8812917854.0,0.6940000000000001,92.9605858547623,1.3119458822323402,80.7,73.8,77.16585365853659,1.10193325763504,2793675.0,2645557.0,18.7118779603018,18.524609259480396,53.751000000000005 +51,Slovenia,SouthernEurope,20273,2080,103.3,98.6,42777,2.3,20689.8,2.4,32.7,64.9,8.9,29.6,61.5,8.1,51.8/62.2,89,89,27585,26646,939,2216,0.3,49.7,0.1,1.6,15.0/26.3,236.0/11.4,0.6,2.5,9.2,2.8,5.5,99.4/99.2,110.5/110.8,98.5/68.2,36.7,113.2,73.1,143,62.0,12.8/6.2,154,135,99.7/99.4,99.1/99.1,-99,-99,175.45,78.23,75.95,64.35,53.24,8.34,26.48,26.37,60.50,4.20,4.21,23.82,23.77,60.26,1.66,53.24,14.06,34.46,43.48,43.13,78.23,100.0,20396.0443337182,51.344338033450605,0.5664,1087075.0,8256449246.51285,5649619234.16317,107.402110095793,6.152710431123331,8.187017589807509,82.9649226603655,29.0499006655722,1755384350.0,0.7879999999999999,73.9660327409365,1.4291074331929698,84.0,78.2,81.0292682926829,0.9820473470246899,1038723.0,1027665.0,18.3903854285229,11.1080352663704,54.273 +52,South Africa,SouthernAfrica,1221037,56717,46.8,96.4,314571,1.3,5773.0,2.4,28.9,68.7,6.1,26.2,67.7,26.0,46.4/61.1,125,126,74111,74744,-633,-13644,1.4,64.8,1.6,2.6,29.0/8.4,3142.5/5.8,1201.9,36.5,8.8,0.8,6.0,97.3/102.2,111.5/88.0,23.3/15.7,42.2,159.3,51.9,581,7.6,489.8/9.1,7102,122,99.6/81.4,69.6/60.5,0.47,-99,144.72,98.96,24.28,61.72,43.12,3.58,42.98,63.56,88.74,9.51,10.41,10.51,9.60,41.97,2.38,43.12,16.33,30.28,36.27,40.20,98.96,84.4,6181.72999837607,52.368039896373396,833.347947527025,20821044.0,15387496170.6385,15773982430.0099,146.053721453082,-2.54979944985608,8.11311826109886,29.6276693701772,19.966159379694602,2040001338.0,0.406,28.3462255610144,5.18108223263743,67.064,60.162,63.538000000000004,1.04366339589233,28883601.0,28116850.0,26.948876540079603,49.2065136907516,65.85 +53,Spain,SouthernEurope,505944,46354,92.9,96.2,1192955,3.2,25865.4,2.6,23.6,73.7,3.9,19.2,76.8,18.3,52.1/64.2,102,102,281777,302539,-20762,16208,-0.2,79.6,0.7,1.3,14.7/25.3,5853.0/12.7,28.8,2.9,9.0,3.8,4.3,105.6/104.5,129.6/130.0,97.1/82.5,39.1,107.9,78.7,617,36.8,234.0/5.1,1432,102,100.0/100.0,99.8/100.0,-99,-99,183.65,87.87,68.72,76.65,54.98,8.26,32.63,37.46,88.04,4.38,5.23,22.81,19.13,52.02,1.92,54.98,18.83,37.65,44.68,53.68,87.87,100.0,27021.2619595246,51.1697189700603,1078.63356,71598374.0,144761654744.814,72302235551.4249,108.375335054149,2.7130880765728396,8.873129636049269,35.1783922236242,23.007320906325802,17094347468.0,0.743,31.5991868337295,1.95608333333334,86.1,80.6,83.28292682926829,1.2259930602176599,23723820.0,22869416.0,13.722180814164698,33.1996882754661,80.08 +54,Sri Lanka,SouthernAsia,65610,20877,332.9,92.5,82316,4.8,3973.7,8.7,30.7,60.6,27.4,25.9,46.6,5.2,30.4/75.0,120,122,10546,19501,-8955,-2009,0.5,18.4,0.8,2.1,24.0/14.9,38.7/0.2,44.2,8.2,3.5,...,2.2,100.6/102.7,102.0/97.5,24.0/15.6,5.8,112.8,30.0,587,33.1,18.4/0.9,179,20,98.5/95.0,88.1/96.7,0.53,-99,88.99,30.28,65.43,80.04,33.47,17.49,47.19,61.90,2.40,4.91,4.47,20.38,22.38,238.64,0.42,33.47,8.74,21.62,36.79,19.51,30.28,97.5,3666.8671628873,52.74330001173139,398.473464249,5403577.0,7689872443.07136,4352662706.89619,147.08785819643,-2.64102153429613,3.81142050027847,21.831465280542897,24.371033228059503,79026655.0,0.584,29.0553049222384,7.70413767850603,79.979,73.238,76.648,2.14799913812899,11133868.0,10310132.0,12.5312523431743,14.925378254670301,18.384 +55,Sweden,NorthernEurope,438574,9911,24.2,100.2,495694,4.1,50687.5,1.3,26.3,72.4,1.8,18.2,79.9,7.3,60.7/68.0,100,100,139574,140838,-1263,23250,0.8,85.8,0.8,1.9,17.5/25.5,1639.8/16.8,348.5,2.4,11.9,4.1,7.7,125.6/120.6,150.0/131.5,75.7/49.6,43.6,130.4,90.6,54,68.9,43.4/4.5,1428,206,100.0/100.0,99.2/99.6,-99,-99,172.74,107.23,53.35,70.64,75.88,11.77,31.60,17.87,59.13,2.52,3.22,39.66,31.08,71.27,1.40,75.88,26.86,52.39,67.94,78.27,107.23,100.0,48316.2767581085,59.965651998891104,,,74155873150.7377,69960800756.0849,106.491774734342,3.0840063477233,11.018746346235302,43.734721932138,28.259404025085804,17434042461.0,0.8,41.200027502143705,1.79449904665596,84.1,80.8,82.409756097561,1.0335017217020899,5025514.0,5032184.0,28.1309958240849,16.2172913322271,87.146 +56,Switzerland,WesternEurope,41291,8476,214.5,98.2,670790,0.8,80831.1,0.7,25.5,73.8,3.5,20.4,76.1,4.6,62.5/74.5,106,106,304691,269157,35534,77378,1.2,73.9,1.1,1.5,14.9/24.1,2438.7/29.4,110.1,3.9,11.7,4.1,5.1,103.8/104.1,99.4/103.0,58.5/56.9,32.5,142.0,88.0,74,31.6,35.3/4.3,552,126,100.0/100.0,99.9/99.8,-99,-99,173.54,95.35,77.55,71.04,122.06,14.04,28.30,20.77,69.32,3.01,3.15,33.24,31.78,81.89,1.22,122.06,56.57,90.68,122.72,119.85,95.35,100.0,60640.1486576029,49.9325804984945,1581.3523599999999,26732570.0,120397427652.378,105500793072.19301,98.26686201104928,6.4165192839183405,12.346322089433698,65.0326631233501,34.2561212495427,29844323632.0,0.767,54.4753676082932,0.533795988132759,85.6,81.6,83.55121951219509,0.681602395155031,4263869.0,4187971.0,10.401162657241802,24.961570781434002,73.76100000000001 +57,Thailand,South-easternAsia,513120,69038,135.1,95.2,395168,2.8,5814.8,9.1,35.7,55.1,34.0,22.7,43.3,0.6,62.7/79.8,129,126,213927,195666,18260,32149,0.4,50.4,3.0,1.5,17.3/16.9,3913.3/5.8,554.1,11.2,4.1,...,4.1,99.2/106.1,125.3/132.6,57.3/40.5,4.9,125.8,39.3,611,32.0,316.2/4.7,3338,83,97.6/98.0,89.9/96.1,0.02,-99,57.21,34.28,50.22,80.66,43.71,24.43,43.56,73.23,-20.21,3.80,3.54,26.29,28.27,212.03,0.47,43.71,14.94,29.92,48.31,21.42,34.28,99.9,4783.33166672603,40.4312626405645,2511.891367964,70704889.0,70666590666.765,46384831962.7385,111.286809151122,9.63234113702125,3.74601632356644,66.6819293721371,34.774385852602,43987099050.0,0.604,54.2259926048092,0.66563189313507,80.468,72.977,76.683,1.3685609353213,35458012.0,33751846.0,14.7816935281654,30.090698640731503,49.2 +58,The former Yugoslav Republic of Macedonia,SouthernEurope,25713,2083,82.6,100.0,10052,3.8,4836.1,12.0,27.9,65.1,16.2,29.2,54.5,27.3,43.9/67.8,111,112,4785,6757,-1972,-204,0.1,57.1,0.1,1.5,16.7/19.5,130.7/6.3,1.4,9.0,6.5,2.8,...,92.8/93.6,78.2/80.3,46.8/37.5,31.7,105.4,70.4,110,39.6,7.5/3.6,53,53,99.8/98.9,97.2/82.6,2.18,-99,116.42,39.85,61.34,63.46,30.93,14.67,33.79,83.38,75.54,3.71,3.57,26.93,28.04,132.83,0.75,30.93,6.02,18.99,25.41,20.74,39.85,100.0,4432.6627827268,42.6758558683268,,,1622275887.9976401,1180295136.21959,110.915833333333,-0.8555034408947529,6.06211498379707,55.145719342636994,18.4270982646989,186063939.0,0.534,68.9915645536526,1.3516188967743998,77.639,73.584,75.589,0.990700534450902,1040211.0,1041785.0,17.1611135905492,15.6219928727508,57.748000000000005 +59,Turkey,WesternAsia,783562,80745,104.9,97.0,717888,4.0,9125.8,8.6,26.4,65.0,19.6,27.5,52.9,10.8,30.4/71.4,120,122,142606,198602,-55996,-32278,1.6,73.4,2.0,2.1,25.0/12.0,2964.9/3.8,3006.3,12.6,5.4,1.7,4.8,102.1/102.8,101.1/103.8,88.3/101.0,14.9,96.0,53.7,388,15.1,346.0/4.5,1303,65,100.0/100.0,98.3/85.5,0.30,-99,129.63,55.64,58.91,71.68,38.60,8.87,47.58,70.46,73.19,5.43,6.28,18.41,15.92,121.45,0.82,38.60,10.56,25.16,33.46,26.45,55.64,100.0,12064.016560053999,49.831742508980206,4800.237745146,107917326.0,52747000000.0,26036000000.0,174.96870328849,-4.75959953015096,4.21630293130875,24.7737943311504,26.482751470837197,3500896134.0,0.626,29.284515909690104,11.1443110840764,80.08800000000001,74.149,77.161,2.06814147502603,41130856.0,39971036.0,17.8494731591829,18.062541363121102,74.64399999999999 +60,Ukraine,EasternEurope,603500,44223,76.3,86.0,90615,-9.9,2021.6,14.0,26.3,59.7,15.7,24.6,59.7,8.8,52.3/67.5,137,137,36369,39184,-2815,-189,-0.5,69.7,-0.3,1.5,15.5/23.2,4834.9/10.8,1644.8,8.8,7.1,3.0,5.9,105.1/102.8,98.2/100.2,88.4/76.5,12.3,144.0,49.3,102,16.6,227.3/5.1,3203,98,95.5/97.8,97.4/92.6,1.63,-99,87.49,26.93,48.73,49.81,26.22,22.87,39.16,67.26,49.94,5.30,6.01,18.88,16.63,512.06,0.20,26.22,9.36,18.14,19.87,19.69,26.93,100.0,2845.42446564177,46.5935679326923,53.792981999999995,6794396.0,13860000000.0,12231000000.0,235.299204427534,-2.17665769624938,6.99532032012939,48.0142981525409,12.257723328201301,1267145051.0,0.647,55.703543236629294,14.438322748874901,76.78,67.02,71.7809756097561,3.2414928995749106,24074287.0,20756848.0,20.0345254939706,14.503486162940199,69.24600000000001 +61,United Arab Emirates,WesternAsia,83600,9400,112.4,262.4,370296,3.8,40438.8,0.7,44.9,54.4,3.5,21.1,75.4,3.7,41.7/90.8,70,70,195613,201908,-6296,-99,2.0,85.5,2.9,1.8,13.9/2.4,8095.1/88.4,1.3,6.2,3.6,1.6,-99,116.0/116.7,-99,-99,20.0,187.4,91.2,56,3.8,211.4/23.2,8642,366,99.6/100.0,98.0/95.2,-99,-99,139.27,116.77,79.34,60.49,67.98,5.60,35.05,58.52,8.86,9.70,10.65,10.30,9.39,42.07,2.38,67.98,68.84,68.39,55.36,63.92,116.77,100.0,37929.2743595731,18.3979811747869,16616.244609999998,95306195.0,,,113.302920986271,,3.33428233861923,99.5949384086332,49.4811470103372,2188953095.0,0.659,75.4094120296224,1.9668255781883899,79.008,76.96600000000001,77.64699999999999,,2891723.0,6595480.0,0.0664571906833831,,86.24799999999999 +62,United Kingdom,NorthernEurope,242495,66182,273.6,97.4,2858003,2.2,44162.4,0.7,19.4,79.9,1.2,18.4,80.4,5.0,57.0/68.6,108,108,415856,635570,-219713,-122571,0.6,82.6,0.9,1.9,17.7/23.9,8543.1/13.2,151.7,4.1,9.1,2.8,5.7,108.1/108.4,130.4/125.3,64.1/49.0,30.0,125.8,92.0,102,12.9,419.8/6.5,4482,116,100.0/100.0,99.1/99.6,-99,-99,172.87,96.85,58.81,74.28,69.49,10.00,34.60,34.88,78.91,4.16,4.40,24.02,22.75,69.10,1.45,69.49,30.98,51.03,55.85,76.84,96.85,100.0,36564.2644505942,56.0698960446915,5915.641,151159067.0,372378473476.58203,228132723334.37802,114.94359164046601,-3.48923552866848,9.631694108247759,30.3661254439058,16.321879916029,75275694845.0,0.7809999999999999,31.579013422524,2.55775577557754,83.1,79.5,81.25609756097559,1.7710938428571499,33464674.0,32594185.0,25.523503536041304,33.2275244819321,83.14299999999999 +63,United States of America,NorthernAmerica,9833517,324460,35.5,98.0,18036648,2.6,56053.8,1.0,19.7,79.3,1.5,17.2,81.3,4.9,55.7/68.1,111,113,1453167,2249661,-796494,-462961,0.7,81.6,1.0,1.9,18.9/21.5,46627.1/14.5,616.5,6.0,17.1,2.6,5.4,100.0/100.3,98.5/96.7,99.6/72.8,19.1,117.6,74.6,1513,33.9,5254.3/16.2,83887,289,99.4/98.2,100.0/100.0,-99,-99,179.73,123.17,51.24,68.22,75.42,3.26,34.58,31.19,67.95,11.23,12.24,8.90,8.17,23.53,4.25,75.42,40.30,58.59,75.57,70.02,123.17,100.0,46371.3548323046,52.1558056764975,41591.551767000004,849403000.0,779305000000.0,521836000000.0,112.41155730230801,-2.25626437585357,17.0612692832947,12.094833790784,17.531695170093,156937052150.0,0.762,15.0474864512352,2.1301100036596297,81.1,76.1,78.5390243902439,3.1090104054349603,164193686.0,160791853.0,11.7642666978839,49.600037277589905,82.05799999999999 +64,Venezuela (Bolivarian Republic of),SouthAmerica,912050,31977,36.3,99.0,344331,-6.2,11068.9,5.3,44.7,50.0,11.9,26.8,61.3,6.6,51.5/78.3,118,119,19731,16324,3407,-20360,1.4,89.0,1.5,2.4,27.6/9.9,1404.4/4.5,174.2,13.8,5.3,...,...,98.6/101.3,93.0/86.5,.../...,22.2,93.0,61.9,328,53.1,185.2/6.1,7460,90,95.0/77.9,97.5/69.9,0.01,-99,0.00,3.35,14.72,36.90,38.30,202.07,46.24,72.90,91.17,3.51,3.18,28.48,31.42,4469.07,0.02,38.30,7.51,23.55,39.40,37.34,3.35,99.2,,53.643589379931,2.79291553183396,4209158.0,,,,,1.1812101118266598,,,,,,,76.194,68.523,72.24600000000001,0.48784414488216293,14843348.0,14547061.0,,,88.18299999999999 +65,Vietnam,South-easternAsia,330967,95541,308.1,98.0,193241,6.7,2067.9,18.9,37.0,44.2,41.8,22.9,35.2,2.2,73.9/83.3,136,134,176632,174111,2520,906,1.1,33.6,3.0,2.0,23.1/11.1,72.8/0.1,11.0,19.3,7.1,1.2,5.7,108.4/109.3,-99,28.9/28.8,26.7,130.6,52.7,616,47.2,166.9/1.8,2977,30,99.1/96.9,94.4/69.7,1.73,-99,36.12,24.77,47.04,47.87,40.11,26.76,33.00,88.10,-12.87,4.52,7.03,22.10,14.22,285.55,0.35,40.11,15.49,28.31,39.60,20.46,24.77,100.0,1613.26480486729,43.1200318300567,453.34954000000005,42592762.0,13070000000.0,17100000000.0,153.63165215668502,-0.736884881932091,5.53212836384773,101.593435844166,25.4579976927572,74113940404.0,0.6659999999999999,98.79114458222419,3.52025688811617,79.366,71.124,75.241,2.2679695552446697,47405623.0,47191019.0,,,35.213 diff --git a/examples/aimlapi-js/image_1.png b/examples/aimlapi-js/image_1.png new file mode 100644 index 00000000..9a5aa164 Binary files /dev/null and b/examples/aimlapi-js/image_1.png differ diff --git a/examples/aimlapi-js/package-lock.json b/examples/aimlapi-js/package-lock.json new file mode 100644 index 00000000..764a97ed --- /dev/null +++ b/examples/aimlapi-js/package-lock.json @@ -0,0 +1,1104 @@ +{ + "name": "aimlapi-code-interpreter", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "aimlapi-code-interpreter", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@e2b/code-interpreter": "^1.0.1", + "dotenv": "^16.4.5", + "openai": "^4.25.0" + }, + "devDependencies": { + "@types/node": "^20.12.11", + "tsx": "^4.9.3", + "typescript": "^5.4.5" + } + }, + "node_modules/@bufbuild/protobuf": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.5.2.tgz", + "integrity": "sha512-foZ7qr0IsUBjzWIq+SuBLfdQCpJ1j8cTuNNT4owngTHoN5KsJb8L9t65fzz7SCeSWzescoOil/0ldqiL041ABg==", + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@connectrpc/connect": { + "version": "2.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@connectrpc/connect/-/connect-2.0.0-rc.3.tgz", + "integrity": "sha512-ARBt64yEyKbanyRETTjcjJuHr2YXorzQo0etyS5+P6oSeW8xEuzajA9g+zDnMcj1hlX2dQE93foIWQGfpru7gQ==", + "license": "Apache-2.0", + "peerDependencies": { + "@bufbuild/protobuf": "^2.2.0" + } + }, + "node_modules/@connectrpc/connect-web": { + "version": "2.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@connectrpc/connect-web/-/connect-web-2.0.0-rc.3.tgz", + "integrity": "sha512-w88P8Lsn5CCsA7MFRl2e6oLY4J/5toiNtJns/YJrlyQaWOy3RO8pDgkz+iIkG98RPMhj2thuBvsd3Cn4DKKCkw==", + "license": "Apache-2.0", + "peerDependencies": { + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "2.0.0-rc.3" + } + }, + "node_modules/@e2b/code-interpreter": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@e2b/code-interpreter/-/code-interpreter-1.5.1.tgz", + "integrity": "sha512-mkyKjAW2KN5Yt0R1I+1lbH3lo+W/g/1+C2lnwlitXk5wqi/g94SEO41XKdmDf5WWpKG3mnxWDR5d6S/lyjmMEw==", + "license": "MIT", + "dependencies": { + "e2b": "^1.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@types/node": { + "version": "20.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.1.tgz", + "integrity": "sha512-jJD50LtlD2dodAEO653i3YF04NWak6jN3ky+Ri3Em3mGR39/glWiboM/IePaRbgwSfqM1TpGXfAg8ohn/4dTgA==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compare-versions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", + "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/e2b": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/e2b/-/e2b-1.7.0.tgz", + "integrity": "sha512-BtMHoSlUpeZUx9SgkjX2PRsg+vvgZbM0m1TzuQumamQpuaEowLXeRR3rrb9cmqXWhifoLEzwvyZW2y0hcWBfPw==", + "license": "MIT", + "dependencies": { + "@bufbuild/protobuf": "^2.2.2", + "@connectrpc/connect": "2.0.0-rc.3", + "@connectrpc/connect-web": "2.0.0-rc.3", + "compare-versions": "^6.1.0", + "openapi-fetch": "^0.9.7", + "platform": "^1.3.6" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/form-data": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", + "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "license": "MIT" + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "license": "MIT", + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/openai": { + "version": "4.104.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.104.0.tgz", + "integrity": "sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + }, + "bin": { + "openai": "bin/cli" + }, + "peerDependencies": { + "ws": "^8.18.0", + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/openai/node_modules/@types/node": { + "version": "18.19.112", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.112.tgz", + "integrity": "sha512-i+Vukt9POdS/MBI7YrrkkI5fMfwFtOjphSmt4WXYLfwqsfr6z/HdCx7LqT9M7JktGob8WNgj8nFB4TbGNE4Cog==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/openai/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" + }, + "node_modules/openapi-fetch": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/openapi-fetch/-/openapi-fetch-0.9.8.tgz", + "integrity": "sha512-zM6elH0EZStD/gSiNlcPrzXcVQ/pZo3BDvC6CDwRDUt1dDzxlshpmQnpD6cZaJ39THaSmwVCxxRrPKNM1hHrDg==", + "license": "MIT", + "dependencies": { + "openapi-typescript-helpers": "^0.0.8" + } + }, + "node_modules/openapi-typescript-helpers": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/openapi-typescript-helpers/-/openapi-typescript-helpers-0.0.8.tgz", + "integrity": "sha512-1eNjQtbfNi5Z/kFhagDIaIRj6qqDzhjNJKz8cmMW0CVdGwT6e1GLbAfgI0d28VTJa1A8jz82jm/4dG8qNoNS8g==", + "license": "MIT" + }, + "node_modules/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", + "license": "MIT" + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tsx": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz", + "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } +} diff --git a/examples/aimlapi-js/package.json b/examples/aimlapi-js/package.json new file mode 100644 index 00000000..d19586e2 --- /dev/null +++ b/examples/aimlapi-js/package.json @@ -0,0 +1,22 @@ +{ + "name": "aimlapi-code-interpreter", + "version": "1.0.0", + "description": "Example: running AI/ML API with E2B Code Interpreter", + "main": "aimlapi.ts", + "scripts": { + "start": "tsx aimlapi.ts" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@types/node": "^20.12.11", + "tsx": "^4.9.3", + "typescript": "^5.4.5" + }, + "dependencies": { + "@e2b/code-interpreter": "^1.0.1", + "dotenv": "^16.4.5", + "openai": "^4.25.0" + } +} diff --git a/examples/aimlapi-python/.env.template b/examples/aimlapi-python/.env.template new file mode 100644 index 00000000..19c03eae --- /dev/null +++ b/examples/aimlapi-python/.env.template @@ -0,0 +1,4 @@ +# TODO: Get your E2B API key from https://e2b.dev/docs +E2B_API_KEY="" +# TODO: Get your AIML API key from https://aimlapi.com/app +AIML_API_KEY="" diff --git a/examples/aimlapi-python/README.md b/examples/aimlapi-python/README.md new file mode 100644 index 00000000..33f61984 --- /dev/null +++ b/examples/aimlapi-python/README.md @@ -0,0 +1,34 @@ +# AI/ML API with E2B Code Interpreter + +This example demonstrates how to run the [AI/ML API](https://aimlapi.com/app/?utm_source=e2b&utm_medium=github&utm_campaign=integration) with the [E2B Code Interpreter SDK](https://github.com/e2b-dev/code-interpreter). +The script sends a prompt to an AI/ML API model and executes the returned Python code in a secure E2B sandbox. + +## Prerequisites +- Python 3.11+ +- `AIML_API_KEY` and `E2B_API_KEY` environment variables + +## Setup & run + +### 1. Install dependencies +```bash +poetry install +```` + +### 2. Set up `.env` + +1. Copy `.env.template` to `.env` +2. Get [E2B API key](https://e2b.dev/docs/getting-started/api-key) +3. Get [AIML API key](https://aimlapi.com/app/?utm_source=e2b&utm_medium=github&utm_campaign=integration) and set it as `AIML_API_KEY` in `.env` + +## Run the example + +Install dependencies and execute the script: + +```bash +pip install openai e2b-code-interpreter python-dotenv +python aimlapi_hello_world/main.py +``` + +### Models + +The example uses **`openai/gpt-5-chat-latest`** by default. You can switch to any OpenAI-compatible model available via AI/ML API (make sure your key has access). diff --git a/examples/aimlapi-python/aimlapi_hello_world/main.py b/examples/aimlapi-python/aimlapi_hello_world/main.py new file mode 100644 index 00000000..ddee2948 --- /dev/null +++ b/examples/aimlapi-python/aimlapi_hello_world/main.py @@ -0,0 +1,183 @@ +from dotenv import load_dotenv + +load_dotenv() + +import os +import re +from typing import Optional, Tuple + +from openai import OpenAI +from e2b_code_interpreter import Sandbox + +# ---------- OpenAI-compatible client (AI/ML API) ---------- +client = OpenAI( + base_url="https://api.aimlapi.com/v1", + api_key=os.environ["AIML_API_KEY"], + default_headers={ + "HTTP-Referer": "https://github.com/e2b-dev/e2b-cookbook", + "X-Title": "e2b-cookbook:aimlapi-python", + }, +) + +MODEL_ID = "openai/gpt-5-chat-latest" + +# ---------- Prompts ---------- +SYSTEM_STRAWBERRY = ( + "You are a helpful assistant that can execute python code in a Jupyter notebook. " + "Only respond with the code to be executed and nothing else. " + "Respond with a Python code block in Markdown (```python ... ```)." +) +PROMPT_STRAWBERRY = "Calculate how many r's are in the word 'strawberry'" + +SYSTEM_LINEAR = ( + "You're a Python data scientist. You are given tasks to complete and you run Python code to solve them.\n" + "Information about the csv dataset:\n" + "- It's in the `/home/user/data.csv` file\n" + "- The CSV file uses \",\" as the delimiter\n" + "- It contains statistical country-level data\n" + "Rules:\n" + "- ALWAYS FORMAT YOUR RESPONSE IN MARKDOWN\n" + "- RESPOND ONLY WITH PYTHON CODE INSIDE ```python ... ``` BLOCKS\n" + "- You can use matplotlib/seaborn/pandas/numpy/etc.\n" + "- Code is executed in a secure Jupyter-like environment with internet access and preinstalled packages" +) +PROMPT_LINEAR = ( + 'Plot a linear regression of "GDP per capita (current US$)" vs ' + '"Life expectancy at birth, total (years)" from the dataset. Drop rows with missing values.' +) + + +# ---------- Helpers ---------- +def extract_python_code(markdown: str) -> Optional[str]: + """Extract python code from a markdown response with fallbacks.""" + if not markdown: + return None + m1 = re.search(r"```python\s*([\s\S]*?)```", markdown, re.IGNORECASE) + if m1 and m1.group(1): + return m1.group(1).strip() + m2 = re.search(r"```\s*([\s\S]*?)```", markdown) + if m2 and m2.group(1): + return m2.group(1).strip() + if any(x in markdown for x in ("import ", "def ", "print(", "len(")): + return markdown.strip() + return None + + +def llm_python_code(system_prompt: str, user_prompt: str) -> str: + """Ask the model for python code and return extracted code (raises on failure).""" + try: + resp = client.chat.completions.create( + model=MODEL_ID, + messages=[ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": user_prompt}, + ], + ) + except Exception as e: + raise RuntimeError(f"LLM request failed: {e}") + + content = resp.choices[0].message.content if resp and resp.choices else None + if content is None: + raise RuntimeError("Model returned null/empty content (possibly filtered). Try adjusting the prompt.") + + code = extract_python_code(content) + if not code: + raise RuntimeError("No Python code block found in LLM response.") + return code + + +def run_code_in_sandbox(code: str) -> Tuple[str, bytes | None]: + """ + Execute code in E2B Sandbox. + Returns (text_output, png_bytes_or_none). + """ + with Sandbox() as sandbox: + execution = sandbox.run_code(code) + + # Text output + text = (execution.text or "").strip() + if not text and execution.results: + first = execution.results[0] + text = str(getattr(first, "text", "") or "").strip() + + # Image (first result png if available) + png_bytes: bytes | None = None + if execution.results: + first = execution.results[0] + if getattr(first, "png", None): + import base64 + png_bytes = base64.b64decode(first.png) + + return text, png_bytes + + +def upload_dataset_if_exists(sandbox: Sandbox, local_path: str = "./data.csv", target_name: str = "data.csv") -> bool: + """ + Upload local CSV to sandbox home so it's available as /home/user/data.csv. + Returns True if uploaded, False if file not found. + """ + if not os.path.exists(local_path): + return False + with open(local_path, "rb") as f: + data = f.read() + sandbox.files.write(target_name, data) + return True + + +# ---------- Tests ---------- +def test_strawberry() -> str: + code = llm_python_code(SYSTEM_STRAWBERRY, PROMPT_STRAWBERRY) + text, _ = run_code_in_sandbox(code) + if "3" not in text: + raise AssertionError(f"Expected '3' in output, got: {text!r}") + return text + + +def test_linear_regression(image_out: str = "image_1.png") -> str: + # Get code first to avoid leaving sandbox running on LLM failure + code = llm_python_code(SYSTEM_LINEAR, PROMPT_LINEAR) + + with Sandbox() as sandbox: + uploaded = upload_dataset_if_exists(sandbox, "./data.csv", "data.csv") + if not uploaded: + print("⚠️ data.csv not found next to main.py — running anyway, code may fail if it expects the file.") + + execution = sandbox.run_code(code) + + # Text output + text = (execution.text or "").strip() + if not text and execution.results: + first = execution.results[0] + text = str(getattr(first, "text", "") or "").strip() + + # Image save (if returned) + if execution.results: + first = execution.results[0] + if getattr(first, "png", None): + import base64 + try: + png_bytes = base64.b64decode(first.png) + with open(image_out, "wb") as f: + f.write(png_bytes) + print(f"✅ Image saved as {image_out}") + except Exception as e: + print(f"⚠️ Could not save image: {e}") + else: + print("⚠️ No image result returned.") + + return text + + +# ---------- Entry ---------- +def main(): + print("=== Strawberry test ===") + strawberry_out = test_strawberry() + print(PROMPT_STRAWBERRY, "->", strawberry_out) + + print("\n=== Linear regression test ===") + lin_out = test_linear_regression() + print("Linear regression output:\n", lin_out) + + +if __name__ == "__main__": + main() diff --git a/examples/aimlapi-python/data.csv b/examples/aimlapi-python/data.csv new file mode 100644 index 00000000..4a71f4c1 --- /dev/null +++ b/examples/aimlapi-python/data.csv @@ -0,0 +1,67 @@ +,country,Region,Surface area (km2),Population in thousands (2017),"Population density (per km2, 2017)","Sex ratio (m per 100 f, 2017)",GDP: Gross domestic product (million current US$),"GDP growth rate (annual %, const. 2005 prices)",GDP per capita (current US$),Economy: Agriculture (% of GVA),Economy: Industry (% of GVA),Economy: Services and other activity (% of GVA),Employment: Agriculture (% of employed),Employment: Industry (% of employed),Employment: Services (% of employed),Unemployment (% of labour force),Labour force participation (female/male pop. %),Agricultural production index (2004-2006=100),Food production index (2004-2006=100),International trade: Exports (million US$),International trade: Imports (million US$),International trade: Balance (million US$),"Balance of payments, current account (million US$)",Population growth rate (average annual %),Urban population (% of total population)_x,Urban population growth rate (average annual %),"Fertility rate, total (live births per woman)","Population age distribution (0-14 / 60+ years, %)",International migrant stock (000/% of total pop.),Refugees and others of concern to UNHCR (in thousands),Infant mortality rate (per 1000 live births,Health: Total expenditure (% of GDP),Health: Physicians (per 1000 pop.),Education: Government expenditure (% of GDP),Education: Primary gross enrol. ratio (f/m per 100 pop.),Education: Secondary gross enrol. ratio (f/m per 100 pop.),Education: Tertiary gross enrol. ratio (f/m per 100 pop.),Seats held by women in national parliaments %,Mobile-cellular subscriptions (per 100 inhabitants),Mobile-cellular subscriptions (per 100 inhabitants).1,Individuals using the Internet (per 100 inhabitants),Threatened species (number),Forested area (% of land area),CO2 emission estimates (million tons/tons per capita),"Energy production, primary (Petajoules)",Energy supply per capita (Gigajoules),"Pop. using improved drinking water (urban/rural, %)","Pop. using improved sanitation facilities (urban/rural, %)",Net Official Development Assist. received (% of GNI),Quality Of Life Index,Purchasing Power Index,Safety Index,Health Care Index,Cost of Living,Property price to income ratio,Traffic commute time index,Pollution index,Climate index,Gross Rental Yield City Center,Gross Rental Yield Outside Center,Property Price to Rent Ratio City Center,Property Price to Rent Ratio Outside Center,Mortgate as percentage of income,Affordability Index,Cost Of Living Index,Rent Index,Cost Of Living Plus Rent Index,Grocery Index,Restaurant Price Index,Local Purchasing Power Index,Access to electricity (% of population),Adjusted net national income per capita (constant 2010 US$),Age dependency ratio (% of working-age population),"Air transport, freight (million ton-km)","Air transport, passengers carried",Commercial service exports (current US$),Commercial service imports (current US$),Consumer price index (2010 = 100),Current account balance (% of GDP),Current health expenditure (% of GDP),Exports of goods and services (% of GDP),Gross domestic savings (% of GDP),High-technology exports (current US$),Human capital index (HCI) (scale 0-1),Imports of goods and services (% of GDP),"Inflation, consumer prices (annual %)","Life expectancy at birth, female (years)","Life expectancy at birth, male (years)","Life expectancy at birth, total (years)",Military expenditure (% of GDP),"Population, female","Population, male",Tax revenue (% of GDP),"Taxes on income, profits and capital gains (% of revenue)",Urban population (% of total population)_y +0,Argentina,SouthAmerica,2780400,44271,16.2,95.9,632343,2.4,14564.5,6.0,27.8,66.2,2.0,24.8,73.1,6.5,48.6/74.4,119,119,57733,55610,2124,-15944,1.0,91.8,1.0,2.3,24.9/15.4,2086.3/4.8,5.0,13.7,4.8,3.8,5.3,109.8/110.2,110.3/103.4,102.9/63.5,38.9,143.9,69.4,256,10.0,204.0/4.7,3167,85,99.0/100.0,96.2/98.3,0.01,-99,139.59,58.40,37.37,73.30,52.57,12.07,37.95,53.33,90.67,3.77,3.90,26.53,25.64,333.23,0.30,52.57,13.92,34.05,44.06,50.37,58.40,100.0,9094.367252161,56.04635544369761,305.10200000000003,16749271.0,15274156208.2134,24982416353.4138,112.887108333333,-4.84884981091141,9.12431478500366,11.2427213207093,16.0193423909208,1494147748.0,0.611,13.9806106427674,,79.726,72.92399999999999,76.372,0.856137916373543,22572521.0,21472290.0,10.955501490436301,12.9299128513563,91.749 +1,Australia,Oceania,7692060,24451,3.2,99.3,1230859,2.4,51352.2,2.5,26.5,71.1,2.7,21.2,76.1,5.5,58.4/70.7,111,111,189630,189406,224,-57746,1.5,89.4,1.5,1.9,19.0/21.0,6763.7/28.2,58.2,3.9,9.4,3.4,5.2,102.1/102.3,133.6/141.3,106.3/75.4,28.7,132.8,84.6,948,16.2,361.3/15.3,15282,222,100.0/100.0,100.0/100.0,-99,-99,176.54,101.94,57.58,74.25,80.66,9.24,34.73,24.58,72.79,4.90,5.05,20.41,19.82,70.87,1.41,80.66,42.54,62.39,76.87,77.12,101.94,100.0,43073.9671702132,52.599670595728206,1982.586170817,74257326.0,64296388330.0338,67392204900.9734,115.686784599376,-2.68999652428858,9.20594781637192,21.1932001494647,24.687192926848997,4837243928.0,0.8029999999999999,20.576799969608103,1.94864740944522,84.6,80.5,82.5,2.00796639339341,12349632.0,12252228.0,21.915858625435,64.1103056368251,85.904 +2,Austria,WesternEurope,83871,8736,106.0,96.2,376967,1.0,44117.7,1.3,28.3,70.4,4.7,25.6,69.7,6.2,54.6/65.8,108,108,145503,149299,-3795,7020,0.6,66.0,0.4,1.4,14.1/25.1,1492.4/17.5,166.4,3.3,11.2,5.2,5.5,102.2/103.7,97.6/102.4,89.2/74.3,30.6,157.4,83.9,118,46.9,58.7/6.9,505,158,100.0/100.0,100.0/100.0,-99,-99,190.37,95.66,80.75,80.91,71.52,9.66,26.27,21.90,62.13,3.63,3.78,27.55,26.46,59.08,1.69,71.52,25.86,49.64,65.86,66.94,95.66,100.0,39557.6679946118,49.6725857002038,391.26800000000003,16171640.0,66403956922.3678,55455087774.4416,113.99973674915199,1.5345140680346,10.396616905927699,54.037671021734894,28.291362874601603,17027611644.0,0.7929999999999999,50.7355052962123,2.08126858275521,84.0,79.4,81.64390243902442,0.7561790419805479,4478340.0,4319226.0,25.3552369771872,27.0240733573006,58.093999999999994 +3,Belarus,EasternEurope,207600,9468,46.7,87.0,54609,-3.9,5750.8,7.5,38.9,53.6,9.6,32.0,58.4,0.5,54.0/67.8,122,122,23414,27464,-4050,-2037,~0.0,76.7,~0.0,1.6,16.7/21.3,1082.9/11.4,7.9,3.6,5.7,4.1,4.9,101.3/101.4,106.4/107.8,100.7/75.9,34.5,123.6,62.2,25,42.5,63.5/6.7,155,122,99.9/99.1,94.1/95.2,0.20,-99,119.23,36.43,77.74,53.76,33.84,18.73,27.66,39.64,20.07,5.31,4.82,18.85,20.75,587.51,0.17,33.84,12.21,23.47,27.19,37.60,36.43,100.0,5923.22311762587,45.5244210861446,1.9151,2493100.0,7883700000.0,4820200000.0,,-1.74028732403957,5.92578575015068,66.7896002012327,29.891194365483305,687613900.0,,66.5781545217791,6.0318372517778895,79.2,69.3,74.12926829268291,1.16241694312684,5077542.0,4420722.0,13.0190056104974,2.9331006348086297,78.134 +4,Belgium,WesternEurope,30528,11429,377.5,97.3,455107,1.5,40277.8,0.7,22.2,77.1,1.2,21.2,77.6,8.3,48.1/58.9,108,107,398033,372713,25321,1936,0.6,97.9,0.5,1.8,17.1/24.6,1387.9/12.3,63.8,3.5,10.6,3.0,6.6,104.2/104.2,177.7/156.4,85.4/65.0,38.0,115.7,85.1,37,22.6,93.4/8.3,520,196,100.0/100.0,99.5/99.4,-99,-99,160.52,91.02,55.49,78.92,75.36,6.96,36.26,48.92,75.16,5.82,5.92,17.18,16.88,44.69,2.24,75.36,29.64,53.44,65.77,82.34,91.02,100.0,38493.2724438044,55.329079400808105,1574.378609,13676844.0,115167388267.646,114004179542.095,113.128902605325,1.2267750362186298,10.338669270277,82.38680624975609,25.504993086771197,34397964674.0,0.757,80.9918274558556,2.12597086002609,83.9,79.2,81.4926829268293,0.910370732936129,5766141.0,5609017.0,23.3997209593938,33.727746392633904,97.961 +5,Bosnia and Herzegovina,SouthernEurope,51209,3507,68.8,96.4,16251,3.1,4265.0,7.3,26.5,66.2,18.0,30.4,51.7,25.4,34.3/57.5,96,97,5327,9130,-3803,-923,-1.0,39.8,0.1,1.3,14.1/23.4,34.8/0.9,157.6,7.6,9.6,1.9,-99,-99,-99,-99,21.4,90.2,65.1,91,42.7,22.2/5.8,252,85,99.7/100.0,98.9/92.0,2.20,-99,139.14,51.29,59.03,61.49,35.05,11.35,26.63,60.69,73.29,3.41,3.31,29.36,30.18,104.89,0.95,35.05,6.22,21.23,29.76,24.22,51.29,100.0,5061.66690367064,43.9790668132436,,,2006406620.98605,657386055.099024,102.85158612695,-4.33992505123469,8.93166735768318,40.830587810769,1.771104673897,236675619.0,0.618,57.043590026426706,0.8101333219530471,79.581,74.622,77.128,0.906093302475231,1709258.0,1642269.0,20.2593374095498,8.22683714661225,47.876000000000005 +6,Brazil,SouthAmerica,8515767,209288,25.0,96.6,1772591,-3.8,8528.3,5.2,22.7,72.0,15.2,21.5,63.2,12.4,56.0/78.2,135,136,185235,137552,47683,-58882,0.9,85.7,1.2,1.8,21.7/12.6,713.6/0.3,41.1,15.8,8.3,1.9,6.0,113.8/116.8,102.2/97.2,59.3/42.4,10.7,126.6,59.1,990,59.2,529.8/2.6,10948,61,100.0/87.0,88.0/51.5,0.06,-99,96.15,42.38,29.38,51.70,53.07,16.96,46.39,61.17,70.76,4.01,4.02,24.92,24.85,224.60,0.45,53.07,15.52,35.07,41.65,42.33,42.38,100.0,9359.89169634609,43.450060748941794,1736.549227,96395709.0,33676596772.93,70369731833.56,155.66878623001801,-0.727859993379999,9.46747660636902,12.5230753666957,15.348823291108902,10756516887.0,0.56,11.804638359465802,3.4463733503267204,79.156,71.804,75.456,1.4195266380701699,105601740.0,102232091.0,13.615780876238999,24.9622611349703,86.309 +7,Bulgaria,EasternEurope,111002,7085,65.3,94.6,48953,3.0,6846.8,5.1,27.6,67.2,6.5,29.4,64.1,8.1,48.5/60.1,117,119,26088,28875,-2787,196,-0.6,73.9,-0.3,1.5,14.2/27.7,102.1/1.4,33.7,8.3,8.4,4.0,4.1,96.7/97.7,97.4/100.5,82.9/65.4,19.2,129.3,56.7,104,35.1,42.4/5.9,474,103,99.6/99.0,86.8/83.7,-99,-99,138.20,51.40,59.82,54.03,36.49,9.07,27.92,63.12,77.05,5.36,5.68,18.65,17.59,77.24,1.29,36.49,8.91,23.27,30.49,29.56,51.40,100.0,7224.353984864671,54.3265513629189,1.7189599999999998,1133069.0,9383450000.0,5879280000.0,107.93895718849501,3.59956827691833,8.095603436231611,67.3035598741689,24.225190650399398,1684916675.0,0.6759999999999999,62.9680088765738,2.06435506312528,78.4,71.4,74.81463414634149,1.42170625732142,3636886.0,3439061.0,20.1081515255189,16.86693626951,74.669 +8,Canada,NorthernAmerica,9984670,36624,4.0,98.5,1552808,0.9,43205.6,1.8,28.6,69.6,2.1,19.5,78.4,7.1,60.7/69.9,109,109,388911,402954,-14043,-53083,1.0,81.8,1.2,1.6,16.0/23.5,7835.5/21.8,155.8,4.7,10.4,2.5,5.3,101.1/100.1,110.0/109.8,.../...,26.3,81.9,88.5,122,38.2,537.2/15.1,19276,324,100.0/99.0,100.0/99.0,-99,-99,167.18,108.01,60.75,69.23,70.16,6.40,36.24,26.54,44.31,5.47,6.16,18.29,16.23,42.14,2.37,70.16,29.84,50.83,69.26,65.65,108.01,100.0,41350.0699269085,48.6160745277263,2840.9851350232,91404001.0,93063926790.1683,111157192260.8,111.98483113909599,-2.81404646394062,10.5727694928646,31.4105273580442,21.322801709582897,27599664924.0,0.799,33.6232145334166,1.5968841285297,84.1,79.9,81.94878048780491,1.2933951067783702,18418770.0,18124551.0,12.7154317836521,54.9120234604106,81.35 +9,Chile,SouthAmerica,756102,18055,24.3,98.2,240796,2.3,13416.2,3.9,32.8,63.3,9.6,22.9,67.5,6.8,50.7/74.7,111,111,59884,58804,1080,-4761,0.9,89.5,1.1,1.8,20.3/16.0,469.4/2.6,3.7,7.4,7.8,...,4.9,100.0/103.3,101.3/100.0,94.4/83.0,15.8,129.5,64.3,197,23.4,82.6/4.7,540,85,99.7/93.3,100.0/90.9,0.02,-99,136.20,61.28,52.50,60.97,50.09,10.67,35.70,67.67,89.39,4.42,5.06,22.64,19.77,83.59,1.20,50.09,15.43,33.48,43.19,44.38,61.28,100.0,10980.762997382,45.3828389358575,1237.960141,17664974.0,9763417564.2942,13194488376.6783,125.566544829069,-2.15290830965023,8.983509987592699,28.439500474910304,22.4799188188258,623854353.0,0.674,27.2161650772848,2.18271846868523,82.333,77.333,79.90899999999999,1.9356127328857198,9373185.0,9097254.0,17.462826293603698,36.5514783039443,87.49 +10,"China, Hong Kong SAR",EasternAsia,1106,7365,7014.2,85.1,309236,2.4,42431.0,0.1,7.2,92.7,0.2,14.9,84.9,3.5,52.6/67.8,34,34,516588,547124,-30536,10101,0.6,100.0,0.7,1.2,11.5/23.5,2838.7/38.9,2.5,1.6,-99.0,-99,3.3,-99,98.8/102.8,73.7/63.5,-99.0,228.8,84.9,64,-99,46.2/6.4,-99,83,-99,-99,-99,-99,94.45,81.45,79.32,67.99,79.96,36.15,42.22,69.90,29.73,2.25,2.23,44.35,44.81,224.85,0.44,79.96,84.08,81.93,81.88,54.87,81.45,100.0,,38.469034560778496,12415.19932,45580297.0,103999552739.194,77558692271.0508,127.768157278191,4.57768253118139,,188.918523989014,23.080119305824198,293614183698.0,0.8220000000000001,187.90930531280898,1.48058252427183,87.6,81.9,84.6804878048781,,3978989.0,3412711.0,,,100.0 +11,China,EasternAsia,9600000,1409517,150.1,106.3,11158457,6.9,8109.1,9.2,41.1,49.7,27.0,23.9,49.1,4.6,63.0/77.7,132,133,2118981,1588696,530285,330602,0.5,55.6,3.0,1.6,17.7/16.2,978.0/0.1,301.7,11.6,5.5,1.5,-99,104.3/104.0,95.6/93.2,47.3/39.9,23.7,93.2,50.3,1080,22.0,10291.9/7.5,101394,87,97.5/93.0,86.6/63.7,0.00,-99,90.95,67.84,66.10,62.25,44.76,23.29,43.87,88.96,38.70,2.23,2.74,44.83,36.49,189.71,0.53,44.76,18.67,32.26,47.74,29.68,67.84,100.0,5480.724340937801,39.4359455718714,23323.6147,551234509.0,211364158904.64,468540008742.41205,119.088051569694,1.58497312329912,5.151193216443059,19.6922781375567,45.1323883645045,654187610235.0,0.6729999999999999,17.9401372992739,1.59313725490194,78.828,74.315,76.47,1.8965104068693999,674707818.0,711687182.0,9.419318202271429,19.1020651229559,57.96 +12,Colombia,SouthAmerica,1141748,49066,44.2,96.8,292080,3.1,6056.1,6.8,34.0,59.2,13.5,16.6,69.9,10.5,58.0/79.8,114,115,31045,44831,-13786,-18922,1.0,76.4,1.7,1.9,23.5/11.6,133.1/0.3,7127.0,17.9,7.2,...,4.5,111.6/115.4,101.5/94.8,59.9/51.5,18.7,115.7,55.9,835,52.8,84.1/1.8,5380,31,96.8/73.8,85.2/67.9,0.47,-99,115.38,37.63,48.31,65.79,34.45,19.43,43.77,63.90,81.34,4.25,4.30,23.52,23.28,283.62,0.35,34.45,10.69,23.06,28.76,24.97,37.63,98.5,5988.75423502148,46.5330306568285,1273.5686380000002,32504898.0,8305703414.6355095,12298296661.9256,131.87726913518,-3.2835570523265805,7.22628086805344,15.1452897484005,16.6070413951119,694848478.0,0.593,20.1376251940583,4.3121410323772995,79.694,74.124,76.925,3.1862726276321296,24915291.0,23985775.0,14.658915578840402,23.3441910275351,80.446 +13,Croatia,SouthernEurope,56594,4189,74.9,93.1,48676,1.6,11479.4,4.1,26.6,69.3,9.2,26.8,64.0,11.7,46.3/58.4,91,91,13648,21830,-8182,2492,-0.4,59.0,0.1,1.5,14.7/26.8,576.9/13.6,15.5,3.9,7.8,3.1,4.6,98.1/97.8,100.6/95.9,79.8/58.8,19.9,103.8,69.8,176,34.3,16.8/4.0,182,79,99.6/99.7,97.8/95.8,...,-99,170.63,60.71,72.20,65.49,48.00,10.91,28.45,33.34,82.02,3.31,3.69,30.24,27.07,89.21,1.12,48.00,10.09,29.83,39.91,37.53,60.71,100.0,13047.4642755732,52.579572358686,0.58275,2057804.0,14773948041.0347,4624578000.31845,107.363994273443,3.80106777376375,6.78913369774818,50.0289280782477,22.389513844541604,923411397.0,0.723,49.409157647110206,1.12937210282344,80.9,74.9,77.8268292682927,1.42558734937722,2139934.0,1984597.0,21.5627731110784,7.2834216667925595,56.667 +14,Cyprus,WesternAsia,9251,1180,127.7,100.2,19561,1.7,21941.9,2.3,10.6,87.2,4.1,16.7,79.2,10.3,57.8/70.4,80,80,1920,6604,-4684,-576,0.9,66.9,0.9,1.4,16.8/18.5,196.2/16.8,16.2,4.2,7.4,2.5,6.1,99.3/99.3,99.4/100.1,69.4/51.1,17.9,95.4,71.7,72,18.7,6.1/5.2,5,72,100.0/100.0,100.0/100.0,-99,-99,166.64,95.92,67.54,54.23,54.07,5.21,20.32,54.77,71.01,4.90,5.14,20.42,19.45,39.85,2.51,54.07,12.28,34.04,44.06,58.05,95.92,100.0,26093.20402367,43.37320111861529,0.34031950189000004,711554.0,13326017977.192,7831409650.46734,100.807886777964,-5.00386384410902,6.68456926941872,73.0152992340802,19.5436497639485,57707767.0,0.7509999999999999,73.3895414381535,0.5317664961745,82.794,78.547,80.672,1.62751716003059,589132.0,590548.0,24.1665342627952,23.348511602519,66.836 +15,Czechia,EasternEurope,78868,10618,137.5,96.7,185156,4.5,17561.7,2.5,37.8,59.7,2.5,37.0,60.5,3.9,51.3/67.8,102,102,161248,140316,20932,1683,0.1,73.0,0.3,1.5,15.4/25.6,405.1/3.8,6.0,2.5,7.4,3.7,4.1,99.9/99.6,106.1/105.1,76.3/54.2,20.0,129.2,81.3,53,34.5,96.5/9.2,1221,164,100.0/100.0,99.1/99.2,-99,-99,165.41,76.22,69.82,74.09,41.22,10.70,31.98,41.04,65.32,4.17,4.61,24.01,21.71,65.37,1.53,41.22,14.83,28.57,35.84,27.99,76.22,100.0,16801.7164687198,52.397390622639996,27.81465,5450671.0,27307594297.3567,21801376859.9076,110.86722809532301,1.45799390726686,7.2313390672206905,79.72607749897121,33.3962320598455,29543508515.0,0.782,72.202798068737,2.45053398460138,82.0,76.1,78.9780487804878,0.969085790261929,5385332.0,5209106.0,14.8773583802878,15.2005276465305,73.675 +16,Denmark,NorthernEurope,42921,5734,135.1,99.0,301308,1.6,53149.3,1.2,22.9,75.8,2.4,19.2,78.4,6.0,58.1/66.0,105,105,94355,85133,9222,27582,0.5,87.7,0.6,1.7,16.5/25.3,572.5/10.1,48.2,3.5,10.8,3.6,8.6,100.7/102.3,133.4/128.3,96.3/69.7,37.4,128.3,96.3,47,14.4,33.5/5.9,666,119,100.0/100.0,99.6/99.6,-99,-99,184.92,98.76,78.87,75.45,83.02,8.20,28.42,25.97,64.24,4.71,4.82,21.21,20.76,52.39,1.91,83.02,35.02,60.01,63.84,101.01,98.76,100.0,53704.9593894897,56.6199956477692,,,69657202239.7128,62995124117.5794,108.633157753772,7.79658986323749,10.108279436826699,55.1388663944531,28.8453392474058,8937322533.0,0.774,48.1422353799985,1.1471321695760601,83.1,79.2,81.10243902439029,1.1460161693832198,2897965.0,2867015.0,33.6709598218165,45.2183251328341,87.757 +17,Egypt,NorthernAfrica,1002000,97553,98.0,102.3,315917,4.2,3452.3,11.2,36.3,52.5,25.4,25.3,49.3,11.5,23.1/76.2,120,122,22507,58053,-35545,-16786,2.2,43.1,1.7,3.4,33.5/7.9,491.6/0.5,256.5,18.9,5.6,0.8,...,103.8/104.1,85.9/86.3,35.6/36.9,14.9,111.0,35.9,156,0.1,201.9/2.2,3509,36,100.0/99.0,96.8/93.1,0.78,-99,91.81,29.39,47.14,43.73,22.36,10.66,48.84,88.88,75.59,7.18,7.74,13.93,12.93,138.09,0.72,22.36,5.03,14.05,19.01,18.56,29.39,100.0,2524.4759906719896,63.8363130332394,403.82873900000004,11748510.0,18612600000.0,16081600000.0,231.094115427901,-3.37329709394813,5.28763681650162,15.818443804034601,1.78386167146974,73845751.0,0.486,29.308357348703197,29.506608394003898,73.967,69.453,71.656,1.42260927104117,47706816.0,48735777.0,,,42.705 +18,Estonia,NorthernEurope,45227,1310,30.9,88.2,22460,1.4,17112.0,3.4,27.4,69.2,3.8,29.0,67.3,7.2,55.4/69.4,136,136,13952,15759,-1807,493,-0.3,67.5,-0.4,1.6,16.4/25.9,202.3/15.4,84.2,3.2,6.4,3.3,5.5,98.5/98.3,114.7/115.6,84.8/55.4,26.7,148.7,88.4,23,52.7,19.5/14.8,242,193,100.0/99.0,97.5/96.6,-99,-99,171.09,68.48,77.00,71.30,49.50,10.54,26.71,17.71,44.56,4.11,3.95,24.33,25.30,68.75,1.45,49.50,13.98,32.47,36.74,46.76,68.48,100.0,16294.785167381202,55.1231614681643,,13103.0,6839243919.352321,4752130176.94124,115.455324823776,2.69313927893907,6.42935782670975,76.1376865328606,29.835523430561,1844023020.0,0.747,71.8574286059871,3.4172354948805697,82.6,73.8,78.0926829268293,2.02836226346766,698154.0,619230.0,20.9927107384988,19.876438451702896,68.717 +19,Finland,NorthernEurope,338440,5523,18.2,97.2,231960,0.2,42148.1,2.5,26.8,70.6,4.2,22.0,73.8,8.9,54.5/61.7,101,101,57326,60502,-3176,-979,0.4,84.2,0.5,1.8,16.4/27.8,315.9/5.7,32.6,2.3,9.7,3.0,7.2,101.4/101.7,156.3/142.8,95.6/79.3,42.0,135.5,92.7,36,73.1,47.3/8.6,757,257,100.0/100.0,99.4/88.0,-99,-99,182.93,114.97,75.37,74.85,73.06,7.60,34.92,13.38,35.83,3.74,4.60,26.72,21.76,44.51,2.25,73.06,26.95,50.96,61.47,76.43,114.97,100.0,39458.5092005397,60.0766175741488,852.0126300000001,12209646.0,29913728719.0783,31453244990.2233,110.000779878603,-0.6849719681636821,9.20693874359131,37.675589434718496,23.9580540209884,4405114576.0,0.8140000000000001,37.5609043825519,0.754015047084413,84.5,78.9,81.63170731707321,1.36568934476396,2794857.0,2713357.0,20.7765920181751,15.958140251490299,85.325 +20,France,WesternEurope,551500,64980,118.7,96.7,2418946,1.3,36304.2,1.7,19.5,78.8,2.7,20.5,76.8,9.8,50.3/59.4,103,103,488885,560555,-71670,-4861,0.4,79.5,0.8,2.0,18.1/25.7,7784.4/12.1,356.2,3.4,11.5,3.2,5.5,105.0/105.7,111.2/110.1,71.0/57.9,25.8,102.6,84.7,278,30.8,303.3/4.7,5694,158,100.0/100.0,98.6/98.9,-99,-99,160.25,87.29,56.34,78.62,74.89,11.58,35.81,40.15,73.91,3.00,3.67,33.29,27.22,73.86,1.35,74.89,24.83,50.90,69.54,72.89,87.29,100.0,36547.8795790623,60.716987819599105,4260.597,68316473.0,271067199595.21,249030090796.29398,106.864453008147,-0.6346628787315111,11.312892287969598,30.9486331871,22.3716090860258,109359053829.0,0.765,32.0132141063066,1.03228275064674,85.7,79.6,82.57560975609759,2.34967851446849,34480922.0,32383457.0,23.619888544611303,25.666199432290696,80.18 +21,Germany,WesternEurope,357376,82114,235.6,97.0,3363600,1.7,41686.2,0.6,30.5,68.9,1.4,27.5,71.2,4.2,54.5/66.1,111,111,1340752,1060672,280080,279969,0.2,75.3,0.2,1.4,13.1/28.0,12005.7/14.9,1052.1,3.4,11.3,4.1,5.0,104.7/105.2,99.6/105.6,66.8/69.7,37.0,116.7,87.6,116,32.7,719.9/8.9,5004,158,100.0/100.0,99.3/99.0,-99,-99,189.74,124.88,67.97,76.74,65.50,7.46,30.55,27.05,57.97,3.75,4.09,26.68,24.47,45.91,2.18,65.50,25.35,46.26,50.09,62.62,124.88,100.0,40038.3451814871,53.426417753932895,7901.65234423,114160685.0,315403008911.47,345731488765.965,109.35246347718001,7.83505437684049,11.246834695339198,47.3974341985646,27.8485912129159,195752362801.0,0.795,40.29596393209221,1.50949655801608,83.4,78.7,80.9926829268293,1.2341411022353501,41919970.0,40737032.0,11.4719613927932,17.7355216696669,77.26100000000001 +22,Greece,SouthernEurope,131957,11160,86.6,96.9,194860,-0.2,17788.0,4.1,15.7,80.2,12.9,15.0,72.1,23.0,44.1/60.1,86,87,27811,47595,-19784,218,-0.4,78.0,0.5,1.3,14.2/26.5,1242.5/11.3,94.7,3.3,8.1,6.3,...,97.1/98.1,103.4/109.5,113.7/114.0,18.3,114.0,66.8,374,31.2,67.3/6.1,368,89,100.0/100.0,99.2/98.1,-99,-99,148.32,58.24,59.68,53.92,55.87,8.33,31.60,52.05,87.25,4.14,4.20,24.15,23.80,62.48,1.60,55.87,10.20,33.98,44.95,54.62,58.24,100.0,19581.010806431,55.289531570416095,23.525,13852857.0,38237102482.622,17510745541.4493,101.05987334585501,-1.7712180122928998,8.04139003157616,32.9903963772026,11.4897638856844,1384000150.0,0.6809999999999999,34.0101586285405,1.1212354772078998,83.9,78.8,81.2878048780488,2.51912140468631,5475485.0,5279194.0,25.9719369265181,18.761723822807898,78.72399999999999 +23,Hungary,EasternEurope,93024,9722,107.4,90.7,121715,3.1,12350.6,4.1,31.9,64.0,4.3,29.8,65.9,4.5,46.6/62.4,99,99,103071,92044,11027,3946,-0.3,71.2,0.5,1.3,14.3/26.0,449.6/4.6,14.4,4.9,7.4,3.3,4.7,101.3/101.9,105.3/105.1,56.7/45.3,10.1,118.9,72.8,66,22.8,42.1/4.3,423,97,100.0/100.0,97.8/98.6,-99,-99,138.82,47.52,61.61,53.46,42.77,11.20,33.09,43.99,66.49,5.43,5.97,18.43,16.76,97.32,1.03,42.77,12.67,28.35,33.62,32.72,47.52,100.0,12430.284766151799,49.1427083392061,,26066294.0,26887572029.5942,18639180669.2928,114.450017176228,2.3123718973044505,6.879989802837371,87.143096211555,30.137444048535198,16903987958.0,0.703,79.8541973019801,2.34824281150159,79.3,72.5,75.8170731707317,1.05016762431816,5133501.0,4654465.0,23.1775351555229,17.0302284164738,71.062 +24,India,SouthernAsia,3287263,1339180,450.4,107.6,2116239,7.6,1614.2,17.0,29.7,53.2,44.3,24.5,31.2,3.4,27.0/79.1,143,142,260327,356705,-96378,-22457,1.2,32.7,2.4,2.4,27.8/9.4,5241.0/0.4,211.1,41.3,4.7,0.7,3.8,115.1/102.8,74.5/73.5,26.7/27.0,11.8,78.8,26.0,1052,23.7,2238.4/1.7,23103,27,97.1/92.6,62.6/28.5,0.16,-99,101.52,76.73,56.04,69.18,25.08,10.28,46.38,76.53,9.30,3.08,3.81,32.44,26.24,123.44,0.81,25.08,6.77,16.31,25.20,16.38,76.73,92.6,1724.84357225624,50.289637256324504,2407.0981070000003,139752424.0,184672831370.242,108735877735.935,159.829464708669,-1.43879339568494,3.5349596291780494,18.7826851657717,30.2335763460221,15161028362.0,0.44,21.940126113982,2.49088699878493,70.425,68.0,69.165,2.50962455841482,642787641.0,695871194.0,11.1799218352875,44.15729341953771,33.6 +25,Indonesia,South-easternAsia,1910931,263991,145.7,101.4,861934,4.8,3346.5,14.0,41.3,44.7,31.4,22.4,46.2,5.8,51.0/83.7,139,140,144490,135653,8837,-17697,1.2,53.7,2.7,2.4,27.4/8.6,328.8/0.1,13.8,25.0,2.8,0.2,3.6,104.4/107.2,86.0/85.7,25.7/22.9,19.8,132.4,22.0,1281,50.6,464.2/1.8,19481,35,94.2/79.5,72.3/47.5,0.00,-99,62.02,27.61,50.32,64.80,41.11,21.03,49.44,76.41,9.62,4.67,4.94,21.41,20.26,247.68,0.40,41.11,11.66,26.99,45.80,20.29,27.61,98.14,3136.52441830271,48.3610188883414,1052.36048,108393123.0,24665052782.0696,32591673212.1994,142.182412273917,-1.5946569023963202,2.98905447125435,20.177304435110603,33.6038558737747,5974888118.0,0.535,19.17819263535,3.8087980695316297,73.515,69.156,71.282,0.804336712672088,131375660.0,133270226.0,9.8772930803788,38.8197326535585,54.659 +26,Iran (Islamic Republic of),SouthernAsia,1628750,81163,49.8,101.2,398563,0.4,5038.1,8.6,39.1,52.3,16.6,32.5,50.9,11.3,16.3/73.2,106,107,45627,35333,10294,-99,1.2,73.4,2.1,1.7,23.7/8.8,2726.4/3.4,978.3,14.8,7.5,1.5,2.9,111.7/106.3,88.9/89.4,67.7/75.9,5.9,93.4,44.1,134,6.6,649.5/8.3,13291,127,97.7/92.1,92.8/82.3,0.02,-99,97.17,43.18,49.10,51.55,38.26,13.50,49.70,82.51,71.48,6.10,8.12,16.39,12.31,275.34,0.36,38.26,17.05,28.09,33.53,33.17,43.18,100.0,4523.723568531311,43.444339449111396,325.668724283288,26858178.78,,,333.673322422363,,8.659663796424871,24.9421768507619,38.9462495748058,278924957.0,0.591,23.8384608001943,8.04492437660281,77.436,75.217,76.271,3.10518416947631,39854933.0,40819018.0,,,74.39399999999999 +27,Ireland,NorthernEurope,69797,4762,69.1,98.4,283716,26.3,60513.6,1.0,41.7,57.3,4.8,17.7,77.4,7.6,51.9/67.1,102,102,129315,76997,52318,28967,0.3,63.2,1.6,2.0,21.6/19.1,746.3/15.9,10.5,3.4,7.8,2.8,5.3,102.0/100.9,129.4/125.6,87.6/80.1,22.2,103.7,80.1,50,10.9,34.1/7.3,84,114,97.9/97.8,89.1/92.9,-99,-99,166.90,103.52,54.23,53.33,76.98,7.02,35.01,27.18,70.18,6.02,6.91,16.61,14.48,50.79,1.97,76.98,40.64,59.56,62.21,81.38,103.52,100.0,41859.253033146,54.10677358065371,154.38504,153944513.0,182945785463.57602,231218911719.57397,105.079585978951,1.0121980419305,7.18438327312469,121.042588526693,55.851370141226504,34827021587.0,0.8059999999999999,98.95576008631409,0.34053156146179303,84.0,80.4,82.1560975609756,0.31063192898547803,2426140.0,2381248.0,18.270065966569398,40.6923290952421,62.946999999999996 +28,Israel,WesternAsia,22072,8322,384.5,98.7,299413,2.5,37129.4,1.3,21.2,77.5,1.0,17.9,81.0,5.9,58.5/69.0,112,112,60571,65803,-5232,13642,1.6,92.1,1.4,3.0,27.9/16.1,2011.7/24.9,44.7,3.4,7.8,3.6,5.8,105.1/104.4,103.0/102.0,75.5/54.6,27.5,133.5,78.9,174,7.5,64.6/8.1,313,119,100.0/100.0,100.0/100.0,-99,-99,157.88,94.47,70.99,74.78,77.74,10.87,36.52,61.71,81.01,3.45,3.54,28.98,28.27,71.94,1.39,77.74,28.44,54.11,65.39,81.35,94.47,100.0,30793.6485488014,65.75526287655089,912.898,6993888.0,44080200000.0,28429900000.0,106.380697050938,2.3189868345825295,7.40746408700943,28.684321571823897,22.6665195027388,12057719000.0,0.763,27.5215154198101,0.244210526315802,84.6,80.6,82.55121951219509,4.4325638900397095,4385803.0,4327497.0,24.579623305461602,34.2926786791163,92.336 +29,Italy,SouthernEurope,302073,59360,201.8,95.1,1821580,0.7,30462.4,2.2,23.5,74.2,3.5,27.1,69.4,11.4,39.2/57.8,89,89,461529,404578,56951,29348,-0.1,69.0,0.4,1.4,13.5/29.4,5788.9/9.7,216.7,3.0,9.2,3.9,4.1,100.6/101.4,101.7/104.1,72.2/53.2,31.0,151.3,65.6,359,31.4,320.4/5.4,1539,103,100.0/100.0,99.5/99.6,-99,-99,142.52,71.83,55.34,66.31,83.70,12.39,36.38,51.57,82.60,2.69,3.56,37.18,28.06,82.64,1.21,83.70,21.49,53.89,73.94,76.24,71.83,100.0,29414.346286651602,56.1884000768445,1437.245062,26288001.0,112119916109.798,114804493330.453,108.71490177435699,2.6198702410610197,8.84025916457176,30.733733319636002,20.9173561009812,32232276659.0,0.769,27.870442627655695,1.22653316645808,85.2,80.8,82.94634146341471,1.36652876351231,31121471.0,29415238.0,24.634790608368302,32.0745611389274,70.14399999999999 +30,Japan,EasternAsia,377930,127484,349.7,95.4,4383076,1.2,34628.7,1.2,26.4,72.4,3.7,26.5,69.8,3.0,48.9/69.7,96,97,644932,606924,38008,135608,-0.1,93.5,0.6,1.4,12.9/33.4,2043.9/1.6,19.4,2.2,10.2,2.3,3.6,101.2/101.3,101.9/101.6,60.9/65.7,9.3,125.0,93.3,404,68.5,1214.0/9.6,1114,146,100.0/100.0,100.0/100.0,-99,-99,147.49,102.52,79.11,78.63,85.28,12.68,46.81,41.01,31.91,2.21,2.75,45.15,36.32,72.76,1.37,85.28,27.56,57.62,89.92,47.83,102.52,100.0,39433.5079901762,66.4554629240626,10684.573999999999,123898000.0,181994112163.05,191028067326.953,103.962703962704,4.17453025153592,10.9359331429005,17.751852271141104,24.940309296215702,106416048221.0,0.8440000000000001,16.8215858877511,0.467211747038214,87.26,81.09,84.099756097561,0.930768157014813,64853783.0,61932014.0,11.625407997913198,48.6057745782829,91.535 +31,Jordan,WesternAsia,89318,9702,109.3,102.6,37517,2.4,4940.1,4.0,27.7,68.4,2.0,17.8,80.2,13.4,14.5/64.5,134,135,7509,19207,-11698,-3332,4.9,83.7,3.8,3.6,35.5/5.7,3112.0/41.0,721.4,17.1,7.5,2.6,-99,97.6/97.1,84.8/80.2,47.3/42.5,15.4,179.4,53.4,113,1.1,26.5/3.6,7,47,97.8/92.3,98.6/98.9,5.80,-99,117.47,42.27,56.86,71.92,59.22,7.96,47.76,85.73,88.42,6.48,7.23,15.43,13.84,76.63,1.30,59.22,12.51,36.83,50.19,56.19,42.27,100.0,2894.8275272608503,63.1227776186631,158.95506,3381677.0,6389295774.64789,4626619718.30986,119.329869272798,-10.5659032603487,8.119250833988191,35.1204964130456,-1.9293611294192499,83323220.0,0.562,56.353329285359706,3.32389447576096,76.05199999999999,72.628,74.292,4.841143745217691,4829775.0,4949398.0,15.026977841668902,12.6313095943544,90.74700000000001 +32,Lebanon,WesternAsia,10452,6082,594.6,100.6,50149,1.5,8571.4,3.2,19.6,77.2,8.2,22.4,69.4,7.0,23.8/70.6,95,95,3402,20409,-17007,-8146,6.0,87.8,3.2,1.7,23.1/12.0,1997.8/34.1,1054.2,9.2,6.4,2.4,2.6,88.3/96.6,61.0/61.5,45.7/39.5,3.1,87.1,74.0,87,13.4,24.1/4.3,7,55,99.0/99.0,80.7/80.7,2.04,-99,106.18,53.61,50.84,64.28,61.65,13.95,36.15,85.11,69.39,5.36,6.27,18.67,15.94,126.66,0.79,61.65,30.89,46.91,46.92,60.23,53.61,100.0,5665.79323227701,50.0021360068211,53.387,2879528.0,15125597884.431002,13823773941.8732,118.999307190905,-22.8335648276373,8.19554403424263,21.880324536709498,-3.1741948129041098,272165501.0,0.5379999999999999,46.4295934881725,4.32135218303198,80.786,77.031,78.833,4.59676966111758,3386334.0,3425539.0,15.3272322664641,25.5262719143953,88.429 +33,Lithuania,NorthernEurope,65286,2890,46.1,85.4,41402,1.8,14383.7,3.6,29.8,66.5,8.7,24.5,66.8,9.2,54.1/66.1,125,125,25025,27501,-2476,-977,-1.3,66.5,-0.5,1.6,14.8/25.3,136.0/4.7,4.7,4.4,6.6,4.3,4.6,103.7/103.2,106.1/110.3,82.0/55.8,21.3,139.5,71.4,26,34.8,12.8/4.4,74,98,99.7/90.4,97.2/82.8,-99,-99,130.28,51.67,59.97,68.74,46.73,14.19,28.00,34.27,25.04,3.90,4.14,25.62,24.18,89.18,1.12,46.73,13.25,30.69,36.15,40.08,51.67,100.0,14388.794501364298,51.580488568240604,0.47200000000000003,1069268.0,9462919104.20664,5901919958.24257,112.64248975119499,0.96944893225771,6.457564234733581,73.6057866057133,21.544148322694696,2317936056.0,0.7120000000000001,71.2221455107718,3.72288862303693,80.5,70.7,75.4804878048781,1.71553862681485,1523077.0,1305326.0,16.6366224898438,16.5768029491542,67.516 +34,Malaysia,South-easternAsia,330323,31624,96.3,106.7,296284,5.0,9768.4,8.6,39.6,51.8,11.8,27.3,60.9,3.3,49.3/77.8,122,130,189414,168375,21039,8960,1.8,74.7,2.7,2.1,24.3/9.7,2514.2/8.3,238.6,6.5,4.2,1.3,5.0,101.9/101.7,80.7/74.6,31.8/20.8,10.4,143.9,71.1,1272,67.5,242.8/8.1,3738,118,100.0/93.0,96.1/95.9,0.00,-99,51.65,73.34,35.25,65.99,40.24,9.53,39.40,67.08,-79.43,4.07,4.05,24.60,24.66,72.87,1.37,40.24,11.19,26.32,42.44,20.87,73.34,100.0,8653.81754055216,44.462209546693295,1455.20982395985,58711937.0,37022387968.2993,42022247442.2415,119.60506582236299,2.80919895028417,3.85939814150333,70.04552188316539,32.431133935237,74136279705.0,0.622,63.173933837252704,3.8712011577424,78.008,73.903,75.828,1.11654055241519,15104524.0,16000504.0,12.95221278164,47.7170284581736,75.447 +35,Mexico,CentralAmerica,1964375,129163,66.4,99.2,1140724,2.5,8980.9,3.6,36.0,60.4,13.4,25.2,61.3,4.1,45.5/79.5,120,120,373883,387064,-13181,-33216,1.4,79.2,1.6,2.3,26.7/10.1,1193.2/0.9,5.9,18.8,6.3,2.1,5.3,103.2/103.6,93.5/87.7,30.0/29.9,42.6,85.3,57.4,1162,34.0,480.3/3.8,8514,62,97.2/92.1,88.0/74.5,0.03,-99,129.06,60.08,49.68,70.11,29.81,6.94,41.66,66.74,60.74,6.85,6.31,14.60,15.85,86.58,1.16,29.81,8.37,19.53,28.06,25.80,60.08,100.0,7901.164712232149,51.469241270074605,928.83550977,58537832.0,27463459761.0,37265060551.0,130.197802476747,-1.7702370101286,5.516541376709941,37.689840960347794,23.104552258239302,69687047762.0,0.607,39.5042984417504,6.04145724018992,77.827,72.046,74.947,0.502372222667342,63752822.0,61024502.0,13.048923522174801,35.7564754229319,79.867 +36,Netherlands,WesternEurope,41542,17036,505.2,99.0,750318,2.0,44332.1,1.8,20.0,78.2,2.2,15.9,81.9,5.6,57.3/69.7,115,115,511714,420969,90745,65129,0.3,90.5,1.0,1.7,16.4/25.0,1979.5/11.7,116.3,3.5,10.9,3.4,5.5,104.4/105.0,136.3/134.7,82.5/74.7,38.0,123.5,93.1,40,11.1,167.3/9.9,2447,178,100.0/100.0,97.5/99.9,-99,-99,175.23,86.52,70.11,82.50,72.47,8.52,33.90,27.62,61.87,5.38,5.93,18.60,16.86,56.24,1.78,72.47,32.45,53.29,55.95,82.27,86.52,100.0,45289.3048835763,54.190741208935,5855.480475616,42763443.0,174353871463.76,166614487993.924,111.042062834942,10.813913780342801,10.1008348166943,83.391768024212,31.3479989053656,78192852335.0,0.8,72.6364431968743,1.3814587140721002,83.4,80.2,81.7609756097561,1.15852698874429,8607750.0,8523546.0,23.085541342769602,29.5563497506557,91.07700000000001 +37,New Zealand,Oceania,268107,4706,17.9,96.7,173417,3.1,38294.3,6.5,23.0,70.6,5.9,21.4,72.6,5.5,62.1/72.8,116,118,33833,36423,-2589,-5501,1.1,86.3,1.0,2.0,19.8/20.8,1039.7/23.0,1.7,4.4,11.0,2.9,6.4,99.1/99.6,119.9/113.4,96.7/71.6,34.2,121.8,88.2,199,38.6,34.7/7.7,783,207,100.0/100.0,-99,-99,-99,184.74,89.87,61.22,70.58,80.77,8.14,30.23,20.03,85.41,4.99,5.92,20.04,16.90,63.92,1.56,80.77,33.80,58.26,73.13,77.46,89.87,100.0,31778.6664061585,53.9542071417744,1335.9532054567699,16271523.0,16950151675.6521,13002353627.8465,110.65157873712099,-2.7070346661924396,9.1700553894043,27.483189440478203,24.952958105041798,564489408.0,0.767,26.3669821240799,1.85078767452532,83.4,80.0,81.65853658536591,1.2084632895300902,2436831.0,2357069.0,27.4841925397089,52.8147733894267,86.46600000000001 +38,Norway,NorthernEurope,386194,5305,14.5,101.8,386578,1.6,74185.5,1.8,34.6,63.5,2.2,20.2,77.6,5.1,61.1/68.3,103,104,89120,72473,16647,33746,1.2,80.5,1.3,1.8,17.8/22.3,741.8/14.2,73.2,2.4,9.7,4.4,7.4,100.3/100.5,111.1/114.7,91.5/62.8,39.6,113.6,96.8,64,33.2,47.6/9.2,8204,233,100.0/100.0,98.0/98.3,-99,-99,165.93,105.58,54.31,74.19,106.31,7.90,31.32,19.45,49.32,4.18,4.51,23.94,22.16,50.95,1.96,106.31,39.88,74.47,98.31,117.13,105.58,100.0,71668.66678743559,52.683567187265794,,,40502614063.1295,49724162253.0968,114.55071939191002,4.5714251083483495,10.446342080831501,36.3329956891189,31.335820854759803,4272827826.0,0.7709999999999999,32.831428951180804,1.8751005955254798,84.3,81.0,82.609756097561,1.6178237818885401,2615346.0,2661622.0,22.4775458505266,21.890553561886396,81.87100000000001 +39,Pakistan,SouthernAsia,796095,197016,255.6,105.6,266458,5.5,1410.4,25.5,19.0,55.5,42.1,19.8,38.1,5.9,24.8/82.5,135,138,20534,46998,-26464,-1603,2.1,38.8,2.8,3.7,34.8/6.7,3629.0/1.9,2739.4,69.8,2.6,0.8,2.6,85.2/99.7,39.2/49.5,9.2/10.6,20.6,66.9,18.0,140,2.0,166.3/0.9,2202,17,93.9/89.9,83.1/51.1,1.32,-99,93.41,39.95,45.62,59.05,27.18,12.09,38.69,80.08,42.54,4.08,3.81,24.51,26.26,156.97,0.64,27.18,5.03,16.57,24.83,21.01,39.95,70.79,1163.7250971125802,66.0921456528151,214.52857000000003,7260769.0,4499440000.0,11160061000.0,156.91134586661698,-5.31233112850804,2.89863366633654,8.2573202960672,6.812339584295219,362376598.0,0.389,17.5955165571328,4.08537368032604,67.928,66.041,66.947,3.76619210655443,100907719.0,106988967.0,,,36.442 +40,Philippines,South-easternAsia,300000,104918,351.9,101.3,292449,5.9,2904.2,10.5,31.3,58.2,27.7,16.3,56.1,5.9,50.8/78.9,122,120,56313,85909,-29596,7694,1.6,44.4,1.3,3.0,31.7/7.6,211.9/0.2,240.2,22.2,4.7,...,...,116.9/116.8,92.7/84.4,40.3/31.4,29.5,118.1,40.7,783,26.2,105.7/1.1,991,19,93.7/90.3,77.9/70.8,0.15,-99,56.87,36.00,60.23,69.16,34.71,16.91,45.14,70.25,-44.10,3.75,3.54,26.69,28.29,162.87,0.61,34.71,7.32,21.58,33.95,19.86,36.00,93.0,2994.28192882229,57.245327105353795,753.351739,39341995.0,34812501415.6187,25844797492.5497,120.211352458706,-0.6523879267514829,4.4464077800512305,29.552290854788104,16.494985830771,33502479344.0,0.5479999999999999,38.616078887881606,2.85318772590942,75.268,66.971,70.952,1.1975353534869098,52293794.0,52879470.0,13.593793749028402,41.4692223964639,46.681999999999995 +41,Poland,EasternEurope,312679,38171,124.6,93.4,477066,3.9,12355.5,2.6,34.1,63.3,10.9,29.6,59.5,5.3,49.1/64.9,113,113,196455,188518,7937,-2932,-~0.0,60.5,-0.1,1.3,14.8/24.0,619.4/1.6,23.7,4.5,6.4,2.3,4.9,100.7/100.5,106.1/110.0,82.6/54.2,28.0,148.7,68.0,58,30.7,285.7/7.4,2819,102,99.3/96.9,97.5/96.7,-99,-99,150.21,71.75,68.47,61.46,38.15,10.12,34.55,50.33,62.53,4.66,5.25,21.44,19.04,73.08,1.37,38.15,13.93,26.54,29.69,31.53,71.75,100.0,13520.2490882131,46.650308179456,221.81400000000002,7376512.0,58739000000.0,38313000000.0,109.637670529558,0.0189976530034167,6.5419539809227,54.33711798470961,24.0000884710642,19261853887.0,0.747,50.1550505667426,2.07593553673862,81.8,73.9,77.7536585365854,1.8959838691023898,19565914.0,18408912.0,16.7966336760079,12.471409906448699,60.105 +42,Portugal,SouthernEurope,92226,10330,112.8,89.8,199122,1.6,19239.2,2.3,22.3,75.4,8.0,23.8,68.2,10.5,53.3/63.7,104,104,55658,67580,-11922,842,-0.4,63.5,1.0,1.3,13.6/27.9,837.3/8.1,1.8,2.9,9.5,4.4,5.1,105.3/109.4,117.3/121.0,65.7/58.0,34.8,110.4,68.6,281,34.9,45.1/4.3,250,84,100.0/100.0,99.6/99.8,-99,-99,178.43,62.72,64.61,70.31,49.19,8.85,30.44,28.91,92.19,5.95,6.08,16.81,16.46,60.87,1.64,49.19,16.77,33.66,39.14,41.24,62.72,100.0,19172.4766666951,54.3800233871429,421.8294532,15937325.0,34948649028.0397,16517160294.984,109.166705134988,1.37839079896265,8.96957442164421,42.7242663980773,18.2361172685235,2816236487.0,0.7759999999999999,41.714874123494795,1.3686141164348102,84.6,78.4,81.42439024390251,1.6699769206106498,5429333.0,4870967.0,22.370587976220698,24.0191056582023,64.652 +43,Qatar,WesternAsia,11607,2639,227.3,301.2,164641,3.6,73653.4,0.2,56.4,43.5,1.2,54.1,44.7,0.3,53.1/93.6,154,154,57254,32058,25196,13751,6.6,99.2,6.0,2.0,13.9/2.8,1687.6/75.5,1.5,7.2,2.2,2.0,3.6,103.6/102.4,103.6/82.0,43.9/6.3,0.0,153.6,92.9,39,0.0,107.9/49.7,9166,846,100.0/100.0,98.0/98.0,-99,-99,132.37,111.28,84.30,66.14,69.20,6.19,32.97,73.29,9.26,9.49,9.19,10.54,10.88,47.11,2.12,69.20,66.81,68.06,56.09,72.73,111.28,100.0,42663.336827574196,17.2922167762509,10970.08988,29949181.0,17527197802.1978,29715109890.1099,115.85880342488899,3.84928080050031,2.60742865502834,51.04242783318521,58.388466475757895,292252.0,0.615,37.2570027319706,0.394878914083008,81.743,78.83,79.98100000000001,,662995.0,2061729.0,,,99.07799999999999 +44,Republic of Korea,EasternAsia,100284,50982,524.3,100.2,1377873,2.6,27396.7,2.3,38.0,59.7,5.0,24.7,70.3,3.6,50.2/71.9,104,104,495418,406182,89236,105871,0.4,82.5,0.7,1.2,13.5/20.1,1327.3/2.6,8.0,3.0,7.4,2.2,5.1,98.7/99.3,98.4/99.3,80.2/104.8,17.0,118.5,89.9,111,63.5,587.2/11.7,2023,223,99.7/87.9,100.0/100.0,-99,-99,162.49,102.38,74.73,83.20,75.41,12.38,34.18,52.73,61.20,2.04,2.51,49.10,39.90,85.47,1.17,75.41,22.02,49.82,88.52,44.62,102.38,100.0,22899.6799642164,37.1323499276971,11511.801211,82818983.0,88720200000.0,124753100000.0,113.050800144607,4.63272557766522,7.60386362671852,40.934206940988396,37.035554101431295,166675269584.0,0.845,36.186710865653204,1.94445590723395,85.7,79.7,82.62682926829271,2.56884353517412,25632820.0,25729091.0,14.4938185341627,28.340191337644,81.503 +45,Romania,EasternEurope,238391,19679,85.5,94.0,177956,3.7,9120.7,4.8,34.9,60.3,25.5,27.7,46.8,7.1,47.3/64.5,100,100,63581,74605,-11024,-2096,-0.6,54.6,~0.0,1.5,15.3/24.9,226.9/1.2,3.2,8.7,5.6,2.7,3.1,89.0/90.5,92.0/92.5,59.0/47.8,20.7,107.1,55.8,104,29.5,70.0/3.6,1109,68,100.0/100.0,92.2/63.3,-99,-99,143.04,53.44,72.05,53.11,35.63,10.79,31.97,50.90,64.45,4.89,4.76,20.43,20.99,83.30,1.20,35.63,9.59,23.15,29.05,30.16,53.44,100.0,8947.49984137703,49.99522537201321,2.8045,4423249.0,24570199854.841,15287952957.9184,113.946361611816,-2.7899432228983505,5.15788830816746,41.4700877973861,21.3026478626714,5558653635.0,0.601,43.594063940406706,1.33902121104396,79.1,71.7,75.30975609756099,1.71954054901384,10053129.0,9534161.0,15.491428620052499,19.7958480781778,53.93600000000001 +46,Russian Federation,EasternEurope,17098246,143990,8.8,86.8,1326016,-3.7,9243.3,4.7,31.8,63.5,6.8,27.1,66.1,5.8,56.3/71.3,120,120,285491,182257,103234,69000,0.1,74.0,-0.1,1.7,17.6/21.1,11643.3/8.1,418.4,8.3,7.1,3.3,3.9,100.9/100.1,103.4/105.5,88.3/72.9,15.8,160.0,73.4,235,49.8,1705.3/11.9,54829,208,98.9/91.2,77.0/58.7,-99,-99,85.93,48.27,53.95,56.40,42.01,13.55,48.57,63.04,10.69,5.75,6.31,17.39,15.85,193.91,0.52,42.01,17.58,30.30,33.58,43.85,48.27,100.0,8827.81629757085,46.837027069056305,6845.229509999999,89373638.0,56748830000.0,87439810000.0,168.175238863746,2.06006877313944,5.3445778787136105,26.0908809797568,28.9119934845476,10483802377.0,0.7290000000000001,20.7856433573743,3.68332944412231,77.6,67.51,72.4319512195122,4.23340736959348,77546481.0,66950259.0,10.288405674018302,2.0728372755302,74.292 +47,Saudi Arabia,WesternAsia,2206714,32938,15.3,132.9,653219,3.4,20710.6,2.3,46.0,51.8,5.9,22.7,71.4,5.5,20.0/78.5,96,96,182329,135904,46426,-56724,2.8,83.1,2.1,2.7,25.2/5.6,10185.9/32.3,70.2,13.0,4.7,2.6,...,111.1/107.9,93.7/122.6,61.8/64.4,19.9,176.6,69.6,131,0.5,601.0/19.5,25904,287,97.0/97.0,100.0/100.0,...,-99,146.41,138.05,76.35,60.41,48.37,2.85,36.31,74.18,17.96,7.29,8.01,13.72,12.49,21.07,4.75,48.37,14.36,32.07,40.54,30.22,138.05,99.93,14520.2110951169,39.7948324923324,867.640758,37503000.0,17446931306.6667,54304994784.6974,118.02997718146901,1.51967798314106,5.23025318980217,34.8530604740613,34.372878179752306,261725653.0,0.585,29.3421244342998,-0.838194579675057,76.487,73.671,74.874,10.2513563494886,14125194.0,18973953.0,3.38483623653337,2.02651444937161,83.62200000000001 +48,Serbia,SouthernEurope,88499,8791,100.5,95.6,37160,0.8,5238.6,8.2,31.4,60.5,19.4,24.5,56.1,15.5,43.4/59.9,102,102,14852,19231,-4379,-1751,-0.4,55.6,-0.3,1.6,16.5/24.5,807.4/9.1,254.1,9.8,10.4,2.5,4.2,101.2/101.5,97.4/96.0,66.9/50.2,34.4,120.5,65.3,71,31.1,37.7/4.3,393,62,99.4/98.9,98.2/94.2,0.90,-99,133.43,40.80,61.38,53.86,33.79,17.87,29.93,55.29,82.66,3.14,3.33,31.88,30.07,142.63,0.70,33.79,7.25,21.07,24.96,27.20,40.80,100.0,5116.37695128391,50.876524160932505,7.355192,2442731.0,5943301156.75442,4802207665.47188,138.66545344252398,-5.264526002465759,8.433958142995829,50.540787909056704,13.0006287901327,396951920.0,0.755,57.1320754796352,3.13106248590119,78.1,73.1,75.5390243902439,1.95935588331478,3580264.0,3440594.0,,,55.942 +49,Singapore,South-easternAsia,719,5709,8155.5,97.7,292734,2.0,52239.0,~0.0,26.4,73.6,0.3,17.0,82.6,2.0,57.8/76.1,112,112,329871,283009,46862,57922,1.7,100.0,2.0,1.2,15.0/19.5,2543.6/45.4,~0.0,2.1,4.9,1.9,2.9,-99,-99,-99,23.8,146.1,82.1,293,23.1,56.4/10.2,27,209,100.0/...,100.0/...,-99,-99,86.50,92.70,83.42,69.87,82.41,21.63,43.39,37.04,-71.47,2.75,3.65,36.41,27.39,134.33,0.74,82.41,70.22,76.57,71.68,58.33,92.70,100.0,45178.6935099864,29.520863642741602,5062.992579,38094990.0,169389575827.796,180034252403.28,113.265922901941,16.2638231598757,4.44038286805153,170.705375433905,54.51476246247721,147178835744.0,0.884,145.307195340781,0.5762603101663709,85.4,80.9,83.0951219512195,3.1548782818950403,2674905.0,2937348.0,14.0473782042035,33.4574635273207,100.0 +50,Slovakia,EasternEurope,49035,5448,113.3,94.6,87268,3.8,16082.5,3.7,34.8,61.5,3.3,34.5,62.2,9.9,51.4/68.0,97,97,77565,75156,2409,193,0.1,53.6,-0.3,1.4,15.4/21.8,177.2/3.3,2.7,5.7,8.1,3.4,4.2,99.2/100.2,92.8/92.1,64.6/41.8,20.0,122.3,85.0,54,40.3,30.7/5.6,264,121,100.0/100.0,99.4/98.2,-99,-99,152.55,64.75,69.82,62.63,44.90,9.85,36.03,43.51,65.06,5.62,5.57,17.78,17.94,61.59,1.62,44.90,16.49,31.29,38.84,33.17,64.75,100.0,14893.3474884849,43.716889591369,,7925.0,10557099767.6392,9556991730.001741,109.590332058318,-1.9212403897281998,6.74253478646278,95.17070123262519,25.145243818432103,8812917854.0,0.6940000000000001,92.9605858547623,1.3119458822323402,80.7,73.8,77.16585365853659,1.10193325763504,2793675.0,2645557.0,18.7118779603018,18.524609259480396,53.751000000000005 +51,Slovenia,SouthernEurope,20273,2080,103.3,98.6,42777,2.3,20689.8,2.4,32.7,64.9,8.9,29.6,61.5,8.1,51.8/62.2,89,89,27585,26646,939,2216,0.3,49.7,0.1,1.6,15.0/26.3,236.0/11.4,0.6,2.5,9.2,2.8,5.5,99.4/99.2,110.5/110.8,98.5/68.2,36.7,113.2,73.1,143,62.0,12.8/6.2,154,135,99.7/99.4,99.1/99.1,-99,-99,175.45,78.23,75.95,64.35,53.24,8.34,26.48,26.37,60.50,4.20,4.21,23.82,23.77,60.26,1.66,53.24,14.06,34.46,43.48,43.13,78.23,100.0,20396.0443337182,51.344338033450605,0.5664,1087075.0,8256449246.51285,5649619234.16317,107.402110095793,6.152710431123331,8.187017589807509,82.9649226603655,29.0499006655722,1755384350.0,0.7879999999999999,73.9660327409365,1.4291074331929698,84.0,78.2,81.0292682926829,0.9820473470246899,1038723.0,1027665.0,18.3903854285229,11.1080352663704,54.273 +52,South Africa,SouthernAfrica,1221037,56717,46.8,96.4,314571,1.3,5773.0,2.4,28.9,68.7,6.1,26.2,67.7,26.0,46.4/61.1,125,126,74111,74744,-633,-13644,1.4,64.8,1.6,2.6,29.0/8.4,3142.5/5.8,1201.9,36.5,8.8,0.8,6.0,97.3/102.2,111.5/88.0,23.3/15.7,42.2,159.3,51.9,581,7.6,489.8/9.1,7102,122,99.6/81.4,69.6/60.5,0.47,-99,144.72,98.96,24.28,61.72,43.12,3.58,42.98,63.56,88.74,9.51,10.41,10.51,9.60,41.97,2.38,43.12,16.33,30.28,36.27,40.20,98.96,84.4,6181.72999837607,52.368039896373396,833.347947527025,20821044.0,15387496170.6385,15773982430.0099,146.053721453082,-2.54979944985608,8.11311826109886,29.6276693701772,19.966159379694602,2040001338.0,0.406,28.3462255610144,5.18108223263743,67.064,60.162,63.538000000000004,1.04366339589233,28883601.0,28116850.0,26.948876540079603,49.2065136907516,65.85 +53,Spain,SouthernEurope,505944,46354,92.9,96.2,1192955,3.2,25865.4,2.6,23.6,73.7,3.9,19.2,76.8,18.3,52.1/64.2,102,102,281777,302539,-20762,16208,-0.2,79.6,0.7,1.3,14.7/25.3,5853.0/12.7,28.8,2.9,9.0,3.8,4.3,105.6/104.5,129.6/130.0,97.1/82.5,39.1,107.9,78.7,617,36.8,234.0/5.1,1432,102,100.0/100.0,99.8/100.0,-99,-99,183.65,87.87,68.72,76.65,54.98,8.26,32.63,37.46,88.04,4.38,5.23,22.81,19.13,52.02,1.92,54.98,18.83,37.65,44.68,53.68,87.87,100.0,27021.2619595246,51.1697189700603,1078.63356,71598374.0,144761654744.814,72302235551.4249,108.375335054149,2.7130880765728396,8.873129636049269,35.1783922236242,23.007320906325802,17094347468.0,0.743,31.5991868337295,1.95608333333334,86.1,80.6,83.28292682926829,1.2259930602176599,23723820.0,22869416.0,13.722180814164698,33.1996882754661,80.08 +54,Sri Lanka,SouthernAsia,65610,20877,332.9,92.5,82316,4.8,3973.7,8.7,30.7,60.6,27.4,25.9,46.6,5.2,30.4/75.0,120,122,10546,19501,-8955,-2009,0.5,18.4,0.8,2.1,24.0/14.9,38.7/0.2,44.2,8.2,3.5,...,2.2,100.6/102.7,102.0/97.5,24.0/15.6,5.8,112.8,30.0,587,33.1,18.4/0.9,179,20,98.5/95.0,88.1/96.7,0.53,-99,88.99,30.28,65.43,80.04,33.47,17.49,47.19,61.90,2.40,4.91,4.47,20.38,22.38,238.64,0.42,33.47,8.74,21.62,36.79,19.51,30.28,97.5,3666.8671628873,52.74330001173139,398.473464249,5403577.0,7689872443.07136,4352662706.89619,147.08785819643,-2.64102153429613,3.81142050027847,21.831465280542897,24.371033228059503,79026655.0,0.584,29.0553049222384,7.70413767850603,79.979,73.238,76.648,2.14799913812899,11133868.0,10310132.0,12.5312523431743,14.925378254670301,18.384 +55,Sweden,NorthernEurope,438574,9911,24.2,100.2,495694,4.1,50687.5,1.3,26.3,72.4,1.8,18.2,79.9,7.3,60.7/68.0,100,100,139574,140838,-1263,23250,0.8,85.8,0.8,1.9,17.5/25.5,1639.8/16.8,348.5,2.4,11.9,4.1,7.7,125.6/120.6,150.0/131.5,75.7/49.6,43.6,130.4,90.6,54,68.9,43.4/4.5,1428,206,100.0/100.0,99.2/99.6,-99,-99,172.74,107.23,53.35,70.64,75.88,11.77,31.60,17.87,59.13,2.52,3.22,39.66,31.08,71.27,1.40,75.88,26.86,52.39,67.94,78.27,107.23,100.0,48316.2767581085,59.965651998891104,,,74155873150.7377,69960800756.0849,106.491774734342,3.0840063477233,11.018746346235302,43.734721932138,28.259404025085804,17434042461.0,0.8,41.200027502143705,1.79449904665596,84.1,80.8,82.409756097561,1.0335017217020899,5025514.0,5032184.0,28.1309958240849,16.2172913322271,87.146 +56,Switzerland,WesternEurope,41291,8476,214.5,98.2,670790,0.8,80831.1,0.7,25.5,73.8,3.5,20.4,76.1,4.6,62.5/74.5,106,106,304691,269157,35534,77378,1.2,73.9,1.1,1.5,14.9/24.1,2438.7/29.4,110.1,3.9,11.7,4.1,5.1,103.8/104.1,99.4/103.0,58.5/56.9,32.5,142.0,88.0,74,31.6,35.3/4.3,552,126,100.0/100.0,99.9/99.8,-99,-99,173.54,95.35,77.55,71.04,122.06,14.04,28.30,20.77,69.32,3.01,3.15,33.24,31.78,81.89,1.22,122.06,56.57,90.68,122.72,119.85,95.35,100.0,60640.1486576029,49.9325804984945,1581.3523599999999,26732570.0,120397427652.378,105500793072.19301,98.26686201104928,6.4165192839183405,12.346322089433698,65.0326631233501,34.2561212495427,29844323632.0,0.767,54.4753676082932,0.533795988132759,85.6,81.6,83.55121951219509,0.681602395155031,4263869.0,4187971.0,10.401162657241802,24.961570781434002,73.76100000000001 +57,Thailand,South-easternAsia,513120,69038,135.1,95.2,395168,2.8,5814.8,9.1,35.7,55.1,34.0,22.7,43.3,0.6,62.7/79.8,129,126,213927,195666,18260,32149,0.4,50.4,3.0,1.5,17.3/16.9,3913.3/5.8,554.1,11.2,4.1,...,4.1,99.2/106.1,125.3/132.6,57.3/40.5,4.9,125.8,39.3,611,32.0,316.2/4.7,3338,83,97.6/98.0,89.9/96.1,0.02,-99,57.21,34.28,50.22,80.66,43.71,24.43,43.56,73.23,-20.21,3.80,3.54,26.29,28.27,212.03,0.47,43.71,14.94,29.92,48.31,21.42,34.28,99.9,4783.33166672603,40.4312626405645,2511.891367964,70704889.0,70666590666.765,46384831962.7385,111.286809151122,9.63234113702125,3.74601632356644,66.6819293721371,34.774385852602,43987099050.0,0.604,54.2259926048092,0.66563189313507,80.468,72.977,76.683,1.3685609353213,35458012.0,33751846.0,14.7816935281654,30.090698640731503,49.2 +58,The former Yugoslav Republic of Macedonia,SouthernEurope,25713,2083,82.6,100.0,10052,3.8,4836.1,12.0,27.9,65.1,16.2,29.2,54.5,27.3,43.9/67.8,111,112,4785,6757,-1972,-204,0.1,57.1,0.1,1.5,16.7/19.5,130.7/6.3,1.4,9.0,6.5,2.8,...,92.8/93.6,78.2/80.3,46.8/37.5,31.7,105.4,70.4,110,39.6,7.5/3.6,53,53,99.8/98.9,97.2/82.6,2.18,-99,116.42,39.85,61.34,63.46,30.93,14.67,33.79,83.38,75.54,3.71,3.57,26.93,28.04,132.83,0.75,30.93,6.02,18.99,25.41,20.74,39.85,100.0,4432.6627827268,42.6758558683268,,,1622275887.9976401,1180295136.21959,110.915833333333,-0.8555034408947529,6.06211498379707,55.145719342636994,18.4270982646989,186063939.0,0.534,68.9915645536526,1.3516188967743998,77.639,73.584,75.589,0.990700534450902,1040211.0,1041785.0,17.1611135905492,15.6219928727508,57.748000000000005 +59,Turkey,WesternAsia,783562,80745,104.9,97.0,717888,4.0,9125.8,8.6,26.4,65.0,19.6,27.5,52.9,10.8,30.4/71.4,120,122,142606,198602,-55996,-32278,1.6,73.4,2.0,2.1,25.0/12.0,2964.9/3.8,3006.3,12.6,5.4,1.7,4.8,102.1/102.8,101.1/103.8,88.3/101.0,14.9,96.0,53.7,388,15.1,346.0/4.5,1303,65,100.0/100.0,98.3/85.5,0.30,-99,129.63,55.64,58.91,71.68,38.60,8.87,47.58,70.46,73.19,5.43,6.28,18.41,15.92,121.45,0.82,38.60,10.56,25.16,33.46,26.45,55.64,100.0,12064.016560053999,49.831742508980206,4800.237745146,107917326.0,52747000000.0,26036000000.0,174.96870328849,-4.75959953015096,4.21630293130875,24.7737943311504,26.482751470837197,3500896134.0,0.626,29.284515909690104,11.1443110840764,80.08800000000001,74.149,77.161,2.06814147502603,41130856.0,39971036.0,17.8494731591829,18.062541363121102,74.64399999999999 +60,Ukraine,EasternEurope,603500,44223,76.3,86.0,90615,-9.9,2021.6,14.0,26.3,59.7,15.7,24.6,59.7,8.8,52.3/67.5,137,137,36369,39184,-2815,-189,-0.5,69.7,-0.3,1.5,15.5/23.2,4834.9/10.8,1644.8,8.8,7.1,3.0,5.9,105.1/102.8,98.2/100.2,88.4/76.5,12.3,144.0,49.3,102,16.6,227.3/5.1,3203,98,95.5/97.8,97.4/92.6,1.63,-99,87.49,26.93,48.73,49.81,26.22,22.87,39.16,67.26,49.94,5.30,6.01,18.88,16.63,512.06,0.20,26.22,9.36,18.14,19.87,19.69,26.93,100.0,2845.42446564177,46.5935679326923,53.792981999999995,6794396.0,13860000000.0,12231000000.0,235.299204427534,-2.17665769624938,6.99532032012939,48.0142981525409,12.257723328201301,1267145051.0,0.647,55.703543236629294,14.438322748874901,76.78,67.02,71.7809756097561,3.2414928995749106,24074287.0,20756848.0,20.0345254939706,14.503486162940199,69.24600000000001 +61,United Arab Emirates,WesternAsia,83600,9400,112.4,262.4,370296,3.8,40438.8,0.7,44.9,54.4,3.5,21.1,75.4,3.7,41.7/90.8,70,70,195613,201908,-6296,-99,2.0,85.5,2.9,1.8,13.9/2.4,8095.1/88.4,1.3,6.2,3.6,1.6,-99,116.0/116.7,-99,-99,20.0,187.4,91.2,56,3.8,211.4/23.2,8642,366,99.6/100.0,98.0/95.2,-99,-99,139.27,116.77,79.34,60.49,67.98,5.60,35.05,58.52,8.86,9.70,10.65,10.30,9.39,42.07,2.38,67.98,68.84,68.39,55.36,63.92,116.77,100.0,37929.2743595731,18.3979811747869,16616.244609999998,95306195.0,,,113.302920986271,,3.33428233861923,99.5949384086332,49.4811470103372,2188953095.0,0.659,75.4094120296224,1.9668255781883899,79.008,76.96600000000001,77.64699999999999,,2891723.0,6595480.0,0.0664571906833831,,86.24799999999999 +62,United Kingdom,NorthernEurope,242495,66182,273.6,97.4,2858003,2.2,44162.4,0.7,19.4,79.9,1.2,18.4,80.4,5.0,57.0/68.6,108,108,415856,635570,-219713,-122571,0.6,82.6,0.9,1.9,17.7/23.9,8543.1/13.2,151.7,4.1,9.1,2.8,5.7,108.1/108.4,130.4/125.3,64.1/49.0,30.0,125.8,92.0,102,12.9,419.8/6.5,4482,116,100.0/100.0,99.1/99.6,-99,-99,172.87,96.85,58.81,74.28,69.49,10.00,34.60,34.88,78.91,4.16,4.40,24.02,22.75,69.10,1.45,69.49,30.98,51.03,55.85,76.84,96.85,100.0,36564.2644505942,56.0698960446915,5915.641,151159067.0,372378473476.58203,228132723334.37802,114.94359164046601,-3.48923552866848,9.631694108247759,30.3661254439058,16.321879916029,75275694845.0,0.7809999999999999,31.579013422524,2.55775577557754,83.1,79.5,81.25609756097559,1.7710938428571499,33464674.0,32594185.0,25.523503536041304,33.2275244819321,83.14299999999999 +63,United States of America,NorthernAmerica,9833517,324460,35.5,98.0,18036648,2.6,56053.8,1.0,19.7,79.3,1.5,17.2,81.3,4.9,55.7/68.1,111,113,1453167,2249661,-796494,-462961,0.7,81.6,1.0,1.9,18.9/21.5,46627.1/14.5,616.5,6.0,17.1,2.6,5.4,100.0/100.3,98.5/96.7,99.6/72.8,19.1,117.6,74.6,1513,33.9,5254.3/16.2,83887,289,99.4/98.2,100.0/100.0,-99,-99,179.73,123.17,51.24,68.22,75.42,3.26,34.58,31.19,67.95,11.23,12.24,8.90,8.17,23.53,4.25,75.42,40.30,58.59,75.57,70.02,123.17,100.0,46371.3548323046,52.1558056764975,41591.551767000004,849403000.0,779305000000.0,521836000000.0,112.41155730230801,-2.25626437585357,17.0612692832947,12.094833790784,17.531695170093,156937052150.0,0.762,15.0474864512352,2.1301100036596297,81.1,76.1,78.5390243902439,3.1090104054349603,164193686.0,160791853.0,11.7642666978839,49.600037277589905,82.05799999999999 +64,Venezuela (Bolivarian Republic of),SouthAmerica,912050,31977,36.3,99.0,344331,-6.2,11068.9,5.3,44.7,50.0,11.9,26.8,61.3,6.6,51.5/78.3,118,119,19731,16324,3407,-20360,1.4,89.0,1.5,2.4,27.6/9.9,1404.4/4.5,174.2,13.8,5.3,...,...,98.6/101.3,93.0/86.5,.../...,22.2,93.0,61.9,328,53.1,185.2/6.1,7460,90,95.0/77.9,97.5/69.9,0.01,-99,0.00,3.35,14.72,36.90,38.30,202.07,46.24,72.90,91.17,3.51,3.18,28.48,31.42,4469.07,0.02,38.30,7.51,23.55,39.40,37.34,3.35,99.2,,53.643589379931,2.79291553183396,4209158.0,,,,,1.1812101118266598,,,,,,,76.194,68.523,72.24600000000001,0.48784414488216293,14843348.0,14547061.0,,,88.18299999999999 +65,Vietnam,South-easternAsia,330967,95541,308.1,98.0,193241,6.7,2067.9,18.9,37.0,44.2,41.8,22.9,35.2,2.2,73.9/83.3,136,134,176632,174111,2520,906,1.1,33.6,3.0,2.0,23.1/11.1,72.8/0.1,11.0,19.3,7.1,1.2,5.7,108.4/109.3,-99,28.9/28.8,26.7,130.6,52.7,616,47.2,166.9/1.8,2977,30,99.1/96.9,94.4/69.7,1.73,-99,36.12,24.77,47.04,47.87,40.11,26.76,33.00,88.10,-12.87,4.52,7.03,22.10,14.22,285.55,0.35,40.11,15.49,28.31,39.60,20.46,24.77,100.0,1613.26480486729,43.1200318300567,453.34954000000005,42592762.0,13070000000.0,17100000000.0,153.63165215668502,-0.736884881932091,5.53212836384773,101.593435844166,25.4579976927572,74113940404.0,0.6659999999999999,98.79114458222419,3.52025688811617,79.366,71.124,75.241,2.2679695552446697,47405623.0,47191019.0,,,35.213 diff --git a/examples/aimlapi-python/image_1.png b/examples/aimlapi-python/image_1.png new file mode 100644 index 00000000..35104914 Binary files /dev/null and b/examples/aimlapi-python/image_1.png differ diff --git a/examples/aimlapi-python/poetry.lock b/examples/aimlapi-python/poetry.lock new file mode 100644 index 00000000..968f12be --- /dev/null +++ b/examples/aimlapi-python/poetry.lock @@ -0,0 +1,271 @@ +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. + +[[package]] +name = "anyio" +version = "4.9.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, + {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} + +[package.extras] +doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] +trio = ["trio (>=0.26.1)"] + +[[package]] +name = "attrs" +version = "25.3.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3"}, + {file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b"}, +] + +[package.extras] +benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] + +[[package]] +name = "certifi" +version = "2025.6.15" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "certifi-2025.6.15-py3-none-any.whl", hash = "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057"}, + {file = "certifi-2025.6.15.tar.gz", hash = "sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b"}, +] + +[[package]] +name = "e2b" +version = "1.5.2" +description = "E2B SDK that give agents cloud environments" +optional = false +python-versions = "<4.0,>=3.9" +groups = ["main"] +files = [ + {file = "e2b-1.5.2-py3-none-any.whl", hash = "sha256:8cf755f2ff04098daa7ac778f768eee1df730a6181637fe124210345999890b3"}, + {file = "e2b-1.5.2.tar.gz", hash = "sha256:29ed891ae04ffafff1744c57eff55901200f15030d34ac3fe76d6672e2bf7845"}, +] + +[package.dependencies] +attrs = ">=23.2.0" +httpcore = ">=1.0.5,<2.0.0" +httpx = ">=0.27.0,<1.0.0" +packaging = ">=24.1" +protobuf = ">=5.29.4,<6.0.0" +python-dateutil = ">=2.8.2" +typing-extensions = ">=4.1.0" + +[[package]] +name = "e2b-code-interpreter" +version = "1.5.1" +description = "E2B Code Interpreter - Stateful code execution" +optional = false +python-versions = "<4.0,>=3.9" +groups = ["main"] +files = [ + {file = "e2b_code_interpreter-1.5.1-py3-none-any.whl", hash = "sha256:c8ee6f77bcb9c53422df336abbd37d5bf6318c3967b87444b39e3428a54c5e08"}, + {file = "e2b_code_interpreter-1.5.1.tar.gz", hash = "sha256:e39485dd2ffb148a902e8c05c8f573feeb7ca87f8498f02a4db65630e76364e1"}, +] + +[package.dependencies] +attrs = ">=21.3.0" +e2b = ">=1.4.0,<2.0.0" +httpx = ">=0.20.0,<1.0.0" + +[[package]] +name = "h11" +version = "0.16.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.16" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.28.1" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" + +[package.extras] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "packaging" +version = "25.0" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, +] + +[[package]] +name = "protobuf" +version = "5.29.5" +description = "" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "protobuf-5.29.5-cp310-abi3-win32.whl", hash = "sha256:3f1c6468a2cfd102ff4703976138844f78ebd1fb45f49011afc5139e9e283079"}, + {file = "protobuf-5.29.5-cp310-abi3-win_amd64.whl", hash = "sha256:3f76e3a3675b4a4d867b52e4a5f5b78a2ef9565549d4037e06cf7b0942b1d3fc"}, + {file = "protobuf-5.29.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e38c5add5a311f2a6eb0340716ef9b039c1dfa428b28f25a7838ac329204a671"}, + {file = "protobuf-5.29.5-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:fa18533a299d7ab6c55a238bf8629311439995f2e7eca5caaff08663606e9015"}, + {file = "protobuf-5.29.5-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:63848923da3325e1bf7e9003d680ce6e14b07e55d0473253a690c3a8b8fd6e61"}, + {file = "protobuf-5.29.5-cp38-cp38-win32.whl", hash = "sha256:ef91363ad4faba7b25d844ef1ada59ff1604184c0bcd8b39b8a6bef15e1af238"}, + {file = "protobuf-5.29.5-cp38-cp38-win_amd64.whl", hash = "sha256:7318608d56b6402d2ea7704ff1e1e4597bee46d760e7e4dd42a3d45e24b87f2e"}, + {file = "protobuf-5.29.5-cp39-cp39-win32.whl", hash = "sha256:6f642dc9a61782fa72b90878af134c5afe1917c89a568cd3476d758d3c3a0736"}, + {file = "protobuf-5.29.5-cp39-cp39-win_amd64.whl", hash = "sha256:470f3af547ef17847a28e1f47200a1cbf0ba3ff57b7de50d22776607cd2ea353"}, + {file = "protobuf-5.29.5-py3-none-any.whl", hash = "sha256:6cf42630262c59b2d8de33954443d94b746c952b01434fc58a417fdbd2e84bd5"}, + {file = "protobuf-5.29.5.tar.gz", hash = "sha256:bc1463bafd4b0929216c35f437a8e28731a2b7fe3d98bb77a600efced5a15c84"}, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-dotenv" +version = "1.1.1" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc"}, + {file = "python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "six" +version = "1.17.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] +files = [ + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "typing-extensions" +version = "4.14.0" +description = "Backported and Experimental Type Hints for Python 3.9+" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"}, + {file = "typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4"}, +] + +[metadata] +lock-version = "2.1" +python-versions = "^3.11" +content-hash = "3e3099486c3f346f0edee105219446e1261f1c3e152a18822eecfaa2a9855a8e" diff --git a/examples/aimlapi-python/pyproject.toml b/examples/aimlapi-python/pyproject.toml new file mode 100644 index 00000000..a0aa9bdc --- /dev/null +++ b/examples/aimlapi-python/pyproject.toml @@ -0,0 +1,20 @@ +[tool.poetry] +name = "aimlapi-hello-world" +version = "0.1.0" +description = "Hello world example for AI/ML API" +authors = ["Dmitry Tumanov "] +readme = "README.md" + +[tool.poetry.dependencies] +python = "^3.11" +e2b-code-interpreter = "^1.1.1" +python-dotenv = "^1.0.1" + + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" + + +[tool.poetry.scripts] +start = "aimlapi_hello_world.main:main"