├── src ├── k6 │ └── README.md └── cypress │ ├── src │ ├── pageobjects │ │ ├── messagebox │ │ │ └── common.js │ │ ├── header.js │ │ ├── profile │ │ │ ├── your-contact-info.js │ │ │ ├── forms-and-services.js │ │ │ ├── notification-address-for-org.js │ │ │ └── other-with-rights.js │ │ ├── infoportal.js │ │ ├── partyselect.js │ │ └── login.js │ ├── fixtures │ │ ├── texts.json │ │ └── correspondence.xml │ ├── config │ │ └── baseurl.json │ ├── support │ │ ├── index.js │ │ ├── party-select.js │ │ ├── login.js │ │ └── soap │ │ │ └── correspondence.js │ ├── data │ │ └── sample.env.json │ ├── integration │ │ ├── services │ │ │ └── correspondence.js │ │ ├── login │ │ │ └── altinn-login.js │ │ ├── profile │ │ │ ├── your-contact-info.js │ │ │ ├── org-profile-info.js │ │ │ └── delegation │ │ │ │ └── single-rights.js │ │ └── pdf │ │ │ └── pdf.js │ └── plugins │ │ └── index.js │ ├── .prettierrc │ ├── .gitignore │ ├── README.md │ ├── cypress.json │ ├── .eslintrc.json │ ├── docker-compose.yml │ └── package.json ├── renovate.json ├── README.md ├── performance-tests ├── README.md ├── t3search │ ├── README.md │ └── src │ │ └── t3search.js ├── tax-report │ ├── README.md │ └── src │ │ ├── tax-report.js │ │ └── tax.xml └── generate-tokens │ └── src │ ├── generate-tokens.js │ ├── token-generator.js │ ├── generate-tokens.sh │ ├── generate-tokens.ps1 │ └── data.csv ├── LICENSE ├── .github └── workflows │ ├── taxreport-loadtest-push.yml │ ├── t3search-loadtest-push.yml │ ├── taxreport-loadtest-schedule.yml │ ├── t3search-loadtest-ondemand.yml │ └── taxreport-loadtest-ondemand.yml └── .gitignore /src/k6/README.md: -------------------------------------------------------------------------------- 1 | # Altinn 2 K6 tests 2 | 3 | ... 4 | -------------------------------------------------------------------------------- /src/cypress/src/pageobjects/messagebox/common.js: -------------------------------------------------------------------------------- 1 | export const common = { 2 | archives: 'button[onclick*="href=\'/ui/MessageBox/Archive\'"]', 3 | } 4 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "local>Altinn/renovate-config" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/cypress/src/pageobjects/header.js: -------------------------------------------------------------------------------- 1 | export const header = { 2 | nav: '#primary-nav', 3 | navList: { 4 | profile: 'a[href="/ui/Profile"]', 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /src/cypress/src/fixtures/texts.json: -------------------------------------------------------------------------------- 1 | { 2 | "correspondenceSaved": "Correspondence Saved Successfully", 3 | "accSecurityLevel2Mag": "ACC Security level 2 MAG" 4 | } 5 | -------------------------------------------------------------------------------- /src/cypress/src/pageobjects/profile/your-contact-info.js: -------------------------------------------------------------------------------- 1 | export const yourContactInfo = { 2 | header: '#myContactInfoHeader', 3 | address: '#text-input-201', 4 | } 5 | -------------------------------------------------------------------------------- /src/cypress/src/pageobjects/infoportal.js: -------------------------------------------------------------------------------- 1 | export const infoPortal = { 2 | login: 'button[onclick="location.href = \'/ui/messagebox\'"]', 3 | navList: '#nav-list', 4 | } 5 | -------------------------------------------------------------------------------- /src/cypress/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/prettierrc", 3 | "trailingComma": "all", 4 | "tabWidth": 2, 5 | "semi": false, 6 | "singleQuote": true, 7 | "printWidth": 120 8 | } 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # End-to-end tests 2 | This repo holds end-to-end tests for Altinn 3. 3 | Any tests that uses elements from different apis from different repos. Can be both functional and non-functional tests. Further descriptions: 4 | 5 | - [Performance tests](performance-tests/README.md) -------------------------------------------------------------------------------- /src/cypress/src/config/baseurl.json: -------------------------------------------------------------------------------- 1 | { 2 | "at21": "https://at21.altinn.cloud", 3 | "at22": "https://at22.altinn.cloud", 4 | "at23": "https://at23.altinn.cloud", 5 | "at24": "https://at24.altinn.cloud", 6 | "tt02": "https://tt02.altinn.no", 7 | "prod": "https://altinn.no" 8 | } -------------------------------------------------------------------------------- /src/cypress/src/pageobjects/profile/forms-and-services.js: -------------------------------------------------------------------------------- 1 | export const formsAndServices = { 2 | formsheader: '[data-target="#dineRettigheter"]', 3 | rolesList: 'div#DirectRoles-View', 4 | rightsList: 'div#DirectRights-View', 5 | InstancesList: 'div#DelegatedInstances-View', 6 | } 7 | -------------------------------------------------------------------------------- /performance-tests/README.md: -------------------------------------------------------------------------------- 1 | # Performance tests 2 | ## Requirements 3 | - [Install k6](https://grafana.com/docs/k6/latest/set-up/install-k6/) 4 | - [Install k6 extentions](https://github.com/grafana/xk6/) 5 | ### Test cases: 6 | - [tax report](tax-report/README.md) 7 | - [t3search](t3search/README.md) -------------------------------------------------------------------------------- /src/cypress/src/support/index.js: -------------------------------------------------------------------------------- 1 | import './login' 2 | import './soap/correspondence' 3 | import './party-select' 4 | import 'xml2js' 5 | 6 | before(() => { 7 | Cypress.on('uncaught:exception', (e, runnable) => { 8 | console.log('error', e) 9 | console.log('runnable', runnable) 10 | return false 11 | }) 12 | }) 13 | -------------------------------------------------------------------------------- /src/cypress/src/data/sample.env.json: -------------------------------------------------------------------------------- 1 | { 2 | "pinUser": "", 3 | "passwordUser": "", 4 | "password": "", 5 | "OrgNum": "", 6 | "delegation":{ 7 | "offeredBy":"", 8 | "coveredBy":"", 9 | "coveredByName": "" 10 | }, 11 | "serviceOwner": { 12 | "systemUserName": "", 13 | "systemPassword": "" 14 | }, 15 | "services":{ 16 | "correspondence": "" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/cypress/src/pageobjects/partyselect.js: -------------------------------------------------------------------------------- 1 | export const partySelect = { 2 | search: '#ReporteeSearch_SearchText_Favorites', 3 | reporteeSelf: '#reporteeSelfContainer', 4 | reporteeButton: 'button[class*="a-btn-shadow-large"]', 5 | reporteeOthers: '#reporteeListContentFull', 6 | updateContact: { 7 | form: '#updatePersonalContactInformation', 8 | toInbox: 'a[href*="ui/Message"]', 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /src/cypress/.gitignore: -------------------------------------------------------------------------------- 1 | #vscode settings 2 | .vscode/ 3 | 4 | # Dependency directories 5 | node_modules/ 6 | 7 | # Optional npm cache directory 8 | .npm 9 | 10 | # Optional eslint cache 11 | .eslintcache 12 | 13 | # dotenv environment variables file 14 | .env 15 | 16 | # Screenshots and video 17 | screenshots/ 18 | videos/ 19 | 20 | # Junit xml reports 21 | reports/ 22 | 23 | # Downloads 24 | downloads/ 25 | 26 | #Test data 27 | data/ -------------------------------------------------------------------------------- /src/cypress/src/integration/services/correspondence.js: -------------------------------------------------------------------------------- 1 | /// 2 | import * as texts from '../../fixtures/texts.json' 3 | 4 | describe('Correspondence', () => { 5 | it('Send Correspondence', () => { 6 | cy.sendCorrespondence(Cypress.env('pinUser')).then((response) => { 7 | expect(response.status).to.eq(200) 8 | expect(response.body).contains(texts.correspondenceSaved) 9 | }) 10 | }) 11 | }) 12 | -------------------------------------------------------------------------------- /src/cypress/src/pageobjects/profile/notification-address-for-org.js: -------------------------------------------------------------------------------- 1 | export const orgNotificationAddress = { 2 | addressHeader: '#contactSettingsEnterprise', 3 | addressExpanded: '#ContactSettingsEnterpriseContent', 4 | form: '#formContactSettingsEnterprise', 5 | eMails: '.a-email', 6 | eMail: 'input[id*="Email"][class*="form-control"]', 7 | phoneNumbers: '.a-sms', 8 | phoneNumber: 'input[id*="Phone"][class*="form-control"]', 9 | saveButton: 'button.a-btn.a-btn-success', 10 | } 11 | -------------------------------------------------------------------------------- /src/cypress/src/pageobjects/login.js: -------------------------------------------------------------------------------- 1 | export const login = { 2 | userName: '#SSN_Input', 3 | altinnPin: { 4 | form: '#altinnPinForm', 5 | pinOne: '#AltinnPinOneRequest_Pin', 6 | submitPinOne: '#submitFirstPinBtn', 7 | pinTwo: '#AltinnPinTwoRequest_Pin', 8 | pinTwoText: 'label[for="AltinnPinTwoRequest_Pin"]', 9 | submitPinTwo: '#submitSecondPinBtn', 10 | }, 11 | altinnPwd: { 12 | form: '#personalPasswordForm', 13 | passwordTab: '#PasswordTab', 14 | password: '#SsnPasswordRequest_Password', 15 | submit: '#personalPassSubmitBtn', 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /src/cypress/src/support/party-select.js: -------------------------------------------------------------------------------- 1 | /// 2 | import { partySelect } from '../pageobjects/partyselect' 3 | 4 | /** 5 | * Select the first reportee in list and click ask me later 6 | * when asked to confirm contact information 7 | */ 8 | Cypress.Commands.add('selectOrgAsReportee', () => { 9 | cy.get(partySelect.reporteeOthers) 10 | .children('div') 11 | .should('have.length', 1) 12 | .find(partySelect.reporteeButton) 13 | .should('be.visible') 14 | .click() 15 | cy.get(partySelect.updateContact.form).then(($form) => { 16 | if ($form.length) { 17 | cy.get(partySelect.updateContact.form).find(partySelect.updateContact.toInbox).click() 18 | } 19 | }) 20 | }) 21 | -------------------------------------------------------------------------------- /src/cypress/README.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | This project is for End to end testing of Altinn solution using [cypress](https://www.cypress.io/). 4 | 5 | ## Getting Started 6 | 7 | These instructions will get you run the end to end tests on test environments. 8 | 9 | ### Install dependencies 10 | 11 | ```cmd 12 | npm install # only needed first time, or when dependencies are updated 13 | ``` 14 | 15 | ### Open cypress and run tests 16 | 17 | Run the below command to open cypress with the environment 18 | 19 | ```cmd 20 | npm run cy:open --env=at22 21 | ``` 22 | 23 | ### Format files with prettier 24 | 25 | ```cmd 26 | npm run check # For checking the files deviating standards 27 | npm run format # format and save the files based on config 28 | ``` 29 | -------------------------------------------------------------------------------- /src/cypress/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://on.cypress.io/cypress.schema.json", 3 | "env": {}, 4 | "video": false, 5 | "fixturesFolder": "src/fixtures", 6 | "integrationFolder": "src/integration", 7 | "supportFile": "src/support/index.js", 8 | "pluginsFile": "src/plugins/index.js", 9 | "downloadsFolder": "downloads", 10 | "screenshotOnRunFailure": true, 11 | "screenshotsFolder": "screenshots", 12 | "trashAssetsBeforeRuns": true, 13 | "videosFolder": "videos", 14 | "viewportHeight": 768, 15 | "viewportWidth": 1536, 16 | "requestTimeout": 10000, 17 | "defaultCommandTimeout": 8000, 18 | "chromeWebSecurity": false, 19 | "reporter": "junit", 20 | "reporterOptions": { 21 | "mochaFile": "reports/result-[hash].xml" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/cypress/src/integration/login/altinn-login.js: -------------------------------------------------------------------------------- 1 | /// 2 | import { partySelect } from '../../pageobjects/partyselect' 3 | 4 | describe('Altinn Login', () => { 5 | beforeEach(() => { 6 | cy.visit('/ui/authentication') 7 | }) 8 | 9 | it('Login with AltinnPin', () => { 10 | cy.loginWithPin(Cypress.env('pinUser'), 'ajhhs') 11 | cy.get(partySelect.search).type(Cypress.env('pinUser')) 12 | cy.get(partySelect.reporteeSelf).find(partySelect.reporteeButton).should('be.visible') 13 | }) 14 | 15 | it('Login with AltinnPassword', () => { 16 | cy.loginWithPassword(Cypress.env('passwordUser'), Cypress.env('password')) 17 | cy.get(partySelect.search).type(Cypress.env('passwordUser')) 18 | cy.get(partySelect.reporteeSelf).find(partySelect.reporteeButton).should('be.visible') 19 | }) 20 | }) 21 | -------------------------------------------------------------------------------- /src/cypress/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "cypress/globals": true 4 | }, 5 | "plugins": [ 6 | "cypress" 7 | ], 8 | "extends": [ 9 | "plugin:cypress/recommended", 10 | "plugin:prettier/recommended" 11 | ], 12 | "ignorePatterns": [ 13 | "src/data", 14 | "src/reports", 15 | "src/fixtures", 16 | "src/config" 17 | ], 18 | "rules": { 19 | "eol-last": "error", 20 | "max-len": [ 21 | "error", 22 | { 23 | "code": 120, 24 | "tabWidth": 2, 25 | "ignoreUrls": true 26 | } 27 | ], 28 | "indent": [ 29 | "warn", 30 | 2, 31 | { 32 | "SwitchCase": 1 33 | } 34 | ], 35 | "quotes": [ 36 | "warn", 37 | "single", 38 | { 39 | "avoidEscape": true, 40 | "allowTemplateLiterals": true 41 | } 42 | ], 43 | "semi": [ 44 | "warn", 45 | "never" 46 | ] 47 | } 48 | } -------------------------------------------------------------------------------- /src/cypress/src/integration/profile/your-contact-info.js: -------------------------------------------------------------------------------- 1 | /// 2 | import { partySelect } from '../../pageobjects/partyselect' 3 | import { header } from '../../pageobjects/header' 4 | import { yourContactInfo } from '../../pageobjects/profile/your-contact-info' 5 | 6 | describe('Your contact information', () => { 7 | before(() => { 8 | cy.visit('/ui/authentication') 9 | }) 10 | 11 | it('Adress field is not empty', () => { 12 | cy.loginWithPin(Cypress.env('pinUser'), 'ajhhs') 13 | cy.get(partySelect.search).type(Cypress.env('pinUser')) 14 | cy.get(partySelect.reporteeSelf).find(partySelect.reporteeButton).should('be.visible').click() 15 | cy.get(header.nav).find(header.navList.profile).should('be.visible').click() 16 | cy.get(yourContactInfo.header).should('be.visible').click() 17 | cy.get(yourContactInfo.address).should('exist').invoke('attr', 'value').should('not.be.empty') 18 | }) 19 | }) 20 | -------------------------------------------------------------------------------- /performance-tests/t3search/README.md: -------------------------------------------------------------------------------- 1 | # Load test for t3search 2 | Load test for t3search, does the following, divided in two separate steps 3 | 4 | ## Steps 5 | 1. create tokens 6 | 2. Do a simple search: 7 | 8 | ## Run locally 9 | 1. Clone this repo 10 | 2. Go to src directory 11 | 3. build k6 with fileextention 12 | 4. run k6 extention to create tokens 13 | 4. run test 14 | ``` 15 | git clone 16 | cd altinn-test/performance-tests/t3search/src 17 | xk6 build v0.46.0 --with github.com/avitalique/xk6-file@latest 18 | ./k6 run -e env=<> -e tokengenuser=<> -e tokengenuserpwd=<> ../../generate-tokens/src/generate-tokens.js 19 | k6 run -e subscription_key= t3search.js 20 | ``` 21 | ## Github actions 22 | ### On push 23 | Runs a test for every push to the performance-loadtest/t3search directory 24 | - one vu 25 | - one minute 26 | ### Ondemand 27 | Runs when requested 28 | - selectable number of vus 29 | - selectable duration 30 | - selectable runner 31 | -------------------------------------------------------------------------------- /src/cypress/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.2' 2 | 3 | # run Cypress tests and exit with command 4 | # docker-compose up --exit-code-from cypress 5 | services: 6 | cypress: 7 | image: 'cypress/included:6.6.0' 8 | environment: 9 | - CYPRESS_environment=at23 10 | working_dir: /AutomatedportalTest 11 | volumes: 12 | - ./:/AutomatedportalTest 13 | command: '--spec /AutomatedportalTest/src/integration/pdf/pdf.js -b chrome' 14 | cypress2: 15 | image: 'cypress/included:6.6.0' 16 | environment: 17 | - CYPRESS_environment=at23 18 | working_dir: /AutomatedportalTest 19 | volumes: 20 | - ./:/AutomatedportalTest 21 | command: '--spec /AutomatedportalTest/src/integration/login/*.js -b chrome' 22 | cypress3: 23 | image: 'cypress/included:6.6.0' 24 | environment: 25 | - CYPRESS_environment=at23 26 | working_dir: /AutomatedportalTest 27 | volumes: 28 | - ./:/AutomatedportalTest 29 | command: '--spec "/AutomatedportalTest/src/integration/profile/*.js,/AutomatedportalTest/src/integration/services/*.js" -b chrome' 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Altinn 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/cypress/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "automatedportaltest", 3 | "version": "1.0.0", 4 | "description": "automated tests for altinn sbl", 5 | "main": "index.js", 6 | "scripts": { 7 | "eslint:check": "eslint \"src/**\"", 8 | "eslint:fix": "eslint \"src/**\" --fix", 9 | "prettier:check": "prettier -c src/**/*.js", 10 | "prettier:format": "prettier -w src/**/*.js", 11 | "cy:open": "cypress open --env environment=%npm_config_env%", 12 | "merge-reports": "jrm reports/combined.xml \"reports/*.xml\"" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "https://tfs.ai-dev.brreg.no/Altinn/Altinn/_git/AutomatedPortalTest" 17 | }, 18 | "devDependencies": { 19 | "cypress": "^8.4.1", 20 | "cypress-file-upload": "^5.0.8", 21 | "cypress-parallel": "^0.5.0", 22 | "eslint": "^7.32.0", 23 | "eslint-config-prettier": "^8.3.0", 24 | "eslint-plugin-cypress": "^2.12.1", 25 | "eslint-plugin-prettier": "^4.0.0", 26 | "fs-extra": "^10.0.0", 27 | "junit-report-merger": "^3.0.2", 28 | "path": "^0.12.7", 29 | "pdf-parse": "^1.1.1", 30 | "prettier": "2.4.1", 31 | "xml2js": "^0.4.23" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /performance-tests/tax-report/README.md: -------------------------------------------------------------------------------- 1 | # Load test for tax report 2 | Load test for tax report, does the following, divided in two separate steps 3 | 4 | ## Steps 5 | 1. create tokens 6 | 2. upload tax report: 7 | - create instance 8 | - upload tax report 9 | - callbacks and confirm (twice) 10 | - get receipt id 11 | - get receipt 12 | ## Run locally 13 | 1. Clone this repo 14 | 2. Go to src directory 15 | 3. build k6 with fileextention 16 | 4. run k6 extention to create tokens 17 | 4. run test 18 | ``` 19 | git clone 20 | cd altinn-test/performance-tests/tax-report/src 21 | xk6 build v0.46.0 --with github.com/avitalique/xk6-file@latest 22 | ./k6 run -e env=<> -e tokengenuser=<> -e tokengenuserpwd=<> ../../generate-tokens/src/generate-tokens.js 23 | k6 run -e serviceowner=<> tax-report.js 24 | ``` 25 | ## Github actions 26 | ### On push 27 | Runs a test for every push to the performance-loadtest/tax-report directory 28 | - one vu 29 | - one minute 30 | ### Scheduled 31 | Runs every morning at 06:15 32 | - 40 vus 33 | - 15 minutes 34 | ### Ondemand 35 | Runs when requested 36 | - selectable number of vus 37 | - selectable duration 38 | - selectable runner 39 | -------------------------------------------------------------------------------- /.github/workflows/taxreport-loadtest-push.yml: -------------------------------------------------------------------------------- 1 | name: taxreport loadtest smoketest 2 | 3 | on: 4 | push: 5 | branches: 6 | - '**' 7 | paths: 8 | - performance-tests/tax-report/** 9 | - .github/workflows/taxreport-loadtest-push.yml 10 | 11 | jobs: 12 | run-taxreport-on-push: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout 16 | uses: actions/checkout@v4 17 | 18 | - name: Generate tokens 19 | working-directory: ./performance-tests/tax-report/src 20 | run: ../../generate-tokens/src/generate-tokens.sh ../../generate-tokens/src 1 21 | env: 22 | API_ENVIRONMENT: ${{ secrets.YTENVIRONMENT }} 23 | TOKEN_GENERATOR_USERNAME: ${{ secrets.TOKENGENUSER }} 24 | TOKEN_GENERATOR_PASSWORD: ${{ secrets.TOKENGENPWD }} 25 | 26 | - name: Setup K6 27 | uses: grafana/setup-k6-action@v1 28 | 29 | - name: Run local k6 test 30 | uses: grafana/run-k6-action@v1 31 | with: 32 | path: performance-tests/tax-report/src/tax-report.js 33 | flags: --vus=1 --iterations=1 34 | env: 35 | serviceowner: ${{ secrets.OWNER }} 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/cypress/src/integration/pdf/pdf.js: -------------------------------------------------------------------------------- 1 | /// 2 | import { partySelect } from '../../pageobjects/partyselect' 3 | import { common } from '../../pageobjects/messagebox/common' 4 | import * as texts from '../../fixtures/texts.json' 5 | 6 | describe('PDF', () => { 7 | before(() => { 8 | cy.visit('/ui/authentication') 9 | }) 10 | 11 | it('Verify Pdf downloaded from an archived reporting service', () => { 12 | cy.loginWithPin(Cypress.env('pinUser'), 'ajhhs') 13 | cy.get(partySelect.search).type(Cypress.env('pinUser')) 14 | cy.get(partySelect.reporteeSelf).find(partySelect.reporteeButton).should('be.visible').click() 15 | cy.get(common.archives).click() 16 | cy.get('.row.a-inboxHeadingContent').click() 17 | cy.get('div[id*="accordionItem-messageBox"]').find('button[onclick*="RedirectToArchivedElement"]').click() 18 | cy.get('a[id*=ReceiptPrintFormSet]').click() 19 | cy.readFile(`${Cypress.config('downloadsFolder')}/${texts.accSecurityLevel2Mag}.pdf`, 'binary').should('exist') 20 | cy.task('getPdfContent', `${texts.accSecurityLevel2Mag}.pdf`).then((content) => { 21 | expect(content.numpages).to.equal(2) 22 | expect(content.text).contains('RF-1117') 23 | }) 24 | }) 25 | }) 26 | -------------------------------------------------------------------------------- /src/cypress/src/pageobjects/profile/other-with-rights.js: -------------------------------------------------------------------------------- 1 | export const otherWithRights = { 2 | header: '#othersWithRightsHeader', 3 | expanded: '#andremedrettigheter', 4 | addNewRights: '#addNewRightHolder', 5 | button: 'button[class*="a-btn"]', 6 | receipt: '.a-modal-receiptContent', 7 | done: '.a-btn-success', 8 | rightHolder: 'li[class="a-list-parentRightHolder"]', 9 | addReportee: { 10 | SSN: { 11 | tab: 'a[href="#person"]', 12 | idName: '#NewRightHolder_NewRightHolderPerson_SsnUsername', 13 | surName: '#NewRightHolder_NewRightHolderPerson_Surname', 14 | next: '#submitAddNewPerson', 15 | }, 16 | }, 17 | editRolesAndRightForm: { 18 | form: '#EditRolesAndRightForm', 19 | servicesList: '#serviceListIdInputDelegate', 20 | searchResults: 'li[role="menu"][id*="search"]', 21 | removeRights: 'button[class*="a-linkDanger"]', 22 | removeAll: 'label[for="delete-all-rights-checkbox"]', 23 | }, 24 | delegateRightsForm: { 25 | form: '#delegateRightsForm', 26 | read: 'input[id*="Read"][name="addRights"]', 27 | write: 'input[id*="Write"][name="addRights"]', 28 | sign: 'input[id*="Sign"][name="addRights"]', 29 | submit: '#submit-email-rights', 30 | }, 31 | submitemailform: { 32 | form: '#submitemailform', 33 | emailId: '#SubmitEmail_Input', 34 | submit: '#submitEmailbt', 35 | }, 36 | } 37 | -------------------------------------------------------------------------------- /performance-tests/generate-tokens/src/generate-tokens.js: -------------------------------------------------------------------------------- 1 | import papaparse from 'https://jslib.k6.io/papaparse/5.1.1/index.js'; 2 | import { SharedArray } from 'k6/data'; 3 | import {generateToken} from './token-generator.js'; 4 | import file from 'k6/x/file'; 5 | 6 | 7 | const environment = __ENV.env.toLowerCase(); 8 | const tokenGeneratorUserName = __ENV.tokengenuser; 9 | const tokenGeneratorUserPwd = __ENV.tokengenuserpwd; 10 | const limit = (__ENV.limit === undefined ? 0 : __ENV.limit); 11 | const ttl = (__ENV.ttl === undefined ? 3600 : __ENV.ttl) 12 | 13 | const filepath = 'data-with-tokens.csv'; 14 | const idKeys = new SharedArray('idKeys', function () { 15 | return papaparse.parse(open('data.csv'), { header: true }).data; 16 | }); 17 | 18 | export const options = { 19 | vus: 1, 20 | }; 21 | 22 | export default function() { 23 | file.writeString(filepath, 'userId,partyId,ssn,token'); 24 | var count = 0 25 | for (const idKey of idKeys) { 26 | var tokenGenParams = { 27 | env: environment, 28 | userId: idKey.userid, 29 | partyId: idKey.partyid, 30 | pid: idKey.ssn, 31 | ttl: ttl 32 | }; 33 | var token = generateToken(tokenGeneratorUserName, tokenGeneratorUserPwd, tokenGenParams); 34 | file.appendString(filepath, `\n${idKey.userid},${idKey.partyid},${idKey.ssn},${token}`); 35 | count += 1; 36 | if (count >= limit && limit > 0) break; 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /src/cypress/src/support/login.js: -------------------------------------------------------------------------------- 1 | /// 2 | import { login } from '../pageobjects/login' 3 | import * as pins from '../data/pin.json' 4 | 5 | /** 6 | * Find the second pin to type and enter it 7 | */ 8 | Cypress.Commands.add('typePinTwo', (pinSet) => { 9 | cy.get(login.altinnPin.pinTwoText).then((label) => { 10 | const labelText = label.text() 11 | const pinNo = labelText.replace(/Kode |Code number /s, '').split(' ')[0] 12 | cy.get(login.altinnPin.pinTwo).type(pinSet == 'ajhhs' ? pins[parseInt(pinNo)] : pins[0], { log: false }) 13 | }) 14 | }) 15 | 16 | /** 17 | * Login with altinnpin with the pin set 18 | */ 19 | Cypress.Commands.add('loginWithPin', (userName, pinSet) => { 20 | cy.get(login.altinnPin.form).find(login.userName).should('be.visible').type(userName, { log: false }) 21 | cy.get(login.altinnPin.pinOne).type(pinSet == 'ajhhs' ? pins[1] : pins[0], { log: false }) 22 | cy.get(login.altinnPin.submitPinOne).click() 23 | cy.typePinTwo(pinSet) 24 | cy.get(login.altinnPin.submitPinTwo).click() 25 | }) 26 | 27 | /** 28 | * Login with altinn password 29 | */ 30 | Cypress.Commands.add('loginWithPassword', (userName, password) => { 31 | cy.get(login.altinnPwd.passwordTab).should('be.visible').click() 32 | cy.get(login.altinnPwd.form).find(login.userName).should('be.visible').type(userName, { log: false }) 33 | cy.get(login.altinnPwd.password).type(password, { log: false }) 34 | cy.get(login.altinnPwd.submit).click() 35 | }) 36 | -------------------------------------------------------------------------------- /.github/workflows/t3search-loadtest-push.yml: -------------------------------------------------------------------------------- 1 | name: t3search loadtest smoketest 2 | 3 | on: 4 | push: 5 | branches: 6 | - '**' 7 | paths: 8 | - performance-tests/t3search/** 9 | - .github/workflows/t3search-loadtest-push.yml 10 | 11 | jobs: 12 | run-t3search-on-push: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout 16 | uses: actions/checkout@v4 17 | 18 | - name: Setup go 19 | uses: actions/setup-go@v5 20 | with: 21 | go-version: 'stable' 22 | 23 | - name: Install xk6 24 | run: go install go.k6.io/xk6/cmd/xk6@latest 25 | 26 | - name: Build xk6-counter binary 27 | working-directory: ./performance-tests/t3search/src 28 | run: xk6 build --with github.com/avitalique/xk6-file@latest 29 | 30 | - name: Run k6 to generate tokens 31 | working-directory: ./performance-tests/t3search/src 32 | run: ./k6 run ../../generate-tokens/src/generate-tokens.js 33 | env: 34 | env: ${{ secrets.YTENVIRONMENT }} 35 | tokengenuser: ${{ secrets.TOKENGENUSER }} 36 | tokengenuserpwd: ${{ secrets.TOKENGENPWD }} 37 | limit: 1 38 | 39 | - name: Setup K6 40 | uses: grafana/setup-k6-action@v1 41 | 42 | - name: Run local k6 test 43 | uses: grafana/run-k6-action@v1 44 | with: 45 | path: performance-tests/t3search/src/t3search.js 46 | flags: --vus=1 --iterations=1 47 | env: 48 | subscription_key: ${{ secrets.SUBSCRIPTION_KEY }} 49 | 50 | 51 | -------------------------------------------------------------------------------- /performance-tests/generate-tokens/src/token-generator.js: -------------------------------------------------------------------------------- 1 | import http from 'k6/http'; 2 | import { check } from 'k6'; 3 | import encoding from 'k6/encoding'; 4 | import { fail } from 'k6'; 5 | 6 | export function generateToken(userName, userPwd, queryParams) { 7 | const credentials = `${userName}:${userPwd}`; 8 | const encodedCredentials = encoding.b64encode(credentials); 9 | var endpoint = 'https://altinn-testtools-token-generator.azurewebsites.net/api/GetPersonalToken'; 10 | endpoint += buildQueryParametersForEndpoint(queryParams); 11 | var params = { 12 | headers: { 13 | Authorization: `Basic ${encodedCredentials}`, 14 | }, 15 | }; 16 | 17 | var token = http.get(endpoint, params); 18 | if (token.status != 200) stopIterationOnFail('token gen failed', false, token); 19 | token = token.body; 20 | return token; 21 | } 22 | 23 | export function buildQueryParametersForEndpoint(filterParameters) { 24 | var query = '?'; 25 | Object.keys(filterParameters).forEach(function (key) { 26 | if (Array.isArray(filterParameters[key])) { 27 | filterParameters[key].forEach((value) => { 28 | query += key + '=' + value + '&'; 29 | }); 30 | } else { 31 | query += key + '=' + filterParameters[key] + '&'; 32 | } 33 | }); 34 | query = query.slice(0, -1); 35 | return query; 36 | } 37 | 38 | export function stopIterationOnFail(testName, success, res) { 39 | if (!success && res != null) { 40 | console.log("fail 1"); 41 | fail(testName + ': Response code: ' + res.status); 42 | } else if (!success) { 43 | console.log("fail 2"); 44 | fail(testName); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/cypress/src/plugins/index.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const fs = require('fs-extra') 3 | const pdf = require('pdf-parse') 4 | 5 | const downloadsPath = path.join(__dirname, '..', '..', 'downloads') 6 | 7 | function getJsonDataFromFile(pathToFile, file) { 8 | const pathToJsonDataFile = path.resolve(pathToFile, `${file}.json`) 9 | return fs.readJson(pathToJsonDataFile) 10 | } 11 | 12 | module.exports = async (on, config) => { 13 | on('task', { 14 | getPdfContent(pdfName) { 15 | const pdfPathname = path.join(downloadsPath, pdfName) 16 | let dataBuffer = fs.readFileSync(pdfPathname) 17 | return pdf(dataBuffer) 18 | }, 19 | }) 20 | 21 | var baseUrls = await getJsonDataFromFile('src/config', 'baseurl') 22 | switch (config.env.environment) { 23 | case 'at21': 24 | config.baseUrl = baseUrls.at21 25 | config.env = await getJsonDataFromFile('src/data', 'at21') 26 | break 27 | case 'at22': 28 | config.baseUrl = baseUrls.at22 29 | config.env = await getJsonDataFromFile('src/data', 'at22') 30 | break 31 | case 'at23': 32 | config.baseUrl = baseUrls.at23 33 | config.env = await getJsonDataFromFile('src/data', 'at23') 34 | break 35 | case 'at24': 36 | config.baseUrl = baseUrls.at24 37 | config.env = await getJsonDataFromFile('src/data', 'at24') 38 | break 39 | case 'tt02': 40 | config.baseUrl = baseUrls.tt02 41 | config.env = await getJsonDataFromFile('src/data', 'tt02') 42 | break 43 | case 'prod': 44 | config.baseUrl = baseUrls.prod 45 | config.env = await getJsonDataFromFile('src/data', 'prod') 46 | break 47 | } 48 | 49 | return config 50 | } 51 | -------------------------------------------------------------------------------- /src/cypress/src/fixtures/correspondence.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 1033 15 | Correspondence test 16 | Du har fått tilsendt en melding. 17 | Åpne meldingen ved å trykke på linken under. 18 | Correspondence 19 | 20 | 2021-01-01T16:17:00.000Z 21 | 2022-09-19T20:13:00.000Z 22 | 2022-10-20T13:15:05.000Z 23 | 1 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/cypress/src/integration/profile/org-profile-info.js: -------------------------------------------------------------------------------- 1 | /// 2 | import { partySelect } from '../../pageobjects/partyselect' 3 | import { header } from '../../pageobjects/header' 4 | import { formsAndServices } from '../../pageobjects/profile/forms-and-services' 5 | import { orgNotificationAddress } from '../../pageobjects/profile/notification-address-for-org' 6 | 7 | describe('Organisation profile Information', () => { 8 | before(() => { 9 | cy.visit('/ui/authentication') 10 | cy.loginWithPin(Cypress.env('pinUser'), 'ajhhs') 11 | cy.get(partySelect.search).type(Cypress.env('OrgNum')) 12 | cy.selectOrgAsReportee() 13 | }) 14 | beforeEach(() => { 15 | Cypress.Cookies.preserveOnce('altinnReportee', 'AltinnPartyId', '.ASPXAUTH') 16 | cy.get(header.nav).find(header.navList.profile).should('be.visible').click() 17 | }) 18 | 19 | it('Org Forms and Services', () => { 20 | cy.get(formsAndServices.formsheader).should('be.visible').click() 21 | cy.get(formsAndServices.rolesList).should('exist').should('not.be.empty').should('contain', 'Daglig leder') 22 | }) 23 | 24 | it('Org Notification Address', () => { 25 | cy.get(orgNotificationAddress.addressHeader).should('be.visible').click() 26 | cy.get(orgNotificationAddress.form).then((form) => { 27 | expect(form).to.exist 28 | cy.get(form) 29 | .get(orgNotificationAddress.eMails) 30 | .first() 31 | .get(orgNotificationAddress.eMail) 32 | .first() 33 | .should('be.visible') 34 | .focus() 35 | .clear() 36 | .type(`test${Math.floor(Math.random() * 10000)}@mail.com`) 37 | cy.get(form) 38 | .get(orgNotificationAddress.phoneNumbers) 39 | .first() 40 | .get(orgNotificationAddress.phoneNumber) 41 | .first() 42 | .focus() 43 | .clear() 44 | .type('91008912') 45 | cy.get(form).find(orgNotificationAddress.saveButton).should('be.visible').click() 46 | }) 47 | }) 48 | }) 49 | -------------------------------------------------------------------------------- /src/cypress/src/support/soap/correspondence.js: -------------------------------------------------------------------------------- 1 | /// 2 | const baseUrl = Cypress.config('baseUrl') 3 | const xml2js = require('xml2js') 4 | 5 | /** 6 | * Custom command to send correspondence to a reportee 7 | */ 8 | Cypress.Commands.add('sendCorrespondence', (reportee) => { 9 | cy.readFile('src/fixtures/correspondence.xml').then((xml) => { 10 | xml2js.parseString(xml, (err, result) => { 11 | if (err) { 12 | throw err 13 | } 14 | 15 | var updatedBody = { 16 | 'ns:systemUserName': [Cypress.env('serviceOwner').systemUserName], 17 | 'ns:systemPassword': [Cypress.env('serviceOwner').systemPassword], 18 | 'ns:SystemUserCode': [Cypress.env('serviceOwner').systemUserName], 19 | 'ns:ExternalShipmentReference': [`EUF_${Math.floor(Math.random() * 100000)}`], 20 | } 21 | Object.assign(result['soapenv:Envelope']['soapenv:Body'][0]['ns:InsertCorrespondenceBasicV2'][0], updatedBody) 22 | 23 | var updatedCorrespondence = { 24 | 'ns1:ServiceCode': [Cypress.env('services').correspondence.split(':')[0]], 25 | 'ns1:ServiceEdition': [Cypress.env('services').correspondence.split(':')[1]], 26 | 'ns1:Reportee': [reportee], 27 | } 28 | Object.assign( 29 | result['soapenv:Envelope']['soapenv:Body'][0]['ns:InsertCorrespondenceBasicV2'][0]['ns:Correspondence'][0], 30 | updatedCorrespondence, 31 | ) 32 | 33 | const builder = new xml2js.Builder() 34 | const builtCorrespondenceXml = builder.buildObject(result) 35 | 36 | return cy.request({ 37 | method: 'POST', 38 | url: `${baseUrl}/ServiceEngineExternal/CorrespondenceAgencyExternalBasic.svc`, 39 | headers: { 40 | 'Content-Type': 'text/xml;charset=UTF-8', 41 | SOAPAction: 42 | 'http://www.altinn.no/services/ServiceEngine/Correspondence/2009/10/ICorrespondenceAgencyExternalBasic/InsertCorrespondenceBasicV2', 43 | }, 44 | body: builtCorrespondenceXml, 45 | }) 46 | }) 47 | }) 48 | }) 49 | -------------------------------------------------------------------------------- /performance-tests/generate-tokens/src/generate-tokens.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check if required environment variables are set 4 | if [ -z "$TOKEN_GENERATOR_USERNAME" ] || [ -z "$TOKEN_GENERATOR_PASSWORD" ] || [ -z "$API_ENVIRONMENT" ]; then 5 | echo "Error: TOKEN_GENERATOR_USERNAME, TOKEN_GENERATOR_PASSWORD, and API_ENVIRONMENT must be set" 6 | exit 1 7 | fi 8 | 9 | # Function to display usage information 10 | usage() { 11 | echo "Usage: $0 " 12 | echo " : Path to the test data files" 13 | echo " : limit number of tokens to generate. 0 means generate all" 14 | exit 1 15 | } 16 | 17 | # Validate arguments 18 | if [ $# -ne 2 ]; then 19 | usage 20 | fi 21 | 22 | tokengenuser=${TOKEN_GENERATOR_USERNAME} 23 | tokengenpasswd=${TOKEN_GENERATOR_PASSWORD} 24 | 25 | env="" 26 | case $API_ENVIRONMENT in 27 | "at21") 28 | env="at21" ;; 29 | "tt02") 30 | env="tt02" ;; 31 | "yt01") 32 | env="yt01" ;; 33 | *) 34 | echo "Error: Unknown api environment $API_ENVIRONMENT" 35 | exit 1 ;; 36 | esac 37 | 38 | testdatafilepath=$1 39 | limit=$2 40 | 41 | enduser_datafile="$testdatafilepath/data-$API_ENVIRONMENT.csv" 42 | enduser_tokenfile=".data-with-tokens.csv" 43 | 44 | if [ ! -f "$enduser_datafile" ]; then 45 | echo "Error: Input file not found: $enduser_datafile" 46 | exit 1 47 | fi 48 | echo "userId,partyId,ssn,token" > $enduser_tokenfile 49 | generated=0 50 | while IFS=, read -r partyId userId ssn 51 | do 52 | if [ $limit -gt 0 ] && [ $generated -gt $limit ]; then 53 | break 54 | fi 55 | url="https://altinn-testtools-token-generator.azurewebsites.net/api/GetPersonalToken?env=$env&userId=$userId&partyId=$partyId&pid=$ssn&ttl=3600" 56 | token=$(curl -s -f $url -u "$tokengenuser:$tokengenpasswd" ) 57 | if [ $? -ne 0 ]; then 58 | echo "Error: Failed to generate personal token for: $ssn, $scopes " 59 | continue 60 | fi 61 | echo "$userId,$partyId,$ssn,$token" >> $enduser_tokenfile 62 | status=$? 63 | if [ $status -ne 0 ]; then 64 | echo "Error: Failed to write personal token to file for: $ssn" 65 | else 66 | ((generated++)) 67 | fi 68 | 69 | 70 | done < <(tail -n +2 $enduser_datafile) -------------------------------------------------------------------------------- /src/cypress/src/integration/profile/delegation/single-rights.js: -------------------------------------------------------------------------------- 1 | /// 2 | import { partySelect } from '../../../pageobjects/partyselect' 3 | import { header } from '../../../pageobjects/header' 4 | import { otherWithRights } from '../../../pageobjects/profile/other-with-rights' 5 | import * as texts from '../../../fixtures/texts.json' 6 | 7 | describe('Delegation', function () { 8 | before(() => { 9 | cy.visit('/ui/authentication') 10 | }) 11 | 12 | it('Delegate Single rigths', function () { 13 | cy.loginWithPin(Cypress.env('delegation').offeredBy, '12345') 14 | cy.get(partySelect.search).type(Cypress.env('delegation').offeredBy) 15 | cy.get(partySelect.reporteeSelf).find(partySelect.reporteeButton).should('be.visible').click() 16 | cy.get(header.nav).find(header.navList.profile).should('be.visible').click() 17 | cy.get(otherWithRights.header).should('be.visible').click() 18 | cy.get(otherWithRights.addNewRights).find(otherWithRights.button).click() 19 | cy.get(otherWithRights.addReportee.SSN.idName).should('be.visible').type(Cypress.env('delegation').coveredBy) 20 | cy.get(otherWithRights.addReportee.SSN.surName).type(Cypress.env('delegation').coveredByName).blur() 21 | cy.get(otherWithRights.addReportee.SSN.next).click() 22 | cy.get(otherWithRights.editRolesAndRightForm.servicesList).should('be.visible').type(texts.accSecurityLevel2Mag) 23 | cy.contains(otherWithRights.editRolesAndRightForm.searchResults, texts.accSecurityLevel2Mag) 24 | .should('be.visible') 25 | .click() 26 | cy.get(otherWithRights.delegateRightsForm.read).parent().click() 27 | cy.get(otherWithRights.delegateRightsForm.submit).click() 28 | cy.get(otherWithRights.submitemailform.emailId).should('be.visible').focus().type('test@mail.com').blur() 29 | cy.get(otherWithRights.submitemailform.submit).should('be.enabled').click() 30 | cy.get(otherWithRights.receipt).siblings(otherWithRights.done).should('be.visible').click() 31 | //Delete delegation made to user 32 | cy.get(otherWithRights.expanded).should('be.visible') 33 | cy.contains(otherWithRights.rightHolder, Cypress.env('delegation').coveredByName).click() 34 | cy.get(otherWithRights.editRolesAndRightForm.form) 35 | .find(otherWithRights.editRolesAndRightForm.removeRights) 36 | .should('be.visible') 37 | .click() 38 | cy.get(otherWithRights.editRolesAndRightForm.removeAll).click() 39 | cy.get(otherWithRights.editRolesAndRightForm.form).find(otherWithRights.done).should('be.visible').click() 40 | cy.get(otherWithRights.receipt).siblings(otherWithRights.done).should('be.visible').click() 41 | }) 42 | }) 43 | -------------------------------------------------------------------------------- /performance-tests/t3search/src/t3search.js: -------------------------------------------------------------------------------- 1 | import http from 'k6/http'; 2 | import papaparse from 'https://jslib.k6.io/papaparse/5.1.1/index.js'; 3 | import { randomItem } from 'https://jslib.k6.io/k6-utils/1.2.0/index.js'; 4 | import { SharedArray } from 'k6/data'; 5 | import { textSummary } from 'https://jslib.k6.io/k6-summary/0.0.2/index.js'; 6 | import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js"; 7 | 8 | const idKeys = new SharedArray('idKeys', function () { 9 | return papaparse.parse(open('data-with-tokens.csv'), { header: true }).data; 10 | }); 11 | 12 | const subscription_key = __ENV.subscription_key; 13 | 14 | export const options = { 15 | discardResponseBodies: true, 16 | summaryTrendStats: ['avg', 'min', 'med', 'max', 'p(95)', 'p(99)', 'p(99.5)', 'p(99.9)', 'count'], 17 | thresholds: { 18 | http_req_failed: ['rate<0.01'], 19 | }, 20 | 21 | }; 22 | 23 | export function setup() { 24 | var data = { 25 | searchUrlYt: `https://platform.yt01.altinn.cloud/storage/api/v1/sbl/instances/search`, 26 | idKeys: [] 27 | }; 28 | 29 | for (const idKey of idKeys) { 30 | data.idKeys.push({ 31 | partyId: idKey.partyId, 32 | userId: idKey.userId, 33 | ssn: idKey.ssn, 34 | token: idKey.token 35 | }); 36 | if ((options.vus === undefined || options.vus === 1) && (options.iterations === undefined || options.iterations === 1)) { 37 | break; 38 | } 39 | }; 40 | return data; 41 | } 42 | 43 | export default function(data) { 44 | if ((options.vus === undefined || options.vus === 1) && (options.iterations === undefined || options.iterations === 1)) { 45 | search(data, data.idKeys[0]); 46 | } 47 | else { 48 | while (true) { search(data, randomItem(data.idKeys)); } 49 | } 50 | } 51 | 52 | export function search(data, id) { 53 | var query = 54 | { 55 | Language: 'nb', 56 | InstanceOwnerPartyIdList: [ id.partyId ], 57 | FromCreated: new Date(2018, 12, 12), 58 | ToCreated: new Date(2099, 1, 1), 59 | IncludeActive: false, 60 | IncludeArchived: true 61 | }; 62 | 63 | var params = { 64 | headers: { 65 | Authorization: 'Bearer ' + id.token, 66 | 'Content-Type': 'application/json', 67 | 'Ocp-Apim-Subscription-Key': subscription_key 68 | }, 69 | } 70 | 71 | var request_body = JSON.stringify(query) 72 | http.post(data.searchUrlYt, request_body, params); 73 | } 74 | 75 | export function handleSummary(data) { 76 | return { 77 | 'stdout': textSummary(data, { indent: ' ', enableColors: true }), 78 | 'stdout.txt': textSummary(data, { indent: ' ', enableColors: true }), 79 | "summary.html": htmlReport(data), 80 | }; 81 | } 82 | -------------------------------------------------------------------------------- /.github/workflows/taxreport-loadtest-schedule.yml: -------------------------------------------------------------------------------- 1 | name: taxreport loadtest scheduled 2 | 3 | on: 4 | schedule: 5 | - cron: "15 4 1 * *" 6 | 7 | jobs: 8 | run-taxreport-every-month: 9 | runs-on: ubuntu-latest 10 | #runs-on: ['self-hosted', 'macOS', 'X64'] 11 | #runs-on: ['self-hosted', 'Windows', 'X64'] 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v4 15 | 16 | - name: Generate tokens 17 | working-directory: ./performance-tests/tax-report/src 18 | run: ../../generate-tokens/src/generate-tokens.sh ../../generate-tokens/src 0 19 | env: 20 | API_ENVIRONMENT: ${{ secrets.YTENVIRONMENT }} 21 | TOKEN_GENERATOR_USERNAME: ${{ secrets.TOKENGENUSER }} 22 | TOKEN_GENERATOR_PASSWORD: ${{ secrets.TOKENGENPWD }} 23 | 24 | - name: Setup K6 25 | uses: grafana/setup-k6-action@v1 26 | 27 | - name: Run local k6 test 28 | uses: grafana/run-k6-action@v1 29 | with: 30 | path: performance-tests/tax-report/src/tax-report.js 31 | flags: --vus=40 --duration=10m 32 | env: 33 | K6_WEB_DASHBOARD: true 34 | K6_WEB_DASHBOARD_EXPORT: html-report.html 35 | serviceowner: ${{ secrets.OWNER }} 36 | 37 | - name: Upload summary html report 38 | uses: actions/upload-artifact@v4 39 | if: always() 40 | with: 41 | name: summary-html 42 | path: summary.html 43 | - name: Upload extended html report 44 | uses: actions/upload-artifact@v4 45 | if: always() 46 | with: 47 | name: extended-html 48 | path: html-report.html 49 | 50 | - name: Upload summary text report 51 | uses: actions/upload-artifact@v4 52 | if: always() 53 | with: 54 | name: summary-txt 55 | path: stdout.txt 56 | 57 | - name: Upload HTML report to Azure 58 | if: always() 59 | shell: bash 60 | run: | 61 | REPORT_DIR='taxreports_scheduled-${{ github.run_number }}-${{ github.run_attempt }}' 62 | azcopy cp --recursive "*.html" "https://altinnloadtests.blob.core.windows.net/\$web/$REPORT_DIR" 63 | echo "::Link to test results summary: title=HTML report url::https://altinnloadtests.z1.web.core.windows.net/$REPORT_DIR/summary.html" 64 | echo "::Link to test results extended: title=HTML report url::https://altinnloadtests.z1.web.core.windows.net/$REPORT_DIR/html-report.html" 65 | env: 66 | AZCOPY_AUTO_LOGIN_TYPE: SPN 67 | AZCOPY_SPA_APPLICATION_ID: ${{ secrets.AZCOPY_SPA_APPLICATION_ID }} 68 | AZCOPY_SPA_CLIENT_SECRET: ${{ secrets.AZCOPY_SPA_CLIENT_SECRET }} 69 | AZCOPY_TENANT_ID: ${{ secrets.AZCOPY_TENANT_ID }} 70 | 71 | -------------------------------------------------------------------------------- /performance-tests/generate-tokens/src/generate-tokens.ps1: -------------------------------------------------------------------------------- 1 | param ( 2 | [Parameter(Mandatory=$true)] 3 | [string]$TOKEN_GENERATOR_USERNAME, 4 | [Parameter(Mandatory=$true)] 5 | [string]$TOKEN_GENERATOR_PASSWORD, 6 | [Parameter(Mandatory=$true)] 7 | [string]$API_ENVIRONMENT, 8 | [Parameter(Mandatory=$true)] 9 | [string]$testdatafilepath, 10 | [Parameter(Mandatory=$true)] 11 | [int]$limit 12 | ) 13 | 14 | # Check if required environment variables are set 15 | if (-not $TOKEN_GENERATOR_USERNAME -or -not $TOKEN_GENERATOR_PASSWORD -or -not $API_ENVIRONMENT) { 16 | Write-Host "Error: TOKEN_GENERATOR_USERNAME, TOKEN_GENERATOR_PASSWORD, and API_ENVIRONMENT must be set" 17 | exit 1 18 | } 19 | 20 | # Function to display usage information 21 | function Usage { 22 | Write-Host "Usage: $PSCommandPath -testdatafilepath -limit " 23 | Write-Host " : Path to the test data files" 24 | Write-Host " : limit number of tokens to generate. 0 means generate all" 25 | exit 1 26 | } 27 | 28 | # Validate arguments 29 | #if ($args.Length -ne 2) { 30 | # Usage 31 | #} 32 | 33 | $tokengenuser = $TOKEN_GENERATOR_USERNAME 34 | $tokengenpasswd = $TOKEN_GENERATOR_PASSWORD 35 | 36 | $env = "" 37 | switch ($API_ENVIRONMENT) { 38 | "at21" { $env = "at21" } 39 | "tt02" { $env = "tt02" } 40 | "yt01" { $env = "yt01" } 41 | default { 42 | Write-Host "Error: Unknown api environment $API_ENVIRONMENT" 43 | exit 1 44 | } 45 | } 46 | 47 | $enduser_datafile = "$testdatafilepath/data-$API_ENVIRONMENT.csv" 48 | $enduser_tokenfile = ".data-with-tokens.csv" 49 | 50 | if (-not (Test-Path $enduser_datafile)) { 51 | Write-Host "Error: Input file not found: $enduser_datafile" 52 | exit 1 53 | } 54 | 55 | "userId,partyId,ssn,token" | Out-File -FilePath $enduser_tokenfile -Encoding utf8 56 | $status = $? 57 | if ($status -ne 1) { 58 | Write-Host "Error: Failed to write header to file $enduser_tokenfile" 59 | exit 1 60 | } 61 | 62 | $generated = 0 63 | Import-Csv -Path $enduser_datafile | ForEach-Object { 64 | if ($limit -gt 0 -and $generated -ge $limit) { 65 | break 66 | } 67 | $partyId = $_.partyId 68 | $userId = $_.userId 69 | $ssn = $_.ssn 70 | 71 | $url = "https://altinn-testtools-token-generator.azurewebsites.net/api/GetPersonalToken?env=$env&userId=$userId&partyId=$partyId&pid=$ssn&ttl=3600" 72 | #$token = Invoke-RestMethod -Uri $url -Method Get -Credential (New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $tokengenuser, (ConvertTo-SecureString -String $tokengenpasswd -AsPlainText -Force)) 73 | $token = Invoke-RestMethod -Uri $url -Headers @{Authorization=("Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("${tokengenuser}:${tokengenpasswd}")))} -Method Get 74 | if (-not $?) { 75 | Write-Host "Error: Failed to generate personal token for: $ssn, $scopes" 76 | continue 77 | } 78 | "$userId,$partyId,$ssn,$token" | Out-File -FilePath $enduser_tokenfile -Append -Encoding utf8 79 | $status = $? 80 | if ($status -ne 1) { 81 | Write-Host "Error: Failed to write personal token to file for: $ssn $status" 82 | } else { 83 | $generated++ 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /.github/workflows/t3search-loadtest-ondemand.yml: -------------------------------------------------------------------------------- 1 | name: t3search loadtest ondemand 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | vus: 7 | description: 'Number of VUS' 8 | required: true 9 | default: 10 10 | type: number 11 | duration: 12 | description: 'Duration of test, ie 30s, 1m, 10m' 13 | required: true 14 | default: 1m 15 | type: string 16 | limit: 17 | description: 'Limit the number of tokens to generate, 0 or less means create for every partyId/userId' 18 | required: true 19 | default: 10 20 | type: number 21 | select-runner: 22 | description: 'Select runner to run the test' 23 | required: true 24 | type: choice 25 | default: "'ubuntu-latest'" 26 | options: 27 | - "'ubuntu-latest'" 28 | - "['self-hosted', 'macOS', 'X64']" 29 | 30 | jobs: 31 | run-t3search-ondemand: 32 | runs-on: ${{ fromJSON(inputs.select-runner) }} 33 | steps: 34 | - name: Checkout 35 | uses: actions/checkout@v4 36 | 37 | - name: Setup go 38 | uses: actions/setup-go@v5 39 | with: 40 | go-version: 'stable' 41 | 42 | - name: Install xk6 43 | run: go install go.k6.io/xk6/cmd/xk6@latest 44 | 45 | - name: Build xk6-counter binary 46 | working-directory: ./performance-tests/t3search/src 47 | run: xk6 build --with github.com/avitalique/xk6-file@latest 48 | 49 | - name: Run k6 to generate tokens 50 | working-directory: ./performance-tests/t3search/src 51 | run: ./k6 run ../../generate-tokens/src/generate-tokens.js 52 | env: 53 | env: ${{ secrets.YTENVIRONMENT }} 54 | tokengenuser: ${{ secrets.TOKENGENUSER }} 55 | tokengenuserpwd: ${{ secrets.TOKENGENPWD }} 56 | limit: ${{ inputs.limit }} 57 | 58 | - name: Setup K6 59 | uses: grafana/setup-k6-action@v1 60 | 61 | - name: Run local k6 test 62 | uses: grafana/run-k6-action@v1 63 | with: 64 | path: performance-tests/t3search/src/t3search.js 65 | flags: --vus=${{ inputs.vus }} --duration=${{ inputs.duration }} 66 | env: 67 | K6_WEB_DASHBOARD: true 68 | K6_WEB_DASHBOARD_EXPORT: html-report.html 69 | subscription_key: ${{ secrets.SUBSCRIPTION_KEY }} 70 | 71 | - name: Upload summary html report 72 | uses: actions/upload-artifact@v4 73 | if: always() 74 | with: 75 | name: summary-html 76 | path: summary.html 77 | - name: Upload extended html report 78 | uses: actions/upload-artifact@v4 79 | if: always() 80 | with: 81 | name: extended-html 82 | path: html-report.html 83 | 84 | - name: Upload summary text report 85 | uses: actions/upload-artifact@v4 86 | if: always() 87 | with: 88 | name: summary-txt 89 | path: stdout.txt 90 | 91 | - name: Upload HTML report to Azure 92 | if: always() 93 | shell: bash 94 | run: | 95 | REPORT_DIR='t3search_ondemand-${{ github.run_number }}-${{ github.run_attempt }}' 96 | azcopy cp --recursive "*.html" "https://altinnloadtests.blob.core.windows.net/\$web/$REPORT_DIR" 97 | echo "::Link to test results summary: title=HTML report url::https://altinnloadtests.z1.web.core.windows.net/$REPORT_DIR/summary.html" 98 | echo "::Link to test results extended: title=HTML report url::https://altinnloadtests.z1.web.core.windows.net/$REPORT_DIR/html-report.html" 99 | env: 100 | AZCOPY_AUTO_LOGIN_TYPE: SPN 101 | AZCOPY_SPA_APPLICATION_ID: ${{ secrets.AZCOPY_SPA_APPLICATION_ID }} 102 | AZCOPY_SPA_CLIENT_SECRET: ${{ secrets.AZCOPY_SPA_CLIENT_SECRET }} 103 | AZCOPY_TENANT_ID: ${{ secrets.AZCOPY_TENANT_ID }} 104 | 105 | -------------------------------------------------------------------------------- /.github/workflows/taxreport-loadtest-ondemand.yml: -------------------------------------------------------------------------------- 1 | name: taxreport loadtest ondemand 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | vus: 7 | description: 'Number of VUS' 8 | required: true 9 | default: 10 10 | type: number 11 | duration: 12 | description: 'Duration of test, ie 30s, 1m, 10m' 13 | required: true 14 | default: 1m 15 | type: string 16 | limit: 17 | description: 'Limit the number of tokens to generate, 0 or less means create for every partyId/userId' 18 | required: true 19 | default: 10 20 | type: number 21 | select-runner: 22 | description: 'Select runner to run the test' 23 | required: true 24 | type: choice 25 | default: "'ubuntu-latest'" 26 | options: 27 | - "'ubuntu-latest'" 28 | - "'windows-latest'" 29 | - "'macOS-latest'" 30 | 31 | jobs: 32 | run-taxreport-ondemand: 33 | runs-on: ${{ fromJSON(inputs.select-runner) }} 34 | steps: 35 | - name: Checkout 36 | uses: actions/checkout@v4 37 | 38 | - name: Generate tokens (Linux/Mac) 39 | if: runner.os != 'Windows' 40 | working-directory: ./performance-tests/tax-report/src 41 | run: ../../generate-tokens/src/generate-tokens.sh ../../generate-tokens/src ${{ inputs.limit }} 42 | env: 43 | API_ENVIRONMENT: ${{ secrets.YTENVIRONMENT }} 44 | TOKEN_GENERATOR_USERNAME: ${{ secrets.TOKENGENUSER }} 45 | TOKEN_GENERATOR_PASSWORD: ${{ secrets.TOKENGENPWD }} 46 | 47 | - name: Generate tokens (Windows) 48 | if: runner.os == 'Windows' 49 | working-directory: ./performance-tests/tax-report/src 50 | run: pwsh ../../generate-tokens/src/generate-tokens.ps1 ` 51 | -testdatafilepath ../../generate-tokens/src ` 52 | -limit ${{ inputs.limit }} ` 53 | -API_ENVIRONMENT ${{ secrets.YTENVIRONMENT }} ` 54 | -TOKEN_GENERATOR_USERNAME ${{ secrets.TOKENGENUSER }} ` 55 | -TOKEN_GENERATOR_PASSWORD ${{ secrets.TOKENGENPWD }} 56 | env: 57 | API_ENVIRONMENT: ${{ secrets.YTENVIRONMENT }} 58 | TOKEN_GENERATOR_USERNAME: ${{ secrets.TOKENGENUSER }} 59 | TOKEN_GENERATOR_PASSWORD: ${{ secrets.TOKENGENPWD }} 60 | 61 | - name: Setup K6 62 | uses: grafana/setup-k6-action@v1 63 | 64 | - name: Run local k6 test 65 | uses: grafana/run-k6-action@v1 66 | with: 67 | path: performance-tests/tax-report/src/tax-report.js 68 | flags: --vus=${{ inputs.vus }} --duration=${{ inputs.duration }} 69 | env: 70 | K6_WEB_DASHBOARD: true 71 | K6_WEB_DASHBOARD_EXPORT: html-report.html 72 | #K6_CLOUD_TOKEN: ${{ secrets.K6_CLOUD_TOKEN }} 73 | #K6_CLOUD_PROJECT_ID: ${{ secrets.K6_CLOUD_PROJECT_ID }} 74 | serviceowner: ${{ secrets.OWNER }} 75 | 76 | - name: Upload summary html report 77 | uses: actions/upload-artifact@v4 78 | if: always() 79 | with: 80 | name: summary-html 81 | path: summary.html 82 | - name: Upload extended html report 83 | uses: actions/upload-artifact@v4 84 | if: always() 85 | with: 86 | name: extended-html 87 | path: html-report.html 88 | 89 | - name: Upload summary text report 90 | uses: actions/upload-artifact@v4 91 | if: always() 92 | with: 93 | name: summary-txt 94 | path: stdout.txt 95 | 96 | - name: Upload HTML report to Azure 97 | if: always() 98 | shell: bash 99 | run: | 100 | REPORT_DIR='taxreports_ondemand-${{ github.run_number }}-${{ github.run_attempt }}' 101 | azcopy cp --recursive "*.html" "https://altinnloadtests.blob.core.windows.net/\$web/$REPORT_DIR" 102 | echo "::Link to test results summary: title=HTML report url::https://altinnloadtests.z1.web.core.windows.net/$REPORT_DIR/summary.html" 103 | echo "::Link to test results extended: title=HTML report url::https://altinnloadtests.z1.web.core.windows.net/$REPORT_DIR/html-report.html" 104 | env: 105 | AZCOPY_AUTO_LOGIN_TYPE: SPN 106 | AZCOPY_SPA_APPLICATION_ID: ${{ secrets.AZCOPY_SPA_APPLICATION_ID }} 107 | AZCOPY_SPA_CLIENT_SECRET: ${{ secrets.AZCOPY_SPA_CLIENT_SECRET }} 108 | AZCOPY_TENANT_ID: ${{ secrets.AZCOPY_TENANT_ID }} 109 | 110 | -------------------------------------------------------------------------------- /performance-tests/tax-report/src/tax-report.js: -------------------------------------------------------------------------------- 1 | import http from 'k6/http'; 2 | import { group } from 'k6'; 3 | import papaparse from 'https://jslib.k6.io/papaparse/5.1.1/index.js'; 4 | import { randomItem } from 'https://jslib.k6.io/k6-utils/1.2.0/index.js'; 5 | import { SharedArray } from 'k6/data'; 6 | import { textSummary } from 'https://jslib.k6.io/k6-summary/0.0.2/index.js'; 7 | import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js"; 8 | 9 | const taxXml = open('tax.xml', 'b'); 10 | const idKeys = new SharedArray('idKeys', function () { 11 | return papaparse.parse(open('.data-with-tokens.csv'), { header: true }).data; 12 | }); 13 | 14 | export const options = { 15 | summaryTrendStats: ['avg', 'min', 'med', 'max', 'p(95)', 'p(99)', 'p(99.5)', 'p(99.9)', 'count'], 16 | thresholds: { 17 | http_req_failed: ['rate<0.01'], 18 | 'http_req_duration{name:create_instance}': [], 19 | 'http_req_duration{name:upload_data}': [], 20 | 'http_req_duration{name:trigger_callback_and_confirm}': [], 21 | 'http_req_duration{name:get_receipt_id}': [], 22 | 'http_req_duration{name:get_receipt}': [], 23 | 'http_reqs{name:create_instance}': [], 24 | 'http_reqs{name:upload_data}': [], 25 | 'http_reqs{name:trigger_callback_and_confirm}': [], 26 | 'http_reqs{name:get_receipt_id}': [], 27 | 'http_reqs{name:get_receipt}': [], 28 | }, 29 | 30 | }; 31 | 32 | export function setup() { 33 | var data = { 34 | searchUrlYt: `https://${__ENV.serviceowner}.apps.yt01.altinn.cloud/`, 35 | basePath: (__ENV.serviceowner == 'ttd' ? "ttd/skattemelding-kopi" : "skd/formueinntekt-skattemelding-v2"), 36 | idKeys: [] 37 | }; 38 | 39 | for (const idKey of idKeys) { 40 | data.idKeys.push({ 41 | partyId: idKey.partyId, 42 | userId: idKey.userId, 43 | ssn: idKey.ssn, 44 | token: idKey.token 45 | }); 46 | if ((options.vus === undefined || options.vus === 1) && (options.iterations === undefined || options.iterations === 1)) { 47 | break; 48 | } 49 | }; 50 | return data; 51 | } 52 | 53 | export default function(data) { 54 | if ((options.vus === undefined || options.vus === 1) && (options.iterations === undefined || options.iterations === 1)) { 55 | submit_tax(data, data.idKeys[0]); 56 | } 57 | else { 58 | while (true) { submit_tax(data, randomItem(data.idKeys)); } 59 | } 60 | } 61 | 62 | export function submit_tax(data, id) { 63 | group("Submit tax report", function () { 64 | 65 | // 1. Create instance 66 | var instance_resp = create_instance(data, id); 67 | if (instance_resp.status != 201) return; 68 | 69 | // 2. Uplod tax report 70 | var instance = instance_resp.json(); 71 | var upload_resp = upload_data(data, instance, id); 72 | if (upload_resp.status != 201) return; 73 | 74 | // 3 & 4. Trigger callback and confirm 75 | var cb_c_resp = trigger_callback_and_confirm(data, instance, id); 76 | if (cb_c_resp.status != 200) return; 77 | cb_c_resp = trigger_callback_and_confirm(data, instance, id); 78 | if (cb_c_resp.status != 200) return; 79 | 80 | // 5. Get receipt id 81 | var receipt_id_resp = get_receipt_id(data, instance, id); 82 | if (receipt_id_resp.status != 200) return; 83 | 84 | // 6. Get receipt 85 | var receipt_element = receipt_id_resp.json().data.find(x => x.dataType === "Skattemeldingsapp_v2") 86 | get_receipt(data, instance, id, receipt_element.id) 87 | 88 | }); 89 | 90 | } 91 | 92 | export function create_instance(data, id) { 93 | var instance = 94 | { 95 | InstanceOwner: { 96 | PartyId: id.partyId 97 | }, 98 | AppId: data.basePath, 99 | DataValues: { inntektsaar: "2021" } 100 | }; 101 | 102 | var endPoint = data.searchUrlYt + data.basePath + "/instances"; 103 | var params = { 104 | headers: { 105 | Authorization: 'Bearer ' + id.token, 106 | 'Content-Type': 'application/json' 107 | }, 108 | tags: { name: 'create_instance' } 109 | }; 110 | 111 | var request_body = JSON.stringify(instance) 112 | return http.post(endPoint, request_body, params); 113 | } 114 | 115 | export function upload_data(data, instance, id) { 116 | var endPoint = data.searchUrlYt + data.basePath + "/instances/" + instance.id + "/data?dataType=skattemeldingOgNaeringsspesifikasjon"; 117 | var params = { 118 | headers: { 119 | Authorization: 'Bearer ' + id.token, 120 | 'Content-Type': 'text/xml', 121 | 'Content-Disposition': 'attachment; filename=\"skattemelding.xml\"' 122 | }, 123 | tags: { name: 'upload_data' } 124 | }; 125 | return http.post(endPoint, taxXml, params); 126 | } 127 | 128 | export function trigger_callback_and_confirm(data, instance, id) { 129 | var endPoint = data.searchUrlYt + data.basePath + "/instances/" + instance.id + "/process/next" 130 | var params = { 131 | headers: { 132 | Authorization: 'Bearer ' + id.token 133 | }, 134 | tags: { name: 'trigger_callback_and_confirm' } 135 | } 136 | return http.put(endPoint, null, params); 137 | } 138 | 139 | export function get_receipt_id(data, instance, id) { 140 | var endPoint = data.searchUrlYt + data.basePath + "/instances/" + instance.id 141 | return http_get_with_token(endPoint, id.token, "get_receipt_id"); 142 | } 143 | 144 | export function get_receipt(data, instance, id, receipt_id) { 145 | var endPoint = data.searchUrlYt + data.basePath + "/instances/" + instance.id + "/data/" + receipt_id; 146 | return http_get_with_token(endPoint, id.token, "get_receipt"); 147 | } 148 | 149 | export function http_get_with_token(endPoint, token, tag) { 150 | var params = { 151 | headers: { 152 | Authorization: 'Bearer ' + token 153 | }, 154 | tags: { name: tag } 155 | } 156 | return http.get(endPoint, params); 157 | } 158 | 159 | export function handleSummary(data) { 160 | return { 161 | 'stdout': textSummary(data, { indent: ' ', enableColors: true }), 162 | 'stdout.txt': textSummary(data, { indent: ' ', enableColors: true }), 163 | "summary.html": htmlReport(data), 164 | }; 165 | } 166 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Aa][Rr][Mm]/ 27 | [Aa][Rr][Mm]64/ 28 | bld/ 29 | [Bb]in/ 30 | [Oo]bj/ 31 | [Ll]og/ 32 | [Ll]ogs/ 33 | 34 | # Visual Studio 2015/2017 cache/options directory 35 | .vs/ 36 | # Uncomment if you have tasks that create the project's static files in wwwroot 37 | #wwwroot/ 38 | 39 | # Visual Studio 2017 auto generated files 40 | Generated\ Files/ 41 | 42 | # MSTest test Results 43 | [Tt]est[Rr]esult*/ 44 | [Bb]uild[Ll]og.* 45 | 46 | # NUnit 47 | *.VisualState.xml 48 | TestResult.xml 49 | nunit-*.xml 50 | 51 | # Build Results of an ATL Project 52 | [Dd]ebugPS/ 53 | [Rr]eleasePS/ 54 | dlldata.c 55 | 56 | # Benchmark Results 57 | BenchmarkDotNet.Artifacts/ 58 | 59 | # .NET Core 60 | project.lock.json 61 | project.fragment.lock.json 62 | artifacts/ 63 | 64 | # StyleCop 65 | StyleCopReport.xml 66 | 67 | # Files built by Visual Studio 68 | *_i.c 69 | *_p.c 70 | *_h.h 71 | *.ilk 72 | *.meta 73 | *.obj 74 | *.iobj 75 | *.pch 76 | *.pdb 77 | *.ipdb 78 | *.pgc 79 | *.pgd 80 | *.rsp 81 | *.sbr 82 | *.tlb 83 | *.tli 84 | *.tlh 85 | *.tmp 86 | *.tmp_proj 87 | *_wpftmp.csproj 88 | *.log 89 | *.vspscc 90 | *.vssscc 91 | .builds 92 | *.pidb 93 | *.svclog 94 | *.scc 95 | 96 | # Chutzpah Test files 97 | _Chutzpah* 98 | 99 | # Visual C++ cache files 100 | ipch/ 101 | *.aps 102 | *.ncb 103 | *.opendb 104 | *.opensdf 105 | *.sdf 106 | *.cachefile 107 | *.VC.db 108 | *.VC.VC.opendb 109 | 110 | # Visual Studio profiler 111 | *.psess 112 | *.vsp 113 | *.vspx 114 | *.sap 115 | 116 | # Visual Studio Trace Files 117 | *.e2e 118 | 119 | # TFS 2012 Local Workspace 120 | $tf/ 121 | 122 | # Guidance Automation Toolkit 123 | *.gpState 124 | 125 | # ReSharper is a .NET coding add-in 126 | _ReSharper*/ 127 | *.[Rr]e[Ss]harper 128 | *.DotSettings.user 129 | 130 | # TeamCity is a build add-in 131 | _TeamCity* 132 | 133 | # DotCover is a Code Coverage Tool 134 | *.dotCover 135 | 136 | # AxoCover is a Code Coverage Tool 137 | .axoCover/* 138 | !.axoCover/settings.json 139 | 140 | # Visual Studio code coverage results 141 | *.coverage 142 | *.coveragexml 143 | 144 | # NCrunch 145 | _NCrunch_* 146 | .*crunch*.local.xml 147 | nCrunchTemp_* 148 | 149 | # MightyMoose 150 | *.mm.* 151 | AutoTest.Net/ 152 | 153 | # Web workbench (sass) 154 | .sass-cache/ 155 | 156 | # Installshield output folder 157 | [Ee]xpress/ 158 | 159 | # DocProject is a documentation generator add-in 160 | DocProject/buildhelp/ 161 | DocProject/Help/*.HxT 162 | DocProject/Help/*.HxC 163 | DocProject/Help/*.hhc 164 | DocProject/Help/*.hhk 165 | DocProject/Help/*.hhp 166 | DocProject/Help/Html2 167 | DocProject/Help/html 168 | 169 | # Click-Once directory 170 | publish/ 171 | 172 | # Publish Web Output 173 | *.[Pp]ublish.xml 174 | *.azurePubxml 175 | # Note: Comment the next line if you want to checkin your web deploy settings, 176 | # but database connection strings (with potential passwords) will be unencrypted 177 | *.pubxml 178 | *.publishproj 179 | 180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 181 | # checkin your Azure Web App publish settings, but sensitive information contained 182 | # in these scripts will be unencrypted 183 | PublishScripts/ 184 | 185 | # NuGet Packages 186 | *.nupkg 187 | # NuGet Symbol Packages 188 | *.snupkg 189 | # The packages folder can be ignored because of Package Restore 190 | **/[Pp]ackages/* 191 | # except build/, which is used as an MSBuild target. 192 | !**/[Pp]ackages/build/ 193 | # Uncomment if necessary however generally it will be regenerated when needed 194 | #!**/[Pp]ackages/repositories.config 195 | # NuGet v3's project.json files produces more ignorable files 196 | *.nuget.props 197 | *.nuget.targets 198 | 199 | # Microsoft Azure Build Output 200 | csx/ 201 | *.build.csdef 202 | 203 | # Microsoft Azure Emulator 204 | ecf/ 205 | rcf/ 206 | 207 | # Windows Store app package directories and files 208 | AppPackages/ 209 | BundleArtifacts/ 210 | Package.StoreAssociation.xml 211 | _pkginfo.txt 212 | *.appx 213 | *.appxbundle 214 | *.appxupload 215 | 216 | # Visual Studio cache files 217 | # files ending in .cache can be ignored 218 | *.[Cc]ache 219 | # but keep track of directories ending in .cache 220 | !?*.[Cc]ache/ 221 | 222 | # Others 223 | ClientBin/ 224 | ~$* 225 | *~ 226 | *.dbmdl 227 | *.dbproj.schemaview 228 | *.jfm 229 | *.pfx 230 | *.publishsettings 231 | orleans.codegen.cs 232 | 233 | # Including strong name files can present a security risk 234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 235 | #*.snk 236 | 237 | # Since there are multiple workflows, uncomment next line to ignore bower_components 238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 239 | #bower_components/ 240 | 241 | # RIA/Silverlight projects 242 | Generated_Code/ 243 | 244 | # Backup & report files from converting an old project file 245 | # to a newer Visual Studio version. Backup files are not needed, 246 | # because we have git ;-) 247 | _UpgradeReport_Files/ 248 | Backup*/ 249 | UpgradeLog*.XML 250 | UpgradeLog*.htm 251 | ServiceFabricBackup/ 252 | *.rptproj.bak 253 | 254 | # SQL Server files 255 | *.mdf 256 | *.ldf 257 | *.ndf 258 | 259 | # Business Intelligence projects 260 | *.rdl.data 261 | *.bim.layout 262 | *.bim_*.settings 263 | *.rptproj.rsuser 264 | *- [Bb]ackup.rdl 265 | *- [Bb]ackup ([0-9]).rdl 266 | *- [Bb]ackup ([0-9][0-9]).rdl 267 | 268 | # Microsoft Fakes 269 | FakesAssemblies/ 270 | 271 | # GhostDoc plugin setting file 272 | *.GhostDoc.xml 273 | 274 | # Node.js Tools for Visual Studio 275 | .ntvs_analysis.dat 276 | node_modules/ 277 | 278 | # Visual Studio 6 build log 279 | *.plg 280 | 281 | # Visual Studio 6 workspace options file 282 | *.opt 283 | 284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 285 | *.vbw 286 | 287 | # Visual Studio LightSwitch build output 288 | **/*.HTMLClient/GeneratedArtifacts 289 | **/*.DesktopClient/GeneratedArtifacts 290 | **/*.DesktopClient/ModelManifest.xml 291 | **/*.Server/GeneratedArtifacts 292 | **/*.Server/ModelManifest.xml 293 | _Pvt_Extensions 294 | 295 | # Paket dependency manager 296 | .paket/paket.exe 297 | paket-files/ 298 | 299 | # FAKE - F# Make 300 | .fake/ 301 | 302 | # CodeRush personal settings 303 | .cr/personal 304 | 305 | # Python Tools for Visual Studio (PTVS) 306 | __pycache__/ 307 | *.pyc 308 | 309 | # Cake - Uncomment if you are using it 310 | # tools/** 311 | # !tools/packages.config 312 | 313 | # Tabs Studio 314 | *.tss 315 | 316 | # Telerik's JustMock configuration file 317 | *.jmconfig 318 | 319 | # BizTalk build output 320 | *.btp.cs 321 | *.btm.cs 322 | *.odx.cs 323 | *.xsd.cs 324 | 325 | # OpenCover UI analysis results 326 | OpenCover/ 327 | 328 | # Azure Stream Analytics local run output 329 | ASALocalRun/ 330 | 331 | # MSBuild Binary and Structured Log 332 | *.binlog 333 | 334 | # NVidia Nsight GPU debugger configuration file 335 | *.nvuser 336 | 337 | # MFractors (Xamarin productivity tool) working folder 338 | .mfractor/ 339 | 340 | # Local History for Visual Studio 341 | .localhistory/ 342 | 343 | # BeatPulse healthcheck temp database 344 | healthchecksdb 345 | 346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 347 | MigrationBackup/ 348 | 349 | # Ionide (cross platform F# VS Code tools) working folder 350 | .ionide/ 351 | 352 | # .secrets 353 | .secrets 354 | 355 | # files with tokens 356 | **/*tokens*.csv -------------------------------------------------------------------------------- /performance-tests/tax-report/src/tax.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | skattemeldingUpersonlig 7 | utf-8 8 | PHNrYXR0ZW1lbGRpbmcgeG1sbnM9InVybjpubzpza2F0dGVldGF0ZW46ZmFzdHNldHRpbmc6Zm9ybXVlaW5udGVrdDpza2F0dGVtZWxkaW5nOnVwZXJzb25saWdlOmVrc3Rlcm46djEiPgogICAgPHBhcnRzbnVtbWVyPntwYXJ0c251bW1lcn08L3BhcnRzbnVtbWVyPgogICAgPGlubnRla3RzYWFyPjIwMjE8L2lubnRla3RzYWFyPgogICAgPGlubnRla3RPZ1VuZGVyc2t1ZGQ+CiAgICAgICAgPGlubnRla3Q+CiAgICAgICAgICAgIDxuYWVyaW5nc2lubnRla3Q+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD44MDk1NjI8L2JlbG9lcFNvbUhlbHRhbGw+CiAgICAgICAgICAgIDwvbmFlcmluZ3Npbm50ZWt0PgogICAgICAgIDwvaW5udGVrdD4KICAgICAgICA8aWQ+MTwvaWQ+CiAgICAgICAgPHNhbWxldElubnRla3Q+CiAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD44MDk1NjI8L2JlbG9lcFNvbUhlbHRhbGw+CiAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgIDwvc2FtbGV0SW5udGVrdD4KICAgIDwvaW5udGVrdE9nVW5kZXJza3VkZD4KCiAgICA8c3Blc2lmaWthc2pvbkF2Rm9yaG9sZFJlbGV2YW50ZUZvckJlc2thdG5pbmc+CiAgICAgICAgPGFrc2plSUFrc2pvbmFlcnJlZ2lzdGVyZXQ+CiAgICAgICAgICAgIDxpZD4xPC9pZD4KICAgICAgICAgICAgPHNlbHNrYXBldHNOYXZuPgogICAgICAgICAgICAgICAgPG9yZ2FuaXNhc2pvbnNuYXZuPklUIEEvUzwvb3JnYW5pc2Fzam9uc25hdm4+CiAgICAgICAgICAgIDwvc2Vsc2thcGV0c05hdm4+CiAgICAgICAgICAgIDxzZWxza2FwZXRzT3JnYW5pc2Fzam9uc251bW1lcj4KICAgICAgICAgICAgICAgIDxvcmdhbmlzYXNqb25zbnVtbWVyPjk5OTk5OTk5OTwvb3JnYW5pc2Fzam9uc251bW1lcj4KICAgICAgICAgICAgPC9zZWxza2FwZXRzT3JnYW5pc2Fzam9uc251bW1lcj4KICAgICAgICAgICAgPGVyT21mYXR0ZXRBdkZyaXRha3NtZXRvZGVuPgogICAgICAgICAgICAgICAgPGJvb2xzaz5mYWxzZTwvYm9vbHNrPgogICAgICAgICAgICA8L2VyT21mYXR0ZXRBdkZyaXRha3NtZXRvZGVuPgogICAgICAgICAgICA8YWtzamVrbGFzc2U+CiAgICAgICAgICAgICAgICA8dGVrc3Q+b3JkaW5hZXI8L3Rla3N0PgogICAgICAgICAgICA8L2Frc2pla2xhc3NlPgogICAgICAgICAgICA8dXRieXR0ZT4KICAgICAgICAgICAgICAgIDxiZWxvZXBTb21IZWx0YWxsPjUwMDA8L2JlbG9lcFNvbUhlbHRhbGw+CiAgICAgICAgICAgIDwvdXRieXR0ZT4KICAgICAgICAgICAgPGdldmluc3RWZWRSZWFsaXNhc2pvbkF2QWtzamU+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD4xMDAwMDwvYmVsb2VwU29tSGVsdGFsbD4KICAgICAgICAgICAgPC9nZXZpbnN0VmVkUmVhbGlzYXNqb25BdkFrc2plPgogICAgICAgIDwvYWtzamVJQWtzam9uYWVycmVnaXN0ZXJldD4KICAgICAgICA8b2JsaWdhc2pvbk9nU2VydGlmaWthdD4KICAgICAgICAgICAgPGlkPjE8L2lkPgogICAgICAgICAgICA8cmVudGVwYXBpcmV0c05hdm4+CiAgICAgICAgICAgICAgICA8bmF2bj5PYmxpZ2Fzam9uZXI8L25hdm4+CiAgICAgICAgICAgIDwvcmVudGVwYXBpcmV0c05hdm4+CiAgICAgICAgICAgIDxrb250b2ZvZXJlcnNOYXZuPgogICAgICAgICAgICAgICAgPG9yZ2FuaXNhc2pvbnNuYXZuPlJvc2EgUm9zZXI8L29yZ2FuaXNhc2pvbnNuYXZuPgogICAgICAgICAgICA8L2tvbnRvZm9lcmVyc05hdm4+CiAgICAgICAgICAgIDxrb250b251bW1lcj4KICAgICAgICAgICAgICAgIDx0ZWtzdD4xMjM0NTY3ODkwMDwvdGVrc3Q+CiAgICAgICAgICAgIDwva29udG9udW1tZXI+CiAgICAgICAgICAgIDxmaW5hbnNwcm9kdWt0aWRlbnRpZmlrYXRvcj4KICAgICAgICAgICAgICAgIDx0ZWtzdD4xPC90ZWtzdD4KICAgICAgICAgICAgPC9maW5hbnNwcm9kdWt0aWRlbnRpZmlrYXRvcj4KICAgICAgICAgICAgPGZpbmFuc3Byb2R1a3RpZGVudGlmaWthdG9ydHlwZT4KICAgICAgICAgICAgICAgIDx0ZWtzdD5vYmxpZ2Fzam9uZXI8L3Rla3N0PgogICAgICAgICAgICA8L2ZpbmFuc3Byb2R1a3RpZGVudGlmaWthdG9ydHlwZT4KICAgICAgICAgICAgPGxhbmRrb2RlPgogICAgICAgICAgICAgICAgPGxhbmRrb2RlPlVBPC9sYW5ka29kZT4KICAgICAgICAgICAgPC9sYW5ka29kZT4KICAgICAgICAgICAgPGFudGFsbE9ibGlnYXNqb25PZ1NlcnRpZmlrYXQ+CiAgICAgICAgICAgICAgICA8YW50YWxsPjEwMDwvYW50YWxsPgogICAgICAgICAgICA8L2FudGFsbE9ibGlnYXNqb25PZ1NlcnRpZmlrYXQ+CiAgICAgICAgICAgIDxyZW50ZWlubnRla3RBdk9ibGlnYXNqb25PZ1NlcnRpZmlrYXQ+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD4yMDAwPC9iZWxvZXBTb21IZWx0YWxsPgogICAgICAgICAgICA8L3JlbnRlaW5udGVrdEF2T2JsaWdhc2pvbk9nU2VydGlmaWthdD4KICAgICAgICAgICAgPHRhcFZlZFJlYWxpc2Fzam9uQXZPYmxpZ2Fzam9uT2dTZXJ0aWZpa2F0PgogICAgICAgICAgICAgICAgPGJlbG9lcFNvbUhlbHRhbGw+MTAwMDAwPC9iZWxvZXBTb21IZWx0YWxsPgogICAgICAgICAgICA8L3RhcFZlZFJlYWxpc2Fzam9uQXZPYmxpZ2Fzam9uT2dTZXJ0aWZpa2F0PgogICAgICAgIDwvb2JsaWdhc2pvbk9nU2VydGlmaWthdD4KICAgICAgICA8b2JsaWdhc2pvbk9nU2VydGlmaWthdD4KICAgICAgICAgICAgPGlkPmE8L2lkPgogICAgICAgICAgICA8cmVudGVwYXBpcmV0c05hdm4+CiAgICAgICAgICAgICAgICA8bmF2bj5PYmxpZ2Fzam9uZXI8L25hdm4+CiAgICAgICAgICAgIDwvcmVudGVwYXBpcmV0c05hdm4+CiAgICAgICAgICAgIDxrb250b2ZvZXJlcnNOYXZuPgogICAgICAgICAgICAgICAgPG9yZ2FuaXNhc2pvbnNuYXZuPlJvc2EgUm9zZXI8L29yZ2FuaXNhc2pvbnNuYXZuPgogICAgICAgICAgICA8L2tvbnRvZm9lcmVyc05hdm4+CiAgICAgICAgICAgIDxrb250b251bW1lcj4KICAgICAgICAgICAgICAgIDx0ZWtzdD4xMjM0NTY3ODkwMDwvdGVrc3Q+CiAgICAgICAgICAgIDwva29udG9udW1tZXI+CiAgICAgICAgICAgIDxmaW5hbnNwcm9kdWt0aWRlbnRpZmlrYXRvcj4KICAgICAgICAgICAgICAgIDx0ZWtzdD5hPC90ZWtzdD4KICAgICAgICAgICAgPC9maW5hbnNwcm9kdWt0aWRlbnRpZmlrYXRvcj4KICAgICAgICAgICAgPGZpbmFuc3Byb2R1a3RpZGVudGlmaWthdG9ydHlwZT4KICAgICAgICAgICAgICAgIDx0ZWtzdD5vYmxpZ2Fzam9uZXI8L3Rla3N0PgogICAgICAgICAgICA8L2ZpbmFuc3Byb2R1a3RpZGVudGlmaWthdG9ydHlwZT4KICAgICAgICAgICAgPGxhbmRrb2RlPgogICAgICAgICAgICAgICAgPGxhbmRrb2RlPlVBPC9sYW5ka29kZT4KICAgICAgICAgICAgPC9sYW5ka29kZT4KICAgICAgICAgICAgPGFudGFsbE9ibGlnYXNqb25PZ1NlcnRpZmlrYXQ+CiAgICAgICAgICAgICAgICA8YW50YWxsPjEwMDwvYW50YWxsPgogICAgICAgICAgICA8L2FudGFsbE9ibGlnYXNqb25PZ1NlcnRpZmlrYXQ+CiAgICAgICAgICAgIDxyZW50ZWlubnRla3RBdk9ibGlnYXNqb25PZ1NlcnRpZmlrYXQ+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD4yMDAwPC9iZWxvZXBTb21IZWx0YWxsPgogICAgICAgICAgICA8L3JlbnRlaW5udGVrdEF2T2JsaWdhc2pvbk9nU2VydGlmaWthdD4KICAgICAgICAgICAgPHRhcFZlZFJlYWxpc2Fzam9uQXZPYmxpZ2Fzam9uT2dTZXJ0aWZpa2F0PgogICAgICAgICAgICAgICAgPGJlbG9lcFNvbUhlbHRhbGw+MTAwMDAwPC9iZWxvZXBTb21IZWx0YWxsPgogICAgICAgICAgICA8L3RhcFZlZFJlYWxpc2Fzam9uQXZPYmxpZ2Fzam9uT2dTZXJ0aWZpa2F0PgogICAgICAgIDwvb2JsaWdhc2pvbk9nU2VydGlmaWthdD4KICAgIDwvc3Blc2lmaWthc2pvbkF2Rm9yaG9sZFJlbGV2YW50ZUZvckJlc2thdG5pbmc+CiAgICA8Zm9ybXVlT2dHamVsZD4KICAgICAgICAKICAgICAgICA8Zm9ybXVlc29iamVrdD4KICAgICAgICAgICAgPGlkPjE8L2lkPgogICAgICAgICAgICA8Zm9ybXVlc29iamVrdHR5cGU+CiAgICAgICAgICAgICAgICA8Zm9ybXVlc29iamVrdHR5cGU+Zm9ybXVlc29iamVrdE9tZmF0dGV0QXZWZXJkc2V0dGluZ3NyYWJhdHQ8L2Zvcm11ZXNvYmpla3R0eXBlPgogICAgICAgICAgICA8L2Zvcm11ZXNvYmpla3R0eXBlPgogICAgICAgICAgICA8dmVyZGlGb2VyRXZlbnR1ZWxsVmVyZHNldHRpbmdzcmFiYXR0PgogICAgICAgICAgICAgICAgPGJlbG9lcFNvbUhlbHRhbGw+MTQwMDA8L2JlbG9lcFNvbUhlbHRhbGw+CiAgICAgICAgICAgIDwvdmVyZGlGb2VyRXZlbnR1ZWxsVmVyZHNldHRpbmdzcmFiYXR0PgoKICAgICAgICA8L2Zvcm11ZXNvYmpla3Q+CiAgICAgICAgPGZvcm11ZXNvYmpla3Q+CiAgICAgICAgICAgIDxpZD4yPC9pZD4KICAgICAgICAgICAgPGZvcm11ZXNvYmpla3R0eXBlPgogICAgICAgICAgICAgICAgPGZvcm11ZXNvYmpla3R0eXBlPmZvcm11ZXNvYmpla3RJa2tlT21mYXR0ZXRBdlZlcmRzZXR0aW5nc3JhYmF0dDwvZm9ybXVlc29iamVrdHR5cGU+CiAgICAgICAgICAgIDwvZm9ybXVlc29iamVrdHR5cGU+CiAgICAgICAgICAgIDx2ZXJkaUZvZXJFdmVudHVlbGxWZXJkc2V0dGluZ3NyYWJhdHQ+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD45NzE1MDwvYmVsb2VwU29tSGVsdGFsbD4KICAgICAgICAgICAgPC92ZXJkaUZvZXJFdmVudHVlbGxWZXJkc2V0dGluZ3NyYWJhdHQ+CiAgICAgICAgPC9mb3JtdWVzb2JqZWt0PgogICAgICAgIDxzYW1sZXRWZXJkaUZvZXJFdmVudHVlbGxWZXJkc2V0dGluZ3NyYWJhdHQ+CiAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD4xMTExNTA8L2JlbG9lcFNvbUhlbHRhbGw+CiAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgIDwvc2FtbGV0VmVyZGlGb2VyRXZlbnR1ZWxsVmVyZHNldHRpbmdzcmFiYXR0PgogICAgICAgIDxzYW1sZXRWZXJkaUJha0Frc2plbmVJU2Vsc2thcGV0PgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcFNvbUhlbHRhbGw+MTExMTUwPC9iZWxvZXBTb21IZWx0YWxsPgogICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICA8L3NhbWxldFZlcmRpQmFrQWtzamVuZUlTZWxza2FwZXQ+CgogICAgPC9mb3JtdWVPZ0dqZWxkPgogICAgPG9wcGx5c25pbmdlck9tU2thdHRlc3ViamVrdD4KICAgICAgICA8aWQ+MTwvaWQ+CiAgICAgICAgPGVyQm9lcnNub3RlcnQ+ZmFsc2U8L2VyQm9lcnNub3RlcnQ+CiAgICA8L29wcGx5c25pbmdlck9tU2thdHRlc3ViamVrdD4KPC9za2F0dGVtZWxkaW5nPgo= 9 | 10 | 11 | naeringsspesifikasjon 12 | utf-8 13 | PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KPG5hZXJpbmdzc3Blc2lmaWthc2pvbiB4bWxucz0idXJuOm5vOnNrYXR0ZWV0YXRlbjpmYXN0c2V0dGluZzpmb3JtdWVpbm50ZWt0Om5hZXJpbmdzc3Blc2lmaWthc2pvbjpla3N0ZXJuOnYyIj4KICAgIDxwYXJ0c3JlZmVyYW5zZT57cGFydHNudW1tZXJ9PC9wYXJ0c3JlZmVyYW5zZT4KICAgIDxpbm50ZWt0c2Fhcj4yMDIxPC9pbm50ZWt0c2Fhcj4KICAgIDxyZXN1bHRhdHJlZ25za2FwPgogICAgICAgIDxkcmlmdHNpbm50ZWt0PgogICAgICAgICAgICA8c3VtRHJpZnRzaW5udGVrdD4KICAgICAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4xMDAwMDAwPC9iZWxvZXA+CiAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgPC9zdW1EcmlmdHNpbm50ZWt0PgogICAgICAgICAgICA8c2FsZ3Npbm50ZWt0PgogICAgICAgICAgICAgICAgPGlkPjE8L2lkPgogICAgICAgICAgICAgICAgPGlubnRla3Q+CiAgICAgICAgICAgICAgICAgICAgPGlkPjMwMDA8L2lkPgogICAgICAgICAgICAgICAgICAgIDx0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8cmVzdWx0YXRPZ0JhbGFuc2VyZWduc2thcHN0eXBlPjMwMDA8L3Jlc3VsdGF0T2dCYWxhbnNlcmVnbnNrYXBzdHlwZT4KICAgICAgICAgICAgICAgICAgICA8L3R5cGU+CiAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+MTAwMDAwMDwvYmVsb2VwPgogICAgICAgICAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgICAgIDwvaW5udGVrdD4KICAgICAgICAgICAgPC9zYWxnc2lubnRla3Q+CiAgICAgICAgPC9kcmlmdHNpbm50ZWt0PgogICAgICAgIDxkcmlmdHNrb3N0bmFkPgogICAgICAgICAgICA8c3VtRHJpZnRza29zdG5hZD4KICAgICAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD41MDAwMDwvYmVsb2VwPgogICAgICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgICAgIDwvc3VtRHJpZnRza29zdG5hZD4KICAgICAgICAgICAgPHZhcmVrb3N0bmFkPgogICAgICAgICAgICAgICAgPGlkPjE8L2lkPgogICAgICAgICAgICAgICAgPGtvc3RuYWQ+CiAgICAgICAgICAgICAgICAgICAgPGlkPjQwMDU8L2lkPgogICAgICAgICAgICAgICAgICAgIDx0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8cmVzdWx0YXRPZ0JhbGFuc2VyZWduc2thcHN0eXBlPjQwMDU8L3Jlc3VsdGF0T2dCYWxhbnNlcmVnbnNrYXBzdHlwZT4KICAgICAgICAgICAgICAgICAgICA8L3R5cGU+CiAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+NTAwMDA8L2JlbG9lcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgICAgICAgICA8L2tvc3RuYWQ+CiAgICAgICAgICAgIDwvdmFyZWtvc3RuYWQ+CiAgICAgICAgPC9kcmlmdHNrb3N0bmFkPgogICAgICAgIDxzdW1GaW5hbnNpbm50ZWt0PgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4xOTAwMDwvYmVsb2VwPgogICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICA8L3N1bUZpbmFuc2lubnRla3Q+CiAgICAgICAgPHN1bUZpbmFuc2tvc3RuYWQ+CiAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICA8YmVsb2VwPjIwMDAwMDwvYmVsb2VwPgogICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICA8L3N1bUZpbmFuc2tvc3RuYWQ+CiAgICAgICAgPGFhcnNyZXN1bHRhdD4KICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgIDxiZWxvZXA+NzY5MDAwPC9iZWxvZXA+CiAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgIDwvYWFyc3Jlc3VsdGF0PgogICAgICAgIDxmaW5hbnNpbm50ZWt0PgogICAgICAgICAgICA8aWQ+MTwvaWQ+CiAgICAgICAgICAgIDxpbm50ZWt0PgogICAgICAgICAgICAgICAgPGlkPjgwNzk8L2lkPgogICAgICAgICAgICAgICAgPHR5cGU+CiAgICAgICAgICAgICAgICAgICAgPHJlc3VsdGF0T2dCYWxhbnNlcmVnbnNrYXBzdHlwZT44MDc5PC9yZXN1bHRhdE9nQmFsYW5zZXJlZ25za2Fwc3R5cGU+CiAgICAgICAgICAgICAgICA8L3R5cGU+CiAgICAgICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+MTAwMDA8L2JlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgICAgICA8L2lubnRla3Q+CiAgICAgICAgICAgIDxpbm50ZWt0PgogICAgICAgICAgICAgICAgPGlkPjgwOTA8L2lkPgogICAgICAgICAgICAgICAgPHR5cGU+CiAgICAgICAgICAgICAgICAgICAgPHJlc3VsdGF0T2dCYWxhbnNlcmVnbnNrYXBzdHlwZT44MDkwPC9yZXN1bHRhdE9nQmFsYW5zZXJlZ25za2Fwc3R5cGU+CiAgICAgICAgICAgICAgICA8L3R5cGU+CiAgICAgICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+OTAwMDwvYmVsb2VwPgogICAgICAgICAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgICAgIDwvaW5udGVrdD4KICAgICAgICA8L2ZpbmFuc2lubnRla3Q+CiAgICAgICAgPGZpbmFuc2tvc3RuYWQ+CiAgICAgICAgICAgIDxpZD4xPC9pZD4KICAgICAgICAgICAgPGtvc3RuYWQ+CiAgICAgICAgICAgICAgICA8aWQ+ODE3OTwvaWQ+CiAgICAgICAgICAgICAgICA8dHlwZT4KICAgICAgICAgICAgICAgICAgICA8cmVzdWx0YXRPZ0JhbGFuc2VyZWduc2thcHN0eXBlPjgxNzk8L3Jlc3VsdGF0T2dCYWxhbnNlcmVnbnNrYXBzdHlwZT4KICAgICAgICAgICAgICAgIDwvdHlwZT4KICAgICAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4yMDAwMDA8L2JlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgICAgICA8L2tvc3RuYWQ+CiAgICAgICAgPC9maW5hbnNrb3N0bmFkPgogICAgPC9yZXN1bHRhdHJlZ25za2FwPgogICAgPGJlcmVnbmV0TmFlcmluZ3Npbm50ZWt0PgogICAgICAgIDxmb3JkZWx0QmVyZWduZXROYWVyaW5nc2lubnRla3Q+CiAgICAgICAgICAgIDxpZD4xPC9pZD4KICAgICAgICAgICAgPGtvbW11bmVudW1tZXI+CiAgICAgICAgICAgICAgICA8a29tbXVuZW51bW1lcj4wMzAxPC9rb21tdW5lbnVtbWVyPgogICAgICAgICAgICA8L2tvbW11bmVudW1tZXI+CiAgICAgICAgICAgIDxpZGVudGlmaWthdG9yRm9yRm9yZGVsdEJlcmVnbmV0TmFlcmluZ3Npbm50ZWt0PgogICAgICAgICAgICAgICAgPHRla3N0PjE8L3Rla3N0PgogICAgICAgICAgICA8L2lkZW50aWZpa2F0b3JGb3JGb3JkZWx0QmVyZWduZXROYWVyaW5nc2lubnRla3Q+CiAgICAgICAgICAgIDxmb3JkZWx0U2thdHRlbWVzc2lnUmVzdWx0YXQ+CiAgICAgICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+ODA5NTYyPC9iZWxvZXA+CiAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgPC9mb3JkZWx0U2thdHRlbWVzc2lnUmVzdWx0YXQ+CiAgICAgICAgICAgIDxmb3JkZWx0U2thdHRlbWVzc2lnUmVzdWx0YXRFdHRlcktvcnJla3Nqb24+CiAgICAgICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+ODA5NTYyPC9iZWxvZXA+CiAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgPC9mb3JkZWx0U2thdHRlbWVzc2lnUmVzdWx0YXRFdHRlcktvcnJla3Nqb24+CiAgICAgICAgPC9mb3JkZWx0QmVyZWduZXROYWVyaW5nc2lubnRla3Q+CiAgICAgICAgPHN1bVRpbGxlZ2dJTmFlcmluZ3Npbm50ZWt0PgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD40MDY2MjwvYmVsb2VwPgogICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICA8L3N1bVRpbGxlZ2dJTmFlcmluZ3Npbm50ZWt0PgogICAgICAgIDxzdW1GcmFkcmFnSU5hZXJpbmdzaW5udGVrdD4KICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgIDxiZWxvZXA+MTAwPC9iZWxvZXA+CiAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgIDwvc3VtRnJhZHJhZ0lOYWVyaW5nc2lubnRla3Q+CiAgICAgICAgPHNrYXR0ZW1lc3NpZ1Jlc3VsdGF0PgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD44MDk1NjI8L2JlbG9lcD4KICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgPC9za2F0dGVtZXNzaWdSZXN1bHRhdD4KICAgIDwvYmVyZWduZXROYWVyaW5nc2lubnRla3Q+CiAgICA8Zm9yc2tqZWxsTWVsbG9tUmVnbnNrYXBzbWVzc2lnT2dTa2F0dGVtZXNzaWdWZXJkaT4KICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsPgogICAgICAgICAgICA8aWQ+cmVnbnNrYXBzbWVzc2lnVGFwVmVkUmVhbGlzYXNqb25BdkZpbmFuc2llbGxlSW5zdHJ1bWVudGVyPC9pZD4KICAgICAgICAgICAgPHBlcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICAgICAgPHBlcm1hbmVudEZvcnNramVsbHN0eXBlPnJlZ25za2Fwc21lc3NpZ1RhcFZlZFJlYWxpc2Fzam9uQXZGaW5hbnNpZWxsZUluc3RydW1lbnRlcjwvcGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+CiAgICAgICAgICAgIDwvcGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+CiAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+MTIwMDA8L2JlbG9lcD4KICAgICAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICA8L3Blcm1hbmVudEZvcnNramVsbD4KICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsPgogICAgICAgICAgICA8aWQ+c2thdHRlcGxpa3RpZ0RlbEF2VXRieXR0ZXJPZ1V0ZGVsaW5nZXI8L2lkPgogICAgICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+CiAgICAgICAgICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+c2thdHRlcGxpa3RpZ0RlbEF2VXRieXR0ZXJPZ1V0ZGVsaW5nZXI8L3Blcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICA8L3Blcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8YmVsb2VwPjQwMDA8L2JlbG9lcD4KICAgICAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICA8L3Blcm1hbmVudEZvcnNramVsbD4KICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsPgogICAgICAgICAgICA8aWQ+YW5uZXRJbm50ZWt0c2ZyYWRyYWc8L2lkPgogICAgICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+CiAgICAgICAgICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+YW5uZXRJbm50ZWt0c2ZyYWRyYWc8L3Blcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICA8L3Blcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8YmVsb2VwPjEwMDwvYmVsb2VwPgogICAgICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgICAgICA8YmVza3JpdmVsc2U+CiAgICAgICAgICAgICAgICA8dGVrc3Q+cmVudGVpbm50ZWt0PC90ZWtzdD4KICAgICAgICAgICAgPC9iZXNrcml2ZWxzZT4KICAgICAgICA8L3Blcm1hbmVudEZvcnNramVsbD4KICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsPgogICAgICAgICAgICA8aWQ+cG9zaXRpdlNrYXR0ZWtvc3RuYWQ8L2lkPgogICAgICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+CiAgICAgICAgICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+cG9zaXRpdlNrYXR0ZWtvc3RuYWQ8L3Blcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICA8L3Blcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8YmVsb2VwPjI0NjYyPC9iZWxvZXA+CiAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgPC9wZXJtYW5lbnRGb3Jza2plbGw+CiAgICA8L2ZvcnNramVsbE1lbGxvbVJlZ25za2Fwc21lc3NpZ09nU2thdHRlbWVzc2lnVmVyZGk+CiAgICA8dmlya3NvbWhldD4KICAgICAgICA8cmVnbnNrYXBzcGxpa3RzdHlwZT4KICAgICAgICAgICAgPHJlZ25za2Fwc3BsaWt0c3R5cGU+MjwvcmVnbnNrYXBzcGxpa3RzdHlwZT4KICAgICAgICA8L3JlZ25za2Fwc3BsaWt0c3R5cGU+CiAgICAgICAgPHJlZ25za2Fwc3BlcmlvZGU+CiAgICAgICAgICAgIDxzdGFydD4yMDIxLTAxLTAxVDAwOjAwOjAwLjAwMFo8L3N0YXJ0PgogICAgICAgICAgICA8c2x1dHQ+MjAyMS0xMi0zMVQyMzo1OTo1OS4wMDBaPC9zbHV0dD4KICAgICAgICA8L3JlZ25za2Fwc3BlcmlvZGU+CiAgICAgICAgPHZpcmtzb21oZXRzc3R5cGU+CiAgICAgICAgICAgIDx2aXJrc29taGV0c3R5cGU+YWtzamVzZWxza2FwPC92aXJrc29taGV0c3R5cGU+CiAgICAgICAgPC92aXJrc29taGV0c3N0eXBlPgogICAgICAgIDxyZWdlbHR5cGVGb3JBYXJzcmVnbnNrYXA+CiAgICAgICAgICAgIDxyZWdlbHR5cGVGb3JBYXJzcmVnbnNrYXA+aWZyczwvcmVnZWx0eXBlRm9yQWFyc3JlZ25za2FwPgogICAgICAgIDwvcmVnZWx0eXBlRm9yQWFyc3JlZ25za2FwPgogICAgPC92aXJrc29taGV0PgogICAgPGVnZW5rYXBpdGFsYXZzdGVtbWluZz4KICAgICAgICA8aWQ+SGVpPC9pZD4KICAgICAgICA8aW5uZ2FhZW5kZUVnZW5rYXBpdGFsPgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4xMzI1NjI8L2JlbG9lcD4KICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgPC9pbm5nYWFlbmRlRWdlbmthcGl0YWw+CiAgICAgICAgPHN1bVRpbGxlZ2dJRWdlbmthcGl0YWw+CiAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICA8YmVsb2VwPjg3NDM4PC9iZWxvZXA+CiAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgIDwvc3VtVGlsbGVnZ0lFZ2Vua2FwaXRhbD4KICAgICAgICA8ZWdlbmthcGl0YWxlbmRyaW5nPgogICAgICAgICAgICA8aWQ+MTwvaWQ+CiAgICAgICAgICAgIDxlZ2Vua2FwaXRhbGVuZHJpbmdzdHlwZT4KICAgICAgICAgICAgICAgIDxlZ2Vua2FwaXRhbGVuZHJpbmdzdHlwZT5hYXJldHNPdmVyc2t1ZGQ8L2VnZW5rYXBpdGFsZW5kcmluZ3N0eXBlPgogICAgICAgICAgICA8L2VnZW5rYXBpdGFsZW5kcmluZ3N0eXBlPgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8YmVsb2VwPjg3NDM4PC9iZWxvZXA+CiAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgPC9lZ2Vua2FwaXRhbGVuZHJpbmc+CiAgICAgICAgPHV0Z2FhZW5kZUVnZW5rYXBpdGFsPgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4yMjAwMDA8L2JlbG9lcD4KICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgPC91dGdhYWVuZGVFZ2Vua2FwaXRhbD4KICAgIDwvZWdlbmthcGl0YWxhdnN0ZW1taW5nPgo8L25hZXJpbmdzc3Blc2lmaWthc2pvbj4K 14 | 15 | 16 | 17 | skattemeldingUpersonlig 18 | SKI:755:6196979 19 | 20 | 2021 21 | 22 | komplett 23 | testinnsending 24 | 25 | -------------------------------------------------------------------------------- /performance-tests/generate-tokens/src/data.csv: -------------------------------------------------------------------------------- 1 | partyid,userid,ssn 2 | 61703103,4503893,10865299538 3 | 61703235,4504106,19886497337 4 | 61703525,4504920,29878198024 5 | 61703633,4504322,28826498708 6 | 61703709,4504261,10867196183 7 | 61703727,4506138,08837297959 8 | 61703795,4505970,02818596203 9 | 61703958,4505022,19866498574 10 | 61704185,4504047,26916397126 11 | 61704520,4503944,19815997363 12 | 61704663,4503951,11897397503 13 | 61704749,4504050,27845299582 14 | 61704785,4505520,04825997135 15 | 61704907,4505813,07907197896 16 | 61705242,4503772,28827097898 17 | 61705279,4504511,31905999977 18 | 61705441,4506288,02834699772 19 | 61705776,4506355,07876497993 20 | 61705939,4504380,22929874319 21 | 61706522,4506302,27917298128 22 | 61706583,4506293,01846698058 23 | 61706626,4505962,03866096766 24 | 61706742,4505448,03885996786 25 | 61707060,4504686,25926298626 26 | 61707071,4502099,12826398025 27 | 61707205,4504960,14858095353 28 | 61707504,4504814,24913649709 29 | 61707585,4503724,22852749311 30 | 61707611,4505756,07926198712 31 | 61708113,4506234,03876498730 32 | 61708121,4505966,08856299083 33 | 61708254,4505530,01884099192 34 | 61708365,4502320,18826599975 35 | 61708442,4505280,23894899573 36 | 61708566,4505694,05906599602 37 | 61708617,4505582,02826198799 38 | 61708870,4505468,06906497962 39 | 61709129,4503854,12856395543 40 | 61709245,4505675,06857897119 41 | 61709504,4505853,06876599986 42 | 61709520,4505013,24878297780 43 | 61709801,4504075,14926297903 44 | 61709907,4505004,22909398049 45 | 61710078,4505608,07905398150 46 | 61710480,4505104,11824596141 47 | 61710489,4505686,05887496988 48 | 61710534,4504178,28896796951 49 | 61710730,4503671,19825998147 50 | 61710933,4505474,01917196806 51 | 61711041,4504595,10918397944 52 | 61711283,4506048,03844797469 53 | 61711381,4503823,25862849763 54 | 61711630,4504912,23835399729 55 | 61711678,4505692,09886998144 56 | 61711690,4504780,26897799382 57 | 61711863,4502468,27866897323 58 | 61712123,4504030,11854397992 59 | 61712217,4505597,04848197152 60 | 61712256,4504788,21858699425 61 | 61712442,4505039,13899798567 62 | 61712704,4503717,30905596574 63 | 61712878,4504826,18826698779 64 | 61712942,4503487,07876099769 65 | 61713068,4504255,25887899889 66 | 61713272,4505936,01905999954 67 | 61713640,4504578,24826296980 68 | 61713734,4505503,06886696920 69 | 61713735,4504051,26877199125 70 | 61714005,4505290,15917599510 71 | 61714223,4505052,16896795523 72 | 61714337,4504909,21849198170 73 | 61714663,4506276,06816496525 74 | 61714988,4503713,10914895834 75 | 61715061,4506030,01908299740 76 | 61715113,4504789,10906097945 77 | 61715257,4505350,15926499723 78 | 61715258,4503812,16866195971 79 | 61715453,4506113,03818498747 80 | 61715596,4504992,16815199158 81 | 61715828,4503843,10855799966 82 | 61715854,4504183,22857999650 83 | 61715875,4504056,19846299184 84 | 61715927,4504683,20914897301 85 | 61715983,4506069,09912547792 86 | 61716165,4505195,30875497339 87 | 61716192,4505531,07869699173 88 | 61716553,4504575,14846496336 89 | 61716839,4504744,13849098580 90 | 61716983,4505734,03826498276 91 | 61717081,4504531,27828699984 92 | 61717128,4505276,13895797760 93 | 61717953,4504337,29927395574 94 | 61718251,4502153,16836699150 95 | 61718258,4505202,27915995565 96 | 61718338,4505335,16812549557 97 | 61718749,4505910,07926497124 98 | 61718758,4504911,21904199173 99 | 61718916,4504529,11834598738 100 | 61719157,4505816,02878797402 101 | 61719339,4506016,06855597371 102 | 61719654,4505001,14869997340 103 | 61719889,4505034,17914897556 104 | 61720094,4506251,09836597599 105 | 61720572,4502962,05906297568 106 | 61720594,4504092,10837099310 107 | 61720820,4506071,09837398530 108 | 61721282,4504213,27894297765 109 | 61721303,4505516,08866997331 110 | 61721571,4503373,16897296008 111 | 61721989,4504703,10814997575 112 | 61722114,4505815,03906698357 113 | 61722167,4504821,27844399141 114 | 61722867,4505055,17907897117 115 | 61723085,4506289,05845198324 116 | 61723130,4504791,12928095353 117 | 61723298,4505630,02846397755 118 | 61723441,4506052,07826096319 119 | 61723652,4505605,02846097964 120 | 61723684,4505944,04885899922 121 | 61723824,4506096,02876998796 122 | 61723846,4504198,27885299119 123 | 61724035,4504111,23836298942 124 | 61724141,4504534,10876297383 125 | 61724157,4503753,16836799929 126 | 61724272,4504428,11847499151 127 | 61724343,4505429,06906496230 128 | 61724366,4504126,29812547524 129 | 61724664,4505488,08846299921 130 | 61724722,4504899,14824999946 131 | 61724732,4504376,30855599976 132 | 61724765,4501845,30896597953 133 | 61725098,4505219,27886796175 134 | 61725318,4504708,18866796749 135 | 61725471,4505992,04857997919 136 | 61725615,4505673,03897398647 137 | 61725854,4504692,17847198915 138 | 61725888,4505723,01877498790 139 | 61725895,4503789,10897097511 140 | 61726039,4505499,01815996344 141 | 61726108,4505084,23823247575 142 | 61726246,4504323,24815599396 143 | 61726436,4504505,10926798745 144 | 61726576,4503702,19827199535 145 | 61726632,4504688,24885497485 146 | 61726682,4505458,07907399324 147 | 61726771,4504447,12858197579 148 | 61727234,4502017,04915199904 149 | 61727325,4504287,26827999112 150 | 61727697,4505075,28825398092 151 | 61727721,4506380,08877796796 152 | 61727740,4505363,11867598520 153 | 61727885,4504378,11827299997 154 | 61727980,4505664,02897196746 155 | 61728101,4501833,25823449162 156 | 61728119,4503802,20819399663 157 | 61728292,4502986,08816997543 158 | 61728494,4505670,09866696362 159 | 61728513,4505376,14879499357 160 | 61728787,4505687,08917096768 161 | 61728888,4505629,05846098927 162 | 61729281,4505107,30907499142 163 | 61729367,4505553,04825199360 164 | 61729604,4506258,04825999227 165 | 61729607,4503871,25915196686 166 | 61729793,4506047,07906899390 167 | 61729936,4505650,04818199355 168 | 61729958,4503103,26826399936 169 | 61730091,4505596,03845799155 170 | 61730236,4503993,14916099488 171 | 61730237,4504751,21919098128 172 | 61730514,4505523,04907095938 173 | 61730538,4505359,12907396787 174 | 61731073,4502845,01837299744 175 | 61731080,4503965,19848596712 176 | 61731123,4506110,08917297321 177 | 61731151,4505684,06868298187 178 | 61731251,4504892,22896899167 179 | 61731430,4505635,03906595531 180 | 61731580,4503869,17926996487 181 | 61732042,4506165,01836598551 182 | 61732146,4504840,29905497136 183 | 61732219,4506067,04925996713 184 | 61732992,4504732,18824399553 185 | 61733093,4504384,31858796450 186 | 61733099,4506307,03927299185 187 | 61733134,4506350,01819296592 188 | 61733160,4504508,30906099140 189 | 61733248,4505066,27812549729 190 | 61733399,4504169,19816795772 191 | 61733572,4504052,18877397072 192 | 61733618,4505097,25889498563 193 | 61733621,4506137,07917198327 194 | 61733814,4504672,22886495343 195 | 61733825,4505485,02836499797 196 | 61733965,4504786,10887095944 197 | 61734187,4504455,28908497696 198 | 61734640,4506327,02847096260 199 | 61734742,4503830,23817096786 200 | 61734784,4506282,06927399960 201 | 61734799,4504097,19867397798 202 | 61734886,4504080,28928397302 203 | 61735015,4505035,29817196711 204 | 61735089,4505032,22886595364 205 | 61735111,4505685,05925797180 206 | 61735498,4505372,12906599323 207 | 61735853,4505790,08897497779 208 | 61736042,4503757,22876598926 209 | 61736065,4503950,14877999042 210 | 61736231,4505662,06846297942 211 | 61736254,4505106,20842648972 212 | 61736432,4506029,08928394132 213 | 61736575,4505751,07926699339 214 | 61736786,4505200,24848398434 215 | 61736954,4506181,01856697335 216 | 61737141,4504694,27846497108 217 | 61737874,4505803,04876697322 218 | 61737890,4505057,10886995712 219 | 61737921,4505169,10864997959 220 | 61737966,4503907,29846999505 221 | 61737996,4505760,04831448755 222 | 61738215,4506159,03845997186 223 | 61738281,4505481,03917096944 224 | 61738352,4505902,06905798942 225 | 61738380,4504035,16877799674 226 | 61738607,4504584,23926599909 227 | 61738878,4503848,14836096887 228 | 61739040,4505486,09815499309 229 | 61739096,4506332,02926799102 230 | 61739334,4505029,18844697909 231 | 61739459,4505963,02928498746 232 | 61739536,4504449,16855198162 233 | 61739556,4505577,04886399370 234 | 61739686,4505197,13917199579 235 | 61739844,4505730,06915698164 236 | 61740072,4506005,09907598974 237 | 61740228,4505267,11869799221 238 | 61740556,4505965,09927397371 239 | 61740654,4505176,19926498390 240 | 61749242,4504618,12874697107 241 | 61749290,4504373,18885998581 242 | 61749472,4504923,13908099758 243 | 61749716,4504674,27908899208 244 | 61749813,4505318,10926099340 245 | 61749948,4505714,06827199395 246 | 61750468,4503660,13846296950 247 | 61750876,4505829,05848098711 248 | 61750893,4505240,31857498561 249 | 61750913,4505958,05825498135 250 | 61751025,4505620,03828298029 251 | 61751107,4504925,22865899169 252 | 61751123,4505504,09818699910 253 | 61751297,4506079,08877299172 254 | 61751621,4505216,16838698747 255 | 61751880,4505590,05818798344 256 | 61751939,4506081,04917199537 257 | 61752017,4501688,19817099362 258 | 61752550,4506131,01837998553 259 | 61752632,4505861,06907398259 260 | 61752724,4504766,15908398219 261 | 61752761,4506124,07826998711 262 | 61752977,4504884,13924796957 263 | 61753096,4504485,49887301521 264 | 61753138,4505978,05905097174 265 | 61758622,4504947,17883448901 266 | 61758805,4504910,24913448711 267 | 61758972,4505672,01865598250 268 | 61759171,4505925,05906398968 269 | 61759218,4505546,06906193564 270 | 61759332,4504437,19823148715 271 | 61759442,4504104,10846999936 272 | 61759538,4504457,18899798976 273 | 61760057,4504438,20887899399 274 | 61760077,4506367,06865598155 275 | 61760107,4504651,12925899761 276 | 61760260,4505569,03836695584 277 | 61760294,4506218,06816297115 278 | 61760331,4503303,29875597734 279 | 61760521,4504516,26915299783 280 | 61760791,4504181,26919598955 281 | 61760951,4504389,24824499760 282 | 61760997,4505133,12876398409 283 | 61761003,4504935,21868898310 284 | 61761261,4503804,24814996537 285 | 61761735,4505698,02927997919 286 | 61761764,4506190,01896398136 287 | 61761879,4506347,03827097356 288 | 61762130,4504734,14825896997 289 | 61762252,4503922,19887599559 290 | 61762367,4503444,23868599472 291 | 61762403,4505514,09853449994 292 | 61764236,4505098,17925597511 293 | 61764870,4504512,30914698649 294 | 61765470,4503940,22898597826 295 | 61765643,4506240,08886897562 296 | 61765918,4506328,03835298387 297 | 61765919,4504013,19857096366 298 | 61766066,4504901,10855399569 299 | 61766077,4506334,03907095818 300 | 61766118,4505763,04885799588 301 | 61766144,4504587,30903748709 302 | 61766173,4506036,07867097524 303 | 61766599,4505655,09863249780 304 | 61766798,4506235,03856197319 305 | 61766849,4505396,30927099906 306 | 61767077,4504442,21828699293 307 | 61767258,4505348,23839998953 308 | 61767437,4506205,05817198068 309 | 61767750,4505025,17886798962 310 | 61767783,4504157,26869498431 311 | 61767821,4505399,02898198009 312 | 61767856,4505434,05876096139 313 | 61767992,4505021,23856398358 314 | 61768370,4503968,16846498315 315 | 61769063,4504878,12858097981 316 | 61769255,4505632,02844996163 317 | 61769798,4505898,07898097956 318 | 61769827,4506146,06877898901 319 | 61769887,4506035,02896698470 320 | 61770262,4505640,02837697584 321 | 61770328,4505402,03916495772 322 | 61770381,4505585,03905997164 323 | 61770501,4506284,04867599350 324 | 61770815,4504143,12846899993 325 | 61770884,4506161,01906597736 326 | 61771147,4504147,12825697347 327 | 61771288,4504867,18876398695 328 | 61771445,4505809,02905499141 329 | 61771665,4504518,17835499987 330 | 61771810,4503914,12887499746 331 | 61771811,4504614,10828698732 332 | 61771964,4505417,01836798593 333 | 61771999,4503927,24814999765 334 | 61772286,4505157,19897294942 335 | 61772475,4503875,12919499972 336 | 61772479,4506160,04826898874 337 | 61772534,4506002,02885497546 338 | 61772709,4505185,15829198409 339 | 61772889,4505338,14857199953 340 | 61773112,4504098,19864997719 341 | 61773236,4505860,03905398104 342 | 61773363,4505628,06857796576 343 | 61773863,4503803,28897797935 344 | 61773935,4505744,08816999554 345 | 61774010,4504179,10904497377 346 | 61774051,4504434,25925999175 347 | 61774193,4505512,06927099665 348 | 61774276,4505433,05846295307 349 | 61774312,4506076,09836996930 350 | 61774421,4506252,08926798333 351 | 61774698,4505907,09893449520 352 | 61774712,4502367,05914998583 353 | 61774722,4504635,22846498269 354 | 61774752,4505593,07867297132 355 | 61774764,4505041,28848799086 356 | 61774919,4506175,05888099818 357 | 61775170,4502501,04820196797 358 | 61775525,4505856,03895098719 359 | 61775762,4505393,20826298945 360 | 61775965,4505120,20816298521 361 | 61776111,4505340,20846598120 362 | 61776118,4505571,08838498974 363 | 61776173,4505105,22895798324 364 | 61776243,4505494,03836796984 365 | 61776387,4505401,01885599539 366 | 61776824,4503960,15885898634 367 | 61776960,4505619,05896695926 368 | 61777192,4504487,19898598511 369 | 61777261,4504479,20896999452 370 | 61777371,4504239,24876399322 371 | 61777451,4504533,20907898947 372 | 61777723,4505886,02825997752 373 | 61777916,4506038,03877098280 374 | 61778100,4505688,08906398118 375 | 61778376,4504657,29876999747 376 | 61778476,4505491,02924695970 377 | 61778544,4503730,16877294955 378 | 61778608,4505602,06926598404 379 | 61778677,4505595,06847499832 380 | 61778767,4504116,29918499030 381 | 61778900,4505110,10815197556 382 | 61778901,4504095,17827998397 383 | 61778958,4505696,07876496938 384 | 61779017,4505231,21894499521 385 | 61779288,4504749,14865399252 386 | 61779336,4505938,03816898179 387 | 61779400,4505500,08864599746 388 | 61779750,4505865,02845994504 389 | 61779789,4505869,06856996903 390 | 61779912,4505841,05875398174 391 | 61780256,4505428,07835996772 392 | 61780273,4504251,30904399309 393 | 61780480,4504300,21834299701 394 | 61780525,4504577,15836298516 395 | 61780736,4505818,02837898571 396 | 61780997,4505379,15825596973 397 | 61781242,4503882,23826098759 398 | 61781288,4505823,08837497567 399 | 61781363,4501796,15897398181 400 | 61781523,4504453,23915398146 401 | 61781579,4504797,28893049993 402 | 61781683,4503990,45857601134 403 | 61782023,4503860,10927798188 404 | 61782223,4504671,31887399142 405 | 61782233,4503667,10879799797 406 | 61782383,4505323,24869098732 407 | 61782592,4503890,12909095725 408 | 61782740,4504158,23848596779 409 | 61782907,4506019,09895999323 410 | 61783066,4504422,11847897548 411 | 61783427,4505889,06918796906 412 | 61783470,4505725,07846197103 413 | 61783568,4504308,28814996907 414 | 61783606,4505303,23926797506 415 | 61783629,4504462,24847199349 416 | 61783993,4504184,26866097509 417 | 61784205,4504481,20923849956 418 | 61784301,4505213,13926899729 419 | 61784333,4503906,18848098538 420 | 61784565,4504352,13885998334 421 | 61784623,4504953,31818899710 422 | 61784752,4504631,18917598149 423 | 61784805,4505781,07836497842 424 | 61784824,4504755,15857095607 425 | 61784945,4503928,19835999516 426 | 61785113,4504607,15863849710 427 | 61785196,4505591,07895198514 428 | 61785452,4503776,17846396594 429 | 61785509,4503837,20895794172 430 | 61785534,4506123,07907995903 431 | 61785829,4503975,10817099764 432 | 61785935,4505689,06876599390 433 | 61786078,4505882,02827196382 434 | 61786092,4505964,04926897948 435 | 61786255,4505100,10920299585 436 | 61786258,4504272,17919299673 437 | 61786363,4504390,19876096318 438 | 61786686,4505497,06815999639 439 | 61786705,4505172,13855697941 440 | 61786718,4506176,05847299780 441 | 61786808,4506169,01865597971 442 | 61786896,4506263,06856097143 443 | 61786935,4505633,06917498340 444 | 61786958,4505109,20824997374 445 | 61786981,4506166,03916397681 446 | 61787083,4505840,06905797563 447 | 61787519,4506084,02886599334 448 | 61787562,4505707,01857797546 449 | 61787823,4504942,22848099701 450 | 61787887,4504199,12926299199 451 | 61788475,4504336,15818799028 452 | 61789226,4505890,06885795968 453 | 61789414,4504002,27887299175 454 | 61789522,4504802,23906596377 455 | 61789569,4502037,05906497761 456 | 61789650,4506296,01826597182 457 | 61789679,4505556,05856996389 458 | 61789708,4505210,30878797295 459 | 61789865,4505319,22865598312 460 | 61790127,4504893,18926598534 461 | 61790239,4504278,26899896989 462 | 61790531,4506034,01836496287 463 | 61791267,4505584,06917699338 464 | 61791528,4506321,02818997909 465 | 61791704,4506204,06857995986 466 | 61791861,4505982,05909498106 467 | 61791893,4504109,12887196565 468 | 61792008,4504260,28866696375 469 | 61792042,4505961,05887498999 470 | 61792065,4506189,06867095746 471 | 61792381,4504493,26848297517 472 | 61792477,4504478,17843049923 473 | 61792563,4505851,04856996773 474 | 61792588,4503792,11814998136 475 | 61792841,4504882,28849399979 476 | 61793316,4504713,12868297156 477 | 61793388,4504754,24855397737 478 | 61793621,4503740,15924999338 479 | 61793770,4504632,21856997410 480 | 61794047,4506226,02874899502 481 | 61794307,4503844,12876898746 482 | 61795232,4506249,07865498173 483 | 61795285,4504343,18907898020 484 | 61795413,4504433,22915197705 485 | 61795477,4505834,01907899132 486 | 61795661,4505496,03856399523 487 | 61795721,4504776,30816698819 488 | 61796016,4504647,18917397909 489 | 61796207,4505720,04904997922 490 | 61796248,4505792,04907197455 491 | 61796340,4502049,07916795933 492 | 61796495,4504988,25867198655 493 | 61797320,4504313,26909399474 494 | 61797391,4505674,05875995709 495 | 61797432,4505586,04926997969 496 | 61797438,4504738,18924996974 497 | 61798151,4504309,10904898991 498 | 61798180,4505258,10879697765 499 | 61798659,4503973,18816297598 500 | 61798811,4504354,14814998143 501 | 61799043,4505912,08887597961 502 | 61799057,4505239,26855999993 503 | 61799175,4505139,11887296970 504 | 61799218,4503680,28907974822 505 | 61799244,4501942,30929099539 506 | 61799310,4504759,28888897722 507 | 61799433,4504263,29929297197 508 | 61799453,4504691,12857597352 509 | 61799559,4504369,30866299265 510 | 61799713,4506257,05886097265 511 | 61800127,4504787,11816098981 512 | 61800566,4504494,16929296749 513 | 61800590,4505085,19865698073 514 | 61800818,4504144,12846496791 515 | 61800846,4505442,01857396517 516 | 61800903,4503815,22837799558 517 | 61800967,4505800,08896199022 518 | 61801168,4504317,14889298783 519 | 61801398,4504238,21847399616 520 | 61801866,4504203,18867397910 521 | 61802461,4505769,06826699947 522 | 61802462,4505453,08826897512 523 | 61802484,4505733,02825896190 524 | 61802747,4506111,02817296575 525 | 61802852,4503690,30888595232 526 | 61803257,4505947,01828598518 527 | 61803438,4504908,13906197469 528 | 61803990,4502987,25926397934 529 | 61804145,4506259,08905799704 530 | 61804213,4505990,02827497633 531 | 61804365,4504889,11844398524 532 | 61804376,4504284,12816294779 533 | 61804675,4505507,03897098341 534 | 61804814,4505040,28886594161 535 | 61805038,4505559,01855097725 536 | 61805874,4504326,24825096759 537 | 61806131,4504946,26895096929 538 | 61806332,4506163,06815699929 539 | 61806370,4505487,03918997996 540 | 61806440,4506333,07916197939 541 | 61806633,4505369,19855298948 542 | 61806655,4505740,05874898998 543 | 61806668,4506077,05826799333 544 | 61806753,4504414,14886997931 545 | 61806874,4506097,09847695789 546 | 61807051,4503887,19916198852 547 | 61807172,4506256,08877897177 548 | 61807276,4503656,15853348780 549 | 61807397,4504740,22886899762 550 | 61807492,4504515,14929499183 551 | 61807614,4506107,03826895798 552 | 61807655,4506102,01817998069 553 | 61807952,4505554,06917095572 554 | 61807987,4504186,18906795368 555 | 61808450,4505165,15917299568 556 | 61808621,4504285,18884198778 557 | 61808891,4505568,05837797189 558 | 61808967,4504160,25929298600 559 | 61809073,4505232,29928196192 560 | 61809392,4504368,16866297650 561 | 61809493,4505793,06839999389 562 | 61809807,4505289,29857196005 563 | 61809944,4506095,07815298777 564 | 61809985,4504820,10818398528 565 | 61810138,4504858,18898299151 566 | 61810172,4504235,27829198458 567 | 61810177,4505545,06817397164 568 | 61810202,4503662,26908298127 569 | 61810343,4504940,26843148920 570 | 61810899,4505220,22866096779 571 | 61811080,4504363,14856798551 572 | 61811466,4506376,02875998768 573 | 61811468,4504311,10839199479 574 | 61811913,4504528,23896895931 575 | 61812062,4503737,29895999103 576 | 61812126,4503948,21897898281 577 | 61812177,4505012,14844098155 578 | 61812240,4504748,25894599912 579 | 61812528,4503982,25889298874 580 | 61812588,4505164,23817096948 581 | 61812676,4505768,04818298310 582 | 61813067,4505449,04917496361 583 | 61813089,4506228,01899999505 584 | 61813174,4504212,26920598578 585 | 61813204,4504257,12865599569 586 | 61813290,4501699,05816798126 587 | 61813462,4505000,13817899980 588 | 61813622,4501635,10857996564 589 | 61813725,4505731,07852549585 590 | 61813895,4506021,04886796116 591 | 61814009,4504801,24844498361 592 | 61814243,4506262,08925498786 593 | 61814368,4505846,04908797731 594 | 61814585,4505187,18897599690 595 | 61814746,4505872,02916899729 596 | 61814846,4504729,17876198886 597 | 61814855,4504029,27818899926 598 | 61815035,4505918,08815297750 599 | 61815159,4503943,11876398046 600 | 61815399,4503739,17905697986 601 | 61816997,4505913,05835597786 602 | 61817253,4506116,04859998769 603 | 61817335,4505929,05842549193 604 | 61817343,4502817,08856396542 605 | 61817360,4505419,03856695726 606 | 61817397,4504276,16874898736 607 | 61817430,4504546,16927699803 608 | 61817499,4504215,17927398087 609 | 61817511,4506199,06865799576 610 | 61817586,4504032,26848897956 611 | 61817787,4504555,31928997173 612 | 61817802,4505888,01856997983 613 | 61817805,4506007,06828796605 614 | 61817900,4505648,07886797693 615 | 61817919,4505127,29898174733 616 | 61818081,4503868,20907397220 617 | 61818155,4505093,25923049137 618 | 61818218,4505897,07898899157 619 | 61818264,4506222,06925999758 620 | 61818460,4504782,10886397122 621 | 61818553,4502069,01905698350 622 | 61818594,4503896,19897898627 623 | 61818643,4504873,14877698549 624 | 61819096,4504296,10888699223 625 | 61845139,4505264,24835697386 626 | 61845228,4503697,21914699905 627 | 61845357,4505787,07917499335 628 | 61845646,4505244,11906497524 629 | 61845664,4505972,03876099399 630 | 61845718,4504027,27835998725 631 | 61845766,4505031,17847098147 632 | 61845857,4506369,05864396579 633 | 61846015,4504949,22828598418 634 | 61846103,4506033,03927999969 635 | 61846338,4505308,23865597991 636 | 61846396,4504386,30867795770 637 | 61846503,4505083,19926996374 638 | 61846510,4502139,19926498633 639 | 61846594,4505088,16815996724 640 | 61846680,4504007,19874598529 641 | 61846726,4505562,01877798077 642 | 61846732,4505251,10925899793 643 | 61846799,4505388,29917596571 644 | 61847202,4504250,10927196595 645 | 61847397,4505935,09856797853 646 | 61847836,4505967,04845998928 647 | 61847911,4506305,02887296505 648 | 61847985,4506243,09866297506 649 | 61848175,4505996,09897096940 650 | 61848633,4505837,05867096177 651 | 61848775,4506115,01904998709 652 | 61848995,4506254,05877396381 653 | 61849132,4505544,03846899609 654 | 61849235,4503941,27820098302 655 | 61849969,4504808,15816097549 656 | 61850231,4506017,08867199757 657 | 61850462,4505151,28853049176 658 | 61850645,4506377,03866696690 659 | 61850700,4504460,16818197555 660 | 61850950,4505899,08887798959 661 | 61851377,4504885,22867996412 662 | 61851453,4505835,03905499776 663 | 61851570,4506147,04818698122 664 | 61851617,4505761,07916899704 665 | 61851659,4505383,21892648961 666 | 61852317,4506025,05845795373 667 | 61852370,4505015,10869499744 668 | 61853272,4505037,17914599938 669 | 61853477,4505713,05855495572 670 | 61853524,4502162,08925495981 671 | 61853740,4504521,24819397860 672 | 61853962,4505551,03826097913 673 | 61854332,4503226,02906198919 674 | 61854420,4503885,27857395951 675 | 61854547,4503732,24878898741 676 | 61854650,4504945,10837697587 677 | 61854960,4505634,07895298969 678 | 61855108,4505842,03916297741 679 | 61855547,4504292,25866695140 680 | 61855616,4505550,09885096570 681 | 61855945,4504525,12856298750 682 | 61856100,4505360,22825799692 683 | 61856974,4505180,23874698768 684 | 61857039,4506128,04874597355 685 | 61857362,4506338,06825697150 686 | 61857429,4505748,09905798879 687 | 61857499,4505447,04876197338 688 | 61857713,4506049,02836698501 689 | 61858172,4506060,01864698596 690 | 61858415,4503855,27848298692 691 | 61858434,4504136,12895899168 692 | 61858753,4504488,10887497090 693 | 61858811,4504115,26865994906 694 | 61859359,4505255,11925497314 695 | 61859482,4505166,30895599340 696 | 61859804,4504685,10928698519 697 | 61859885,4504310,12817998664 698 | 61859904,4504705,31855697168 699 | 61860131,4505641,03895697507 700 | 61860230,4504454,10825898528 701 | 61860321,4504461,15845896159 702 | 61861320,4503873,23849299115 703 | 61861459,4503930,12905597718 704 | 61861623,4505069,13856895143 705 | 61861638,4505647,05826397197 706 | 61861690,4503715,30856496593 707 | 61861851,4504245,30908498468 708 | 61862025,4505528,03916396979 709 | 61862278,4505248,25856498770 710 | 61862320,4504081,30855799746 711 | 61862421,4506211,08916399910 712 | 61862767,4506366,02855799378 713 | 61862992,4503864,22833849976 714 | 61863035,4506354,05817999141 715 | 61863387,4504536,26856895989 716 | 61863525,4505956,08835499511 717 | 61863750,4503957,29835999406 718 | 61863892,4504752,14837099952 719 | 61864568,4504365,31859398335 720 | 61864956,4505534,04905396132 721 | 61865009,4504796,18886596959 722 | 61865334,4505502,09897396731 723 | 61865407,4506301,05894899923 724 | 61865416,4504932,27826599230 725 | 61865461,4504345,16836298121 726 | 61865532,4504741,16927097544 727 | 61866069,4506324,01883348733 728 | 61866081,4504712,17876197316 729 | 61866104,4505421,09916399526 730 | 61866257,4505123,20868797577 731 | 61866335,4504224,20827198790 732 | 61866352,4504152,31889099146 733 | 61866382,4504693,19867799500 734 | 61866421,4504681,11865799995 735 | 61866481,4506270,01836499324 736 | 61866537,4505233,18864698782 737 | 61866585,4505163,12895899672 738 | 61867031,4504417,10827198981 739 | 61867076,4506219,07828098629 740 | 61867326,4504138,23837097983 741 | 61867573,4504101,21817395624 742 | 61867806,4505418,01815898172 743 | 61868301,4504393,24817797101 744 | 61868691,4504091,13895198700 745 | 61869048,4504383,17815799364 746 | 61869395,4506206,04826299733 747 | 61869477,4504830,10816098357 748 | 61869817,4503935,30899296687 749 | 61869932,4505518,04927996508 750 | 61870053,4506337,09824696931 751 | 61870567,4506299,09876996739 752 | 61870793,4504396,22847499595 753 | 61870955,4505235,15856798914 754 | 61871230,4505997,03907596787 755 | 61871694,4504426,23925296538 756 | 61871731,4505148,13826896986 757 | 61872221,4505426,04915495945 758 | 61872517,4504266,18846597944 759 | 61872694,4506345,07826597369 760 | 61872784,4504084,13867297590 761 | 61872803,4504444,26926199519 762 | 61873348,4505436,07835998945 763 | 61873713,4504612,28845697584 764 | 61873799,4504495,11865996537 765 | 61874335,4506065,09834599705 766 | 61874380,4502585,04879998072 767 | 61874452,4504758,14815297513 768 | 61874564,4506040,09837797125 769 | 61874775,4504190,12855999461 770 | 61874980,4504175,11818097710 771 | 61875214,4505156,22866398066 772 | 61875346,4505076,26816899345 773 | 61875516,4506149,03877498769 774 | 61875578,4506133,03847699271 775 | 61875711,4504580,31837498239 776 | 61876138,4504360,26925098786 777 | 61876469,4504897,30836998185 778 | 61876483,4505566,01865299334 779 | 61877047,4504105,27918697174 780 | 61877079,4504011,30876699229 781 | 61877089,4505271,30887499558 782 | 61877178,4505380,28824798704 783 | 61877626,4504545,19886499852 784 | 61878136,4506295,08845796336 785 | 61878416,4504527,18845598548 786 | 61878679,4503579,25915798945 787 | 61878961,4505565,01916199763 788 | 61879469,4506101,06898897298 789 | 61879692,4505161,15893449555 790 | 61879694,4504807,28845799182 791 | 61879804,4506356,05815599383 792 | 61880102,4506000,06837998539 793 | 61880138,4506265,01826098577 794 | 61880420,4503290,06897497539 795 | 61880495,4505480,02925299785 796 | 61880730,4504342,16846499370 797 | 61880813,4506306,06859097713 798 | 61880891,4505663,06878699953 799 | 61881031,4505381,19810099375 800 | 61881144,4506130,02916298334 801 | 61881397,4505564,02898999354 802 | 61881546,4502627,11815898577 803 | 61881946,4506311,06817199648 804 | 61882296,4506157,01846499152 805 | 61882312,4505131,24828798932 806 | 61882389,4505391,16909596711 807 | 61882663,4505718,03885399575 808 | 61882715,4505931,03868199376 809 | 61883112,4504936,23925498661 810 | 61883395,4506134,06866597551 811 | 61883919,4504065,23878899091 812 | 61883988,4505214,29916099787 813 | 61883993,4506329,03857599755 814 | 61884211,4505895,03815596772 815 | 61884554,4505423,08835897908 816 | 61884732,4505621,03845298377 817 | 61884741,4506358,09866198389 818 | 61885118,4506275,05836099054 819 | 61885199,4505425,09844999507 820 | 61885217,4506297,02886897548 821 | 61885245,4504640,12923649598 822 | 61885754,4503679,26913749374 823 | 61885906,4503714,18845699190 824 | 61886038,4505511,06915596566 825 | 61886236,4505945,06904998360 826 | 61886383,4505441,01847997083 827 | 61887190,4505330,15884797710 828 | 61887238,4504130,17917396590 829 | 61887347,4504655,29898599548 830 | 61888762,4503747,20865698012 831 | 61888846,4504843,24857098958 832 | 61888873,4504281,25886996139 833 | 61889048,4505145,30848398701 834 | 61889171,4506236,08897196922 835 | 61889190,4505269,16878398835 836 | 61889509,4506365,03834897732 837 | 61889527,4504096,10856995904 838 | 61889638,4505159,10845999150 839 | 61890052,4505440,08876499267 840 | 61890556,4505615,06915997323 841 | 61890636,4504711,23839799977 842 | 61890639,4503681,18849499323 843 | 61890966,4503971,30906698958 844 | 61891390,4505778,03815199927 845 | 61891414,4506247,02840799266 846 | 61891422,4503934,13896898331 847 | 61891426,4505563,01915996716 848 | 61891998,4505191,12915499102 849 | 61892768,4504371,17825298576 850 | 61892798,4505262,14893949187 851 | 61892994,4504233,23886899963 852 | 61893151,4504379,31887897630 853 | 61893384,4504716,24876797123 854 | 61893489,4503981,29848098548 855 | 61893498,4505451,07905698456 856 | 61893701,4506041,03875998969 857 | 61893704,4505312,22815296994 858 | 61893987,4504214,15916896821 859 | 61894787,4504388,29875299369 860 | 61894896,4505042,22855099393 861 | 61894904,4506185,01876197592 862 | 61895041,4506004,03904598541 863 | 61895075,4502060,11895598382 864 | 61895095,4504243,24876297139 865 | 61895266,4506082,03866999952 866 | 61895267,4503779,20907899145 867 | 61895413,4505661,01885699398 868 | 61895659,4503663,30838498813 869 | 61895722,4505552,01916895778 870 | 61895971,4504652,30869398205 871 | 61896545,4505575,01837098161 872 | 61896566,4504192,12856796149 873 | 61896893,4505477,04898597186 874 | 61897038,4502697,04878297577 875 | 61897066,4504025,14846498509 876 | 61897257,4504785,18836895653 877 | 61897300,4504989,13876999913 878 | 61897686,4506378,09846198641 879 | 61898213,4505285,10858495380 880 | 61898248,4506303,09831448730 881 | 61898516,4504077,17816999162 882 | 61898707,4505960,06832548349 883 | 61898780,4503788,13856096585 884 | 61899133,4506174,02856599364 885 | 61899342,4506109,01878196917 886 | 61899782,4505068,19838996887 887 | 61900104,4503794,10900099644 888 | 61900248,4506074,08836097131 889 | 61900525,4504915,14825897004 890 | 61900824,4506068,02895596925 891 | 61901118,4504023,11919798779 892 | 61901373,4505199,22884498191 893 | 61901663,4506193,05876499764 894 | 61902300,4503777,12894998952 895 | 61902498,4506298,02845197523 896 | 61902541,4502980,11824799735 897 | 61902849,4504540,29868499980 898 | 61903248,4504329,28916396572 899 | 61903270,4504660,13816499121 900 | 61903842,4503760,17858998638 901 | 61904067,4504246,20824699322 902 | 61904079,4503805,29908598359 903 | 61904691,4505682,05926196148 904 | 61904694,4506043,09925198177 905 | 61904921,4503795,13876998534 906 | 61905074,4504294,12856598622 907 | 61905163,4505959,04886595390 908 | 61905278,4506271,03817399168 909 | 61905293,4504079,20836396198 910 | 61905592,4505056,15834398157 911 | 61905685,4506037,01876096788 912 | 61905707,4506336,06917198983 913 | 61905794,4504275,10865599329 914 | 61906122,4505795,03907999717 915 | 61906316,4504771,28862848715 916 | 61906581,4505660,05915898167 917 | 61906634,4504469,15912949378 918 | 61907352,4505850,05904598358 919 | 61907770,4504225,27855698590 920 | 61907885,4504777,13825398702 921 | 61908072,4505894,06895798167 922 | 61908110,4504319,16816798802 923 | 61908238,4503087,10928197579 924 | 61908597,4503672,26925697302 925 | 61908618,4504530,12896198961 926 | 61908636,4504297,25896497513 927 | 61909284,4505243,26837396807 928 | 61909445,4504033,11847098394 929 | 61910989,4504038,23907299309 930 | 61911462,4504750,27856097558 931 | 61911591,4503798,21926099946 932 | 61911680,4506162,02827698973 933 | 61911837,4504475,20863949727 934 | 61912192,4505286,16858095917 935 | 61912584,4504625,27919097278 936 | 61912699,4505574,08847199939 937 | 61912876,4504064,14845598763 938 | 61912948,4504931,23818498608 939 | 61913317,4505479,02856598570 940 | 61913418,4505775,05926195788 941 | 61913500,4501836,27816397540 942 | 61914087,4505351,16896999587 943 | 61914111,4504984,19813348333 944 | 61914114,4505324,10887897579 945 | 61914259,4504099,14888298755 946 | 61914723,4502343,18915998166 947 | 61915051,4505406,08907297927 948 | 61915061,4505431,07825596709 949 | 61915251,4505405,07889599647 950 | 61915697,4505260,19916198186 951 | 61916076,4504951,23877498549 952 | 61916131,4505589,02925098364 953 | 61916237,4504609,18925298391 954 | 61916276,4506242,08857498764 955 | 61916810,4506346,04905098352 956 | 61918282,4502601,13929698473 957 | 61918724,4506320,09855998731 958 | 61918760,4505852,03886795989 959 | 61918762,4505313,22847697869 960 | 61918828,4504710,11827898351 961 | 61919546,4504717,28824798119 962 | 61919793,4505377,26856098817 963 | 61919877,4505679,06918399494 964 | 61920238,4506352,07818697427 965 | 61920621,4505877,08927398711 966 | 61920803,4504349,24899495981 967 | 61920942,4506022,03854899138 968 | 61921181,4504824,18927294407 969 | 61921473,4506053,02832949321 970 | 61921497,4504265,23886599153 971 | 61921549,4505329,10905097593 972 | 61921558,4506027,05906597944 973 | 61921718,4505603,06916997866 974 | 61921877,4504520,31857198266 975 | 61922334,4504593,10921749908 976 | 61922366,4505309,19837999300 977 | 61922573,4506230,05917098338 978 | 61922784,4506003,01877899043 979 | 61922827,4505783,07856498373 980 | 61923092,4505353,20847196921 981 | 61923156,4503767,24815096769 982 | 61923228,4505395,20867095773 983 | 61923336,4506253,05926897715 984 | 61923412,4505817,04904698925 985 | 61923433,4504252,22925896938 986 | 61923560,4505121,22867396911 987 | 61924134,4505833,09858299583 988 | 61924553,4505182,19907094343 989 | 61925108,4503689,29836696334 990 | 61925154,4504586,28898696482 991 | 61925480,4506339,07879198385 992 | 61925565,4505268,17876597985 993 | 61925867,4505613,04916998924 994 | 61926055,4505631,09922547944 995 | 61926259,4503879,11897098778 996 | 61926998,4505385,17899798503 997 | 61927273,4505735,02925496750 998 | 61927356,4506078,02814998951 999 | 61927459,4506323,02816496902 1000 | 61927571,4505150,13905196132 1001 | 61927784,4505416,05822849328 1002 | 61927837,4505192,21909497318 1003 | 61927941,4504375,22824397922 1004 | 61928733,4504400,14889699540 1005 | 61928744,4504230,12848598931 1006 | 61929035,4506191,05905099509 1007 | 61929640,4505134,13924797902 1008 | 61930256,4504001,27899398500 1009 | 61930280,4505234,25816599868 1010 | 61930286,4506304,06906097565 1011 | 61930359,4504293,31906696986 1012 | 61930575,4505870,08816599319 1013 | 61930622,4505814,02906099791 1014 | 61930799,4504603,15827498596 1015 | 61930837,4504167,28919298385 1016 | 61931195,4505153,26868599560 1017 | 61931233,4505237,18857199142 1018 | 61931462,4505848,07817399880 1019 | 61931716,4504689,14867499068 1020 | 61931910,4505091,26917198844 1021 | 61932285,4502165,05916396351 1022 | 61932288,4504185,12916899538 1023 | 61932532,4506015,08836097212 1024 | 61932533,4505343,19819598005 1025 | 61932955,4504649,16914298990 1026 | 61933341,4503126,01817897769 1027 | 61933390,4504565,28887296148 1028 | 61933559,4504435,13908398402 1029 | 61933579,4505078,19826299951 1030 | 61934078,4504402,11836499990 1031 | 61934361,4506353,09848297582 1032 | 61934445,4503857,21845498544 1033 | 61934593,4504684,12897496346 1034 | 61934953,4505537,01877998947 1035 | 61935500,4505977,02887797636 1036 | 61935954,4505087,24837797191 1037 | 61936569,4505435,01897399543 1038 | 61936670,4504852,16849996383 1039 | 61936671,4505061,20839599332 1040 | 61936728,4503446,19897294357 1041 | 61937004,4504492,20846698575 1042 | 61937269,4504906,14825998323 1043 | 61937651,4504480,26879499568 1044 | 61937692,4504743,26859699196 1045 | 61937708,4506300,08855896770 1046 | 61938079,4505637,06816694556 1047 | 61938102,4504059,23924898364 1048 | 61938264,4505948,09876398149 1049 | 61938276,4504391,23906899558 1050 | 61938388,4504914,20897499062 1051 | 61938564,4504129,15846296767 1052 | 61938932,4504902,20844398132 1053 | 61940490,4503013,05906198764 1054 | 61940646,4504955,28906297193 1055 | 61940778,4505443,01913249948 1056 | 61941095,4504742,11846895509 1057 | 61941251,4506114,03857299964 1058 | 61941539,4505609,07825696991 1059 | 61941575,4503742,47887800320 1060 | 61941581,4506360,04905898804 1061 | 61941640,4504468,28909499706 1062 | 61941837,4504600,19856897764 1063 | 61941892,4503688,11918998863 1064 | 61941915,4505578,07885197579 1065 | 61942028,4504731,10876496521 1066 | 61942083,4503822,10916999742 1067 | 61942172,4503673,16845498559 1068 | 61942600,4504665,21815698506 1069 | 61942734,4505777,02896599758 1070 | 61942851,4505709,08837094950 1071 | 61942914,4504073,30904796901 1072 | 61943277,4504926,25837499340 1073 | 61943455,4505365,21818394788 1074 | 61943869,4504482,11914699349 1075 | 61943940,4504445,26867196179 1076 | 61944954,4504538,29846698173 1077 | 61945279,4506064,05867399277 1078 | 61945349,4504501,19897698261 1079 | 61945960,4505697,02857997517 1080 | 61946043,4504316,29908797254 1081 | 61946175,4503961,13876497160 1082 | 61946203,4504133,15826396102 1083 | 61946206,4505974,05835999337 1084 | 61946282,4503994,27912949740 1085 | 61946532,4506010,04865098354 1086 | 61946700,4504697,15877698901 1087 | 61946933,4503691,27816899112 1088 | 61947318,4505444,01902949360 1089 | 61947527,4503787,10902648556 1090 | 61948882,4504219,30874996935 1091 | 61949171,4505867,03866797152 1092 | 61949190,4504832,20872548174 1093 | 61949798,4504000,28825897374 1094 | 61950151,4503905,14926898702 1095 | 61950265,4505773,07846596989 1096 | 61950282,4504083,30815098109 1097 | 61950425,4504361,30834399179 1098 | 61950634,4504423,26810149093 1099 | 61950925,4504127,11857398337 1100 | 61950933,4505045,15865898069 1101 | 61951169,4505492,09894397974 1102 | 61951833,4503995,10857198951 1103 | 61951990,4504876,25849499044 1104 | 61952199,4504497,17837595770 1105 | 61952469,4503718,29887998033 1106 | 61952605,4504088,17857197445 1107 | 61952732,4505657,07828398096 1108 | 61952739,4504733,11878098988 1109 | 61952798,4505341,18846498555 1110 | 61952960,4504964,21916299564 1111 | 61953072,4505158,25819096549 1112 | 61953322,4505806,01927099256 1113 | 61954178,4506152,09817399344 1114 | 61954727,4505307,19906297747 1115 | 61955295,4506308,09916899863 1116 | 61955420,4504838,13856297572 1117 | 61955608,4505010,25885597788 1118 | 61955735,4503821,30859398568 1119 | 61956131,4506277,09825399701 1120 | 61956678,4506363,04887997131 1121 | 61957101,4504950,24876398539 1122 | 61957160,4503791,26854799923 1123 | 61957715,4504057,13894199142 1124 | 61957741,4504415,12870099957 1125 | 61957914,4505991,05866097528 1126 | 61958688,4506314,05907099212 1127 | 61959129,4504831,10895599560 1128 | 61959202,4504853,19926798505 1129 | 61959225,4505036,15912849942 1130 | 61959473,4505789,04856398507 1131 | 61959598,4504658,24897395904 1132 | 61959956,4505680,06892549778 1133 | 61960102,4505905,09887997389 1134 | 61960205,4505896,03898199346 1135 | 61960278,4504913,29925497701 1136 | 61960283,4504100,24877097710 1137 | 61960816,4504773,19924698961 1138 | 61961091,4504410,25834599972 1139 | 61961162,4504404,29856899231 1140 | 61961430,4505130,26826295731 1141 | 61961826,4506086,02817499492 1142 | 61961871,4503771,21889698710 1143 | 61962345,4503894,10869696396 1144 | 61962421,4506009,06856098360 1145 | 61962634,4505008,13856397917 1146 | 61962725,4504982,23815998960 1147 | 61963189,4504067,25895598057 1148 | 61964055,4505555,05846495934 1149 | 61964095,4504795,25826096120 1150 | 61964229,4506371,01817297834 1151 | 61964462,4504229,21926599183 1152 | 61964583,4505658,03909998637 1153 | 61964609,4505265,15875797082 1154 | 61964919,4505743,04827296533 1155 | 61965152,4505884,07895598326 1156 | 61965417,4506319,01894499903 1157 | 61965650,4504161,13876395724 1158 | 61965695,4505201,26918096336 1159 | 61965786,4505957,09845099739 1160 | 61966286,4504662,20887096970 1161 | 61966526,4504725,27926795975 1162 | 61966583,4504888,10817599910 1163 | 61966649,4505215,17909299926 1164 | 61967003,4504726,12856399131 1165 | 61967248,4503964,12897598963 1166 | 61967264,4505439,08895798992 1167 | 61967626,4504320,25897399450 1168 | 61967726,4506373,06865798359 1169 | 61967892,4501850,26897097930 1170 | 61967901,4505522,01846095752 1171 | 61968199,4505669,09885998892 1172 | 61968557,4504772,21916197109 1173 | 61968683,4505508,08815896549 1174 | 61968975,4504680,29898598916 1175 | 61969095,4505821,02895299939 1176 | 61969870,4506357,08837098115 1177 | 61970582,4505432,07837499024 1178 | 61971027,4506340,07827398149 1179 | 61971056,4505750,03829199172 1180 | 61971504,4505830,03906698942 1181 | 61971814,4505047,13846796279 1182 | 61972318,4504334,20876497981 1183 | 61972359,4504506,31907496972 1184 | 61972487,4505805,06864996947 1185 | 61972553,4504053,10905698120 1186 | 61972897,4505914,02906899739 1187 | 61973737,4504087,13866399160 1188 | 61973766,4504305,10877399848 1189 | 61973769,4504668,20876595991 1190 | 61974385,4505729,07866197940 1191 | 61974736,4503706,16829497607 1192 | 61974978,4505009,13895397959 1193 | 61975634,4504987,30884597583 1194 | 61975647,4504061,20888498207 1195 | 61976235,4505924,03896397310 1196 | 61976529,4505450,09867397717 1197 | 61976622,4504582,10857699659 1198 | 61977005,4505825,03867099408 1199 | 61977157,4504675,20885499520 1200 | 61977189,4504040,10909798235 1201 | 61977270,4504351,18897198319 1202 | 61977548,4504237,12835997713 1203 | 61977651,4506062,01886198376 1204 | 61978109,4504941,21909297033 1205 | 61978416,4506088,07907399081 1206 | 61978463,4504477,31929298635 1207 | 61978481,4505919,04926499551 1208 | 61978698,4504979,10816097644 1209 | 61978851,4503945,11859998137 1210 | 61978919,4505489,01866597738 1211 | 61979519,4504927,30915498988 1212 | 61979579,4506167,04835598379 1213 | 61979782,4506237,02855199958 1214 | 61979972,4504189,19869596569 1215 | 61980139,4504833,24902748837 1216 | 61980338,4505295,29834898320 1217 | 61980479,4506104,02875898585 1218 | 61980856,4506374,05877798870 1219 | 61980890,4506012,01817898552 1220 | 61981154,4504163,23887498377 1221 | 61982021,4506106,09916699821 1222 | 61982163,4505204,12846799549 1223 | 61982271,4505941,02816997790 1224 | 61982359,4503750,27907498250 1225 | 61982466,4505137,25908398109 1226 | 61982553,4505315,18826898115 1227 | 61982580,4506274,04827497520 1228 | 61983155,4505780,06887298562 1229 | 61983245,4504585,24855499920 1230 | 61983582,4505690,01833548391 1231 | 61983631,4505652,04866697170 1232 | 61983689,4504018,12916496336 1233 | 61984166,4503903,13833748534 1234 | 61984428,4504491,45916401152 1235 | 61984734,4505063,21827099330 1236 | 61984983,4505557,01905898201 1237 | 61985309,4505278,21844796991 1238 | 61986047,4506031,06885698318 1239 | 61986151,4504086,20924498545 1240 | 61986254,4504149,23859697844 1241 | 61987025,4505711,08817297545 1242 | 61987201,4504842,20826799138 1243 | 61987239,4504883,25925297138 1244 | 61987290,4504429,15866398345 1245 | 61987501,4505600,08905297385 1246 | 61987503,4504978,12886799770 1247 | 61987706,4503769,22856099745 1248 | 61988580,4503768,23906498952 1249 | 61988880,4506192,01845799691 1250 | 61989302,4505024,27875297541 1251 | 61989421,4501940,11818098504 1252 | 61989847,4506063,03826199783 1253 | 61989928,4505171,23924099534 1254 | 61990045,4505245,10904598424 1255 | 61990940,4505490,06876699735 1256 | 61991206,4504458,11917099822 1257 | 61991284,4505667,08916997915 1258 | 61991860,4505892,02866499767 1259 | 61991970,4504209,27849099472 1260 | 61991996,4506341,02816199592 1261 | 61992036,4504856,11909198773 1262 | 61992135,4503780,10874697562 1263 | 61992443,4506223,06905399924 1264 | 61992449,4505186,31929899515 1265 | 61992451,4505273,11928897534 1266 | 61992557,4503731,16823148708 1267 | 61992951,4505847,06814399514 1268 | 61993281,4506287,09857696996 1269 | 61993487,4504763,25929898969 1270 | 61993753,4505274,31906097764 1271 | 61993905,4504847,10894699715 1272 | 61995065,4504331,12860199716 1273 | 61995456,4504370,20817998586 1274 | 61995649,4503829,13906499937 1275 | 61995664,4504262,21878699405 1276 | 61995812,4505224,14824898384 1277 | 61996256,4505745,06926098339 1278 | 61996643,4505475,08816499136 1279 | 61996954,4506326,02875699760 1280 | 61997026,4505671,06906199759 1281 | 61997064,4504613,21886398198 1282 | 61997237,4504367,21865497064 1283 | 61997766,4504121,30906498320 1284 | 61997960,4504627,16887499520 1285 | 61998159,4504654,22897496589 1286 | 61998755,4504125,12832849977 1287 | 61998869,4505736,03885998959 1288 | 61999251,4505746,04867396948 1289 | 61999456,4506187,09919898892 1290 | 62000186,4506172,01839997716 1291 | 62000813,4504806,24846599122 1292 | 62001221,4503764,14847798913 1293 | 62001366,4505424,03870199936 1294 | 62001614,4503827,11898996591 1295 | 62001678,4505606,02817296737 1296 | 62001873,4504701,25897396060 1297 | 62002800,4504813,13835699891 1298 | 62002847,4504377,15824499567 1299 | 62002966,4505160,22929698081 1300 | 62003087,4505893,03826395965 1301 | 62003396,4506267,07855397107 1302 | 62003594,4503949,16866698337 1303 | 62004075,4503687,12847296354 1304 | 62004473,4505456,05824695778 1305 | 62004556,4506083,04928596724 1306 | 62004568,4506351,07909097740 1307 | 62004842,4505724,03927097132 1308 | 62005201,4505758,04839399990 1309 | 62005416,4505462,07886496766 1310 | 62005528,4504031,12867696308 1311 | 62005650,4504730,25818999111 1312 | 62005887,4503835,22845398139 1313 | 62006144,4505643,02815499355 1314 | 62006487,4505283,15824399384 1315 | 62006532,4505701,08854497139 1316 | 62006875,4505046,11896399596 1317 | 62007110,4504549,22815696968 1318 | 62007152,4505855,03896696903 1319 | 62007158,4505598,09816295111 1320 | 62007625,4504134,10868197329 1321 | 62007712,4505976,09856499569 1322 | 62007870,4504624,30917999046 1323 | 62008004,4505089,25845595979 1324 | 62008279,4503853,15923149349 1325 | 62008817,4504844,10865395537 1326 | 62009334,4504418,11847796571 1327 | 62009733,4503933,17835898490 1328 | 62009794,4505693,03878674943 1329 | 62009939,4506158,03866199905 1330 | 62010097,4505676,06825797848 1331 | 62010885,4505934,05836096330 1332 | 62010894,4504836,26887798922 1333 | 62011469,4504626,16916696748 1334 | 62011877,4504117,16836797675 1335 | 62011988,4503152,09858996977 1336 | 62012297,4503898,19875799544 1337 | 62012352,4506136,03826398921 1338 | 62013010,4504335,26889199252 1339 | 62013671,4505749,02826899347 1340 | 62013783,4505305,13897797717 1341 | 62013928,4505802,04867499097 1342 | 62014178,4503664,27833147752 1343 | 62014344,4504645,18865699332 1344 | 62014424,4505782,08874899527 1345 | 62014795,4505513,04810096786 1346 | 62015420,4504078,13815896534 1347 | 62015636,4505111,29865098977 1348 | 62015910,4504848,17847499761 1349 | 62016151,4504975,13876798411 1350 | 62016197,4504698,23907797554 1351 | 62016549,4505710,08846596594 1352 | 62016997,4504542,20846696645 1353 | 62017085,4506207,03824796776 1354 | 62017171,4505989,01826999590 1355 | 62017474,4503720,11815198974 1356 | 62018180,4505325,10847498914 1357 | 62018232,4504440,16844899983 1358 | 62018281,4504541,25862948729 1359 | 62018905,4504232,26858799855 1360 | 62019385,4503683,31858796299 1361 | 62019554,4503959,29896898750 1362 | 62020057,4505954,07874898966 1363 | 62020395,4504124,29816997524 1364 | 62020408,4505345,22917396667 1365 | 62020640,4502183,13836796521 1366 | 62020713,4504721,18883649938 1367 | 62020756,4504382,10918398142 1368 | 62020877,4505427,01878399753 1369 | 62020934,4504017,11865796929 1370 | 62021003,4504881,20866399981 1371 | 62021196,4503872,15857097103 1372 | 62021858,4504173,11817398105 1373 | 62022049,4505981,01918597359 1374 | 62022050,4506197,03875996796 1375 | 62022068,4505611,05858198803 1376 | 62022703,4504690,17847397144 1377 | 62022899,4505654,03906497602 1378 | 62023692,4504120,17917495556 1379 | 62023880,4504132,17878199111 1380 | 62023906,4505844,05834896917 1381 | 62024206,4505717,02878195739 1382 | 62024798,4503037,01877197197 1383 | 62024802,4504037,30905399922 1384 | 62024901,4504045,12908099123 1385 | 62025183,4503729,19912549189 1386 | 62025388,4505138,18826297235 1387 | 62025477,4504327,25918098065 1388 | 62025513,4505653,04875196192 1389 | 62025822,4504995,12913248730 1390 | 62025895,4505095,31874298959 1391 | 62025928,4505501,05895099319 1392 | 62026214,4505969,03877498092 1393 | 62026674,4503910,17843849709 1394 | 62026778,4505230,30847998446 1395 | 62026891,4504761,13867097982 1396 | 62026939,4505293,22895895389 1397 | 62027068,4503738,31874499512 1398 | 62027473,4505579,08864397965 1399 | 62028241,4503977,30906899007 1400 | 62028362,4504659,21818397906 1401 | 62028604,4505129,29863049952 1402 | 62028781,4505227,11916597969 1403 | 62028955,4503710,16839099715 1404 | 62029724,4505079,29906296762 1405 | 62030152,4504470,31879498417 1406 | 62030246,4505857,04917299981 1407 | 62030720,4505370,30839299865 1408 | 62032070,4506168,03907199184 1409 | 62032731,4505712,04918098165 1410 | 62032742,4505646,08889598469 1411 | 62033020,4503651,24862848345 1412 | 62033230,4504441,10894597289 1413 | 62033255,4503952,27885799103 1414 | 62033380,4502203,28858596744 1415 | 62034402,4505626,05874597556 1416 | 62034527,4505228,15857799302 1417 | 62034647,4504146,17868098589 1418 | 62034949,4504003,18914197992 1419 | 62035015,4503923,24876799991 1420 | 62035139,4505064,18926199192 1421 | 62035783,4506018,05906696586 1422 | 62035951,4504828,31879498689 1423 | 62036033,4505384,12820199403 1424 | 62036964,4504151,21914997795 1425 | 62037359,4504916,20838998594 1426 | 62037396,4506238,09865597611 1427 | 62037504,4504648,16917297596 1428 | 62037506,4503947,25849797339 1429 | 62037945,4506171,08816497125 1430 | 62038747,4503696,13875497132 1431 | 62038762,4505540,07824395874 1432 | 62038941,4504476,21914898991 1433 | 62039128,4504499,11858098302 1434 | 62039147,4506073,09835499631 1435 | 62039255,4504253,17845798389 1436 | 62039297,4505397,22926598752 1437 | 62039659,4504709,12907396191 1438 | 62039860,4505452,03847597169 1439 | 62040173,4505147,21881699599 1440 | 62040500,4505404,02885396146 1441 | 62041322,4504443,14849098358 1442 | 62041891,4504123,23895599700 1443 | 62041943,4504904,25904399313 1444 | 62041992,4504727,20865796375 1445 | 62042169,4503741,17929498569 1446 | 62042362,4504466,23924997753 1447 | 62042389,4504517,14906697492 1448 | 62042483,4506139,05882949550 1449 | 62042606,4503761,12897199945 1450 | 62042777,4503670,28924897718 1451 | 62042931,4506112,08845995908 1452 | 62043034,4503983,24896898341 1453 | 62043124,4505737,09865495932 1454 | 62043137,4505866,07866995553 1455 | 62043225,4504513,28885598589 1456 | 62043293,4506255,05887998398 1457 | 62043400,4506318,07865296988 1458 | 62044738,4506129,06896699472 1459 | 62044945,4504218,15848299518 1460 | 62045044,4504894,16906598748 1461 | 62045056,4505873,06884797274 1462 | 62045192,4506196,01905597708 1463 | 62045412,4505594,05836198443 1464 | 62045495,4504118,25824995500 1465 | 62045633,4504969,21813449126 1466 | 62045842,4506260,08883749120 1467 | 62046086,4504551,28817097121 1468 | 62046762,4505358,24896699527 1469 | 62046816,4505533,08819899356 1470 | 62046925,4505410,02847896550 1471 | 62047201,4505836,01856997479 1472 | 62047215,4504015,18846997756 1473 | 62047486,4506372,02846995326 1474 | 62047673,4505287,28866299953 1475 | 62048175,4504974,17848198943 1476 | 62048288,4504122,18826999787 1477 | 62048903,4506202,07857498997 1478 | 62049027,4505639,03876399937 1479 | 62049166,4506173,08887199737 1480 | 62049350,4504938,13844995975 1481 | 62050402,4505770,06905597793 1482 | 62050479,4505409,03856897698 1483 | 62050677,4504041,19877097997 1484 | 62050725,4505407,08837298661 1485 | 62050863,4505086,22929499348 1486 | 62051348,4506039,05927996385 1487 | 62051501,4502150,04897298746 1488 | 62052086,4505666,03865599365 1489 | 62052452,4504954,23857999428 1490 | 62052462,4504811,15857399762 1491 | 62052499,4505184,51916200513 1492 | 62052694,4504522,24835798352 1493 | 62052720,4506105,07868999521 1494 | 62053491,4504588,27867196027 1495 | 62053570,4503840,27816596527 1496 | 62053918,4504089,28834298971 1497 | 62054179,4506209,08815599552 1498 | 62054962,4504459,18827197919 1499 | 62054965,4503919,25925198334 1500 | 62055633,4504193,26923248586 1501 | 62056644,4504315,10827098103 1502 | 62057719,4505152,15905899527 1503 | 62057933,4504798,10874497792 1504 | 62058263,4506343,02898996983 1505 | 62058317,4504406,16924599999 1506 | 62058382,4505414,09877296730 1507 | 62058730,4505822,05816396656 1508 | 62058814,4504054,29836196773 1509 | 62058856,4504236,30854999164 1510 | 62059238,4505700,07895797302 1511 | 62059552,4506020,06826397479 1512 | 62059810,4503942,14897199085 1513 | 62059811,4505027,15916298584 1514 | 62060022,4503842,14824797731 1515 | 62060054,4504283,15877696577 1516 | 62060388,4505367,23923347372 1517 | 62060536,4504108,14919098598 1518 | 62061232,4503874,25907498525 1519 | 62061435,4505526,08886399155 1520 | 62061730,4504085,11856395938 1521 | 62061936,4504598,21928198615 1522 | 62062452,4504794,31817199170 1523 | 62062708,4504314,10875399972 1524 | 62062741,4504664,27896095345 1525 | 62062829,4504473,27845199723 1526 | 62062977,4505691,04826199984 1527 | 62063071,4504524,16876198170 1528 | 62063296,4504570,12925197996 1529 | 62063928,4504611,27877095474 1530 | 62063968,4504055,11866596591 1531 | 62064288,4504066,11877198547 1532 | 62064503,4504270,13905598389 1533 | 62064566,4505916,01914999320 1534 | 62065435,4504044,22849099144 1535 | 62065562,4504034,17848299677 1536 | 62065805,4504174,16829299171 1537 | 62065981,4504696,23886498187 1538 | 62067313,4503773,26875798390 1539 | 62068088,4503150,06866297175 1540 | 62068125,4505794,02926399139 1541 | 62068581,4503849,25864398793 1542 | 62068887,4503972,17854599445 1543 | 62069131,4504463,18914699726 1544 | 62069360,4503834,16906098168 1545 | 62069371,4506177,08845995312 1546 | 62069931,4504965,13866699113 1547 | 62069948,4505950,03928197777 1548 | 62070096,4503700,27845096746 1549 | 62070237,4505506,06817098914 1550 | 62070663,4504483,26914299321 1551 | 62071169,4504543,20896396723 1552 | 62071463,4504256,11869999506 1553 | 62071514,4503901,20925796949 1554 | 62071605,4505476,06825596346 1555 | 62071677,4503728,14835797326 1556 | 62071851,4504736,30907195259 1557 | 62071938,4504666,30837297555 1558 | 62072397,4504762,11879897736 1559 | 62072409,4505971,09846898163 1560 | 62072662,4505065,20917198749 1561 | 62072680,4506103,07916099929 1562 | 62073124,4505560,04816995596 1563 | 62073180,4505299,23866795193 1564 | 62073386,4505099,26865096797 1565 | 62073530,4504601,12833048145 1566 | 62074125,4506286,07825998874 1567 | 62074380,4504247,10915597306 1568 | 62075023,4502250,18904699655 1569 | 62075319,4506054,08827898768 1570 | 62075540,4504399,12906899386 1571 | 62076503,4503917,13888398737 1572 | 62077745,4503908,14867298151 1573 | 62077833,4505116,17877396169 1574 | 62077886,4506061,01896098779 1575 | 62078382,4505828,09918197610 1576 | 62078552,4502000,08896897986 1577 | 62078591,4505942,08835497934 1578 | 62079311,4506100,03815197592 1579 | 62079580,4504706,31853149961 1580 | 62079810,4503675,14926099125 1581 | 62080056,4506050,06926598757 1582 | 62080112,4505951,07845795937 1583 | 62080806,4504986,11866398994 1584 | 62082479,4504005,18849198587 1585 | 62082579,4503765,25856897012 1586 | 62082682,4506368,06897197586 1587 | 62082997,4505772,05856495924 1588 | 62083056,4504846,14846096362 1589 | 62083412,4505209,15889099655 1590 | 62083654,4504966,12874199557 1591 | 62083864,4505017,23836195965 1592 | 62084410,4504416,20886398310 1593 | 62084493,4504244,50877401178 1594 | 62084990,4506090,07916099171 1595 | 62085360,4504641,11917898814 1596 | 62085466,4503997,12879398817 1597 | 62085646,4504860,20815694555 1598 | 62085985,4504137,11907398163 1599 | 62086584,4505592,07898899580 1600 | 62086722,4505581,07858998152 1601 | 62086903,4505454,01876998757 1602 | 62086949,4504596,11907595996 1603 | 62087504,4504432,25889298793 1604 | 62087640,4504646,13896497140 1605 | 62088146,4506361,01846399727 1606 | 62089113,4503881,14929798776 1607 | 62089430,4504472,14885996362 1608 | 62089525,4504700,16835296869 1609 | 62089671,4505638,07926895944 1610 | 62090175,4504049,27816297449 1611 | 62090411,4505146,11827899145 1612 | 62090989,4506051,03896099379 1613 | 62091078,4505920,05882548793 1614 | 62092296,4506200,06823049348 1615 | 62092367,4505728,06925097940 1616 | 62092708,4505193,12917799111 1617 | 62093315,4504240,17894897538 1618 | 62093722,4504679,24844796737 1619 | 62093787,4505326,24864899966 1620 | 62093865,4505791,08868597314 1621 | 62094166,4505727,08926999754 1622 | 62094400,4506024,07832649354 1623 | 62094672,4504258,21918997293 1624 | 62094934,4505695,04868199496 1625 | 62095041,4503858,20845496928 1626 | 62096250,4504958,20925399184 1627 | 62096297,4502322,17847895713 1628 | 62096351,4503987,16887097708 1629 | 62096470,4504552,18909999134 1630 | 62096594,4504405,22924099929 1631 | 62096800,4504757,13824897713 1632 | 62096829,4504862,28905798377 1633 | 62097299,4505218,25864796160 1634 | 62097491,4503657,29887597357 1635 | 62098746,4504340,19856496573 1636 | 62099456,4505645,02895397191 1637 | 62099468,4503693,29917096668 1638 | 62099615,4503918,22908998964 1639 | 62099795,4505776,01825599327 1640 | 62100030,4504063,16896099780 1641 | 62100142,4504558,13915698985 1642 | 62100180,4504745,18860199226 1643 | 62100365,4505181,11867896572 1644 | 62101391,4503754,10888299098 1645 | 62101528,4505072,26923249965 1646 | 62102405,4506344,03885399141 1647 | 62102696,4503937,20874699382 1648 | 62102792,4505742,08894597705 1649 | 62102943,4504851,14825798715 1650 | 62103106,4505901,08847899531 1651 | 62103114,4505387,10816598937 1652 | 62103323,4505880,02829699551 1653 | 62103470,4504436,11879499269 1654 | 62103548,4503655,48877201743 1655 | 62104957,4503838,24888299439 1656 | 62105763,4503818,14819699691 1657 | 62105769,4504670,18857498301 1658 | 62106400,4504887,23826794763 1659 | 62107889,4504822,31928597019 1660 | 62108046,4505249,13887096583 1661 | 62108291,4503677,12828697917 1662 | 62108337,4505719,04928898364 1663 | 62108746,4505875,06874897033 1664 | 62109562,4505288,18845997132 1665 | 62110175,4505881,03886398386 1666 | 62110437,4505162,12887795787 1667 | 62110561,4504879,16848996274 1668 | 62110736,4504220,16919298255 1669 | 62110745,4505903,06928699275 1670 | 62110880,4506058,06854498116 1671 | 62111733,4506182,05846398122 1672 | 62111836,4505610,08926697367 1673 | 62112149,4506241,09926799166 1674 | 62112175,4505549,02826697485 1675 | 62112200,4504800,13907296886 1676 | 62112249,4505572,08889098555 1677 | 62112555,4502163,30858099370 1678 | 62112646,4504583,14906497612 1679 | 62112840,4505808,05836597380 1680 | 62113482,4505838,07814199783 1681 | 62113724,4505236,22846298146 1682 | 62114085,4506080,06918599930 1683 | 62114240,4506011,01816597516 1684 | 62114505,4504557,22885997744 1685 | 62114676,4504567,26847799675 1686 | 62115422,4504074,18835696568 1687 | 62115595,4505301,29897897057 1688 | 62116343,4504602,25835999702 1689 | 62117225,4504409,16895298305 1690 | 62117327,4504963,17906696525 1691 | 62117859,4504148,31888497695 1692 | 62118305,4505119,29905899544 1693 | 62118838,4505820,03876099208 1694 | 62119128,4504959,27847899625 1695 | 62119765,4504865,12905599990 1696 | 62119899,4503841,30917198558 1697 | 62119954,4504919,13846496992 1698 | 62120101,4505953,07837399356 1699 | 62120108,4505050,29864397199 1700 | 62121450,4505917,09829598539 1701 | 62121688,4505747,02857097125 1702 | 62121986,4503790,19924596697 1703 | 62122406,4503991,19844298768 1704 | 62123194,4503685,29846797805 1705 | 62123386,4506215,06826397711 1706 | 62124130,4505320,15903649191 1707 | 62124953,4504973,24866398700 1708 | 62125171,4504656,20826496704 1709 | 62125218,4505322,18865096522 1710 | 62125440,4506014,01907299631 1711 | 62125582,4506349,08814497330 1712 | 62125677,4503694,22875597519 1713 | 62126504,4505398,02827397299 1714 | 62126790,4506379,06825299198 1715 | 62127340,4505573,09875598152 1716 | 62127393,4504775,22916597979 1717 | 62127405,4505155,10844895947 1718 | 62128025,4505616,06848099382 1719 | 62128083,4505457,09835898145 1720 | 62128353,4505275,12857995587 1721 | 62128790,4505334,10846497930 1722 | 62128827,4505659,08916095784 1723 | 62129381,4504715,29900399519 1724 | 62129439,4504917,19907896997 1725 | 62129986,4504502,26836296787 1726 | 62130281,4505622,09920199949 1727 | 62130393,4504177,26819399920 1728 | 62130425,4506313,08906098912 1729 | 62130554,4505198,17909098505 1730 | 62131032,4506250,05848899390 1731 | 62131067,4505117,10925898495 1732 | 62131485,4504642,15919299948 1733 | 62131982,4504325,11927699747 1734 | 62132357,4504929,23876698714 1735 | 62132616,4503725,15915696942 1736 | 62132714,4505223,11814996397 1737 | 62133573,4505532,06865098756 1738 | 62133859,4505510,02816696197 1739 | 62133961,4505862,07849799619 1740 | 62134018,4504484,30847397809 1741 | 62134029,4505378,28913749504 1742 | 62134089,4504498,27834896856 1743 | 62135033,4504539,25817095537 1744 | 62137055,4504939,29846298957 1745 | 62137394,4503759,10895898991 1746 | 62137399,4504339,29842849134 1747 | 62137451,4503883,15914298951 1748 | 62137980,4504753,17886998732 1749 | 62138818,4504815,30905098167 1750 | 62138863,4505618,05894898706 1751 | 62138987,4504362,54866901190 1752 | 62139303,4505738,09837897146 1753 | 62139348,4505521,06876798539 1754 | 62140546,4504943,28874199119 1755 | 62140622,4505007,64907201161 1756 | 62140740,4505371,27817399660 1757 | 62141106,4505125,13896798906 1758 | 62141147,4505461,06855997345 1759 | 62141198,4505909,06817495174 1760 | 62141486,4505906,30914098129 1761 | 62141619,4505535,07905198542 1762 | 62141689,4503705,29857695982 1763 | 62142458,4505174,13909599347 1764 | 62142981,4505102,23897099500 1765 | 62143002,4506188,01898599503 1766 | 62143530,4504113,21825699551 1767 | 62144487,4505020,26886598881 1768 | 62145214,4504171,11927299501 1769 | 62145442,4505058,11826598370 1770 | 62145778,4505908,03836999125 1771 | 62145814,4506290,08894797151 1772 | 62146469,4505143,24855097350 1773 | 62146514,4504760,14816899649 1774 | 62146674,4505601,03816299119 1775 | 62147404,4505933,05897097011 1776 | 62148431,4505364,19876795984 1777 | 62149513,4505845,05876394776 1778 | 62149694,4505328,10826397859 1779 | 62150011,4505279,16872648724 1780 | 62150335,4504993,14928095402 1781 | 62150554,4504952,11868099943 1782 | 62150591,4504661,18875498688 1783 | 62217854,4505726,03837298929 1784 | 62217967,4504359,18840097990 1785 | 62218505,4503911,17915097456 1786 | 62218762,4503936,19889999074 1787 | 62219071,4505122,10823849503 1788 | 62219529,4506108,06846997383 1789 | 62220087,4503721,23929798546 1790 | 62220208,4505437,09816699379 1791 | 62220867,4505465,08888399535 1792 | 62221100,4504869,12857698671 1793 | 62221273,4505103,21829199227 1794 | 62221696,4505495,07886598798 1795 | 62222350,4505623,06852849175 1796 | 62222537,4504407,22916398216 1797 | 62222853,4504550,23836597192 1798 | 62223130,4504859,31852748721 1799 | 62223197,4505167,25858974936 1800 | 62223418,4504222,13846498146 1801 | 62223854,4504347,20895298795 1802 | 62224224,4505238,28927198489 1803 | 62224406,4505525,03865898362 1804 | 62224812,4504338,27866196503 1805 | 62224948,4504994,27921948676 1806 | 62225497,4505784,08846496735 1807 | 62225804,4504142,26866397561 1808 | 62225992,4504628,29874996996 1809 | 62226517,4504774,29917797216 1810 | 62226915,4504606,19828198931 1811 | 62227451,4503793,21927898532 1812 | 62227668,4504765,30838897912 1813 | 62228569,4505205,30868896937 1814 | 62228755,4504168,30868899731 1815 | 62228934,4503912,14863649235 1816 | 62229201,4504282,30836497720 1817 | 62229260,4505154,16885598106 1818 | 62229500,4504009,30907598884 1819 | 62229666,4506317,06847596625 1820 | 62229856,4504159,16858198066 1821 | 62230012,4504968,23884799139 1822 | 62230148,4505887,02855896756 1823 | 62230411,4505277,12877498962 1824 | 62230593,4506283,09896998053 1825 | 62230727,4506091,02875296135 1826 | 62230778,4506229,08812647998 1827 | 62231231,4505529,02896798300 1828 | 62231338,4503709,23889899433 1829 | 62232255,4504957,21908198988 1830 | 62232503,4505524,06828499619 1831 | 62232773,4504857,11894398584 1832 | 62232780,4505930,05815598166 1833 | 62232916,4503891,28847499933 1834 | 62233562,4503819,11874898408 1835 | 62233583,4504413,14856299350 1836 | 62233704,4504604,17869597627 1837 | 62233741,4505038,23837296536 1838 | 62234103,4503808,12895797489 1839 | 62234224,4504357,30928999145 1840 | 62234501,4505023,21857497535 1841 | 62234737,4504532,21811399172 1842 | 62234886,4505212,28865896389 1843 | 62234893,4503938,30837295625 1844 | 62235129,4504395,31885195566 1845 | 62235214,4505144,14889396793 1846 | 62235968,4505678,06836898328 1847 | 62235969,4504211,25818199689 1848 | 62236601,4505126,23866299706 1849 | 62236769,4505811,06858298782 1850 | 62237035,4505189,26826099398 1851 | 62237284,4503895,28869199321 1852 | 62237415,4503904,13907299761 1853 | 62237933,4505757,08895995100 1854 | 62238087,4503817,17815599594 1855 | 62238771,4505394,15848599147 1856 | 62238912,4503682,18828297887 1857 | 62239118,4503668,20836298692 1858 | 62240169,4503744,12868497783 1859 | 62240302,4504291,21897499263 1860 | 62241100,4505984,04896196958 1861 | 62241424,4503886,12836597425 1862 | 62242576,4505203,29909497149 1863 | 62242603,4505721,02847098352 1864 | 62242709,4506127,04815797103 1865 | 62242748,4504128,21828399311 1866 | 62242818,4503712,13825099705 1867 | 62243039,4505466,08918197681 1868 | 62243495,4504012,25838699815 1869 | 62243713,4504046,14828599047 1870 | 62244064,4503824,15903049348 1871 | 62244987,4506269,06877599742 1872 | 62245083,4504793,26817398676 1873 | 62245337,4503775,17827296430 1874 | 62245664,4506210,05886597926 1875 | 62245938,4505759,08924699311 1876 | 62246107,4504420,28879099996 1877 | 62246680,4504191,29905998771 1878 | 62246714,4504799,52916300220 1879 | 62247321,4505612,02845797377 1880 | 62247385,4504676,31814198998 1881 | 62247796,4504714,12856698139 1882 | 62248009,4505863,04916699412 1883 | 62248229,4504566,20843749381 1884 | 62248381,4505190,15885797153 1885 | 62248637,4504242,70847100131 1886 | 62249086,4503770,16835197984 1887 | 62290770,4504704,13828299993 1888 | 62290841,4505949,06906699158 1889 | 62291197,4505527,03864799298 1890 | 62292637,4505019,23824297517 1891 | 62292849,4505879,04896496153 1892 | 62292995,4506309,02876897205 1893 | 62293079,4505587,04836299057 1894 | 62293175,4505955,06835398305 1895 | 62293772,4503781,14894898314 1896 | 62293979,4505482,01917899637 1897 | 62294094,4505270,15835797284 1898 | 62294137,4504819,21818398619 1899 | 62294286,4504590,24877299925 1900 | 62294288,4504397,21863449186 1901 | 62295071,4505445,08875998944 1902 | 62295165,4505115,30856797925 1903 | 62295174,4505374,23862949382 1904 | 62295491,4505332,19926797126 1905 | 62295697,4504277,24867198020 1906 | 62296032,4504333,22856599659 1907 | 62296098,4503686,23848897191 1908 | 62296422,4505874,09876899512 1909 | 62297424,4504673,20819199389 1910 | 62297620,4505885,03817799808 1911 | 62298107,4504274,23857997689 1912 | 62298344,4504756,13827697928 1913 | 62298657,4504804,31875998822 1914 | 62300147,4505263,10817697769 1915 | 62300201,4503915,29816397357 1916 | 62300401,4505975,04836896187 1917 | 62300655,4505051,14837499683 1918 | 62300849,4506322,01855999109 1919 | 62300994,4504514,16864298579 1920 | 62301714,4503727,31888997418 1921 | 62301890,4505607,28836398191 1922 | 62301907,4505306,19866898114 1923 | 62302054,4506153,04916197921 1924 | 62302168,4504090,10854399964 1925 | 62302358,4505980,07847099989 1926 | 62302397,4503766,29876996438 1927 | 62302628,4505005,30918697787 1928 | 62303135,4503984,23895296791 1929 | 62303615,4504419,23865198973 1930 | 62303646,4506244,08907197744 1931 | 62304221,4505044,12925999197 1932 | 62304386,4504204,21906599799 1933 | 62304469,4504574,25918597932 1934 | 62304491,4504937,31888498489 1935 | 62304837,4504264,30816096126 1936 | 62305107,4503954,28866196704 1937 | 62305784,4503796,27906499520 1938 | 62305807,4505567,06917899612 1939 | 62307115,4503861,21895797925 1940 | 62307122,4504288,24864899532 1941 | 62307212,4503867,26876997990 1942 | 62307579,4506261,01826197532 1943 | 62308117,4505580,06917699257 1944 | 62308118,4505998,08817798919 1945 | 62308333,4504490,29916298763 1946 | 62308354,4505018,11916999943 1947 | 62308395,4504523,21876498119 1948 | 62308453,4504616,13847795403 1949 | 62308476,4504170,25886394546 1950 | 62310997,4506213,09845496312 1951 | 62311030,4504162,17877195414 1952 | 62311075,4504967,27912849991 1953 | 62311361,4505408,09898099501 1954 | 62311481,4505438,09897398823 1955 | 62311932,4504861,27886298515 1956 | 62312364,4505708,01837498720 1957 | 62312541,4504180,28822549162 1958 | 62312775,4504304,10837696289 1959 | 62313012,4505302,28906999120 1960 | 62313213,4504176,13845699105 1961 | 62314025,4504519,27898498684 1962 | 62314453,4504817,23927899566 1963 | 62314734,4505054,22915396368 1964 | 62314954,4505101,12906897960 1965 | 62315358,4505342,16925797867 1966 | 62316079,4504303,17855697998 1967 | 62316200,4503658,10839499693 1968 | 62316466,4505368,30836398927 1969 | 62316532,4505832,06886498738 1970 | 62317082,4505112,29858597577 1971 | 62317127,4504228,17828998153 1972 | 62317141,4503719,26889298560 1973 | 62317264,4503674,51825700793 1974 | 62317346,4505081,28876998329 1975 | 62317493,4503826,15898799996 1976 | 62317821,4504880,17856398595 1977 | 62318423,4503699,29857196358 1978 | 62318641,4503782,30838799740 1979 | 62318872,4504702,18875894710 1980 | 62318896,4505968,06867196712 1981 | 62319021,4506042,09908699707 1982 | 62319537,4504619,17827296864 1983 | 62320145,4505498,06886597531 1984 | 62320788,4505389,24925998423 1985 | 62334705,4506154,09916998586 1986 | 62335277,4505128,20828298578 1987 | 62335683,4505253,20835496776 1988 | 62335943,4503820,29895598184 1989 | 62336028,4505296,12917097931 1990 | 62336029,4505505,09866198540 1991 | 62336322,4505413,07906598110 1992 | 62336756,4505798,06825497119 1993 | 62336816,4504735,16857595398 1994 | 62337876,4503913,26917097797 1995 | 62337952,4503836,24906699989 1996 | 62338173,4505755,02905298316 1997 | 62339018,4506059,05873649374 1998 | 62339107,4503762,30879499867 1999 | 62339187,4503294,10856799056 2000 | 62339351,4504971,17898199282 2001 | 62339513,4503926,19919197962 2002 | 62339631,4504503,15868297678 2003 | 62339880,4505539,03834798505 2004 | 62340108,4504643,26907099384 2005 | 62340575,4502561,20818299452 2006 | 62340599,4504464,18906195948 2007 | 62341137,4504728,23875599135 2008 | 62341247,4505786,05897296855 2009 | 62345077,4506220,06857098984 2010 | 62345260,4503783,17829497565 2011 | 62345558,4505927,02824997481 2012 | 62345707,4506026,05856298959 2013 | 62346096,4504374,14857396929 2014 | 62346105,4505188,24929599175 2015 | 62346248,4505460,06827296773 2016 | 62347455,4504997,13847896560 2017 | 62348088,4505762,07874899407 2018 | 62348476,4505430,07846997150 2019 | 62348603,4505699,02817499816 2020 | 62348788,4506001,09847698230 2021 | 62349471,4506221,08925897532 2022 | 62349826,4506273,04868298885 2023 | 62349955,4504394,19843048512 2024 | 62350095,4503925,27818696170 2025 | 62350692,4505515,06878798595 2026 | 62350790,4505316,21865699783 2027 | 62350810,4504058,16896699362 2028 | 62351257,4505636,03866395925 2029 | 62351258,4503743,24833747912 2030 | 62351753,4503863,19869097953 2031 | 62352021,4505921,09877599911 2032 | 62352186,4504592,21825698172 2033 | 62352289,4504667,18810198806 2034 | 62352627,4505483,08838999914 2035 | 62352978,4504839,31908399431 2036 | 62353433,4505469,03915498972 2037 | 62353984,4504217,16919599697 2038 | 62354004,4504385,14877199267 2039 | 62354724,4504348,11889596203 2040 | 62355383,4505208,16898097564 2041 | 62356151,4506089,09823649603 2042 | 62359434,4505583,07836097879 2043 | 62359834,4503733,26836097539 2044 | 62360459,4504060,24904198982 2045 | 62360621,4506214,06825198707 2046 | 62361947,4504870,24876895214 2047 | 62362315,4504827,16875397552 2048 | 62362499,4505080,12918198855 2049 | 62362632,4504254,18845895291 2050 | 62362729,4504809,20845196975 2051 | 62362791,4505356,30874299703 2052 | 62364314,4505016,10924199062 2053 | 62364564,4505094,26813248114 2054 | 62364690,4505939,03877898309 2055 | 62364787,4505649,03817297993 2056 | 62365150,4504637,17866095809 2057 | 62365763,4506121,08904896730 2058 | 62366243,4503735,22846997621 2059 | 62366727,4506216,09926397181 2060 | 62367323,4504321,46906601567 2061 | 62367856,4505132,11827098657 2062 | 62367876,4504985,14884896909 2063 | 62368836,4504805,19859098919 2064 | 62368838,4505923,06885398799 2065 | 62369045,4505801,05906999929 2066 | 62370153,4506231,02877899759 2067 | 62370281,4504465,14894498774 2068 | 62370433,4504933,17826299711 2069 | 62370675,4504639,14917298573 2070 | 62370937,4505946,06816998954 2071 | 62371017,4505767,09897098366 2072 | 62371439,4504990,17909298385 2073 | 62371610,4505141,26817196038 2074 | 62371832,4504110,30894199349 2075 | 62371835,4504903,10917098919 2076 | 62371858,4503736,16914198708 2077 | 62372085,4504302,11913748796 2078 | 62372276,4505788,02915497988 2079 | 62372347,4503701,20832948188 2080 | 62372680,4504231,21898699142 2081 | 62372800,4504182,12909699752 2082 | 62372832,4504537,18819698925 2083 | 62373281,4505858,07918998645 2084 | 62373746,4505715,06875897304 2085 | 62374310,4505339,21814498112 2086 | 62374668,4505114,16895295187 2087 | 62374698,4505284,27846699584 2088 | 62374731,4503711,22865297142 2089 | 62375722,4506144,05859097784 2090 | 62376368,4504560,18909599403 2091 | 62377039,4506325,02895098194 2092 | 62377349,4504886,19856597701 2093 | 62377494,4505849,04827794940 2094 | 62377801,4506055,03857998188 2095 | 62379495,4504076,18836198502 2096 | 62380305,4506122,08834598125 2097 | 62380919,4503811,19895497137 2098 | 62381095,4505355,17903948914 2099 | 62381319,4504768,22912649117 2100 | 62381501,4503884,25876499897 2101 | 62381909,4504769,18825898197 2102 | 62382047,4505247,22886798958 2103 | 62382523,4504719,29858899964 2104 | 62382565,4502693,13814499841 2105 | 62382971,4505771,09925199718 2106 | 62383017,4505349,21878398588 2107 | 62383271,4505026,28815497149 2108 | 62383305,4506008,07867295717 2109 | 62383401,4504737,29924099710 2110 | 62385652,4506044,04837698850 2111 | 62385897,4505716,09913848990 2112 | 62386151,4504071,21855596706 2113 | 62386942,4504114,24827299975 2114 | 62387314,4504350,15916895280 2115 | 62389096,4505644,04836896349 2116 | 62389611,4504119,16859198175 2117 | 62389918,4506141,06902948714 2118 | 62390372,4506278,05814999086 2119 | 62391293,4505403,07867896354 2120 | 62391433,4503734,16877296370 2121 | 62391509,4503833,10919599087 2122 | 62391515,4504653,18869599162 2123 | 62392056,4503916,13813449719 2124 | 62392166,4505509,08917195642 2125 | 62392305,4505995,07926597226 2126 | 62392813,4505988,04856999306 2127 | 62394241,4504767,25905896531 2128 | 62394243,4505900,04878799300 2129 | 62394412,4505470,06859799750 2130 | 62394519,4504568,13835495757 2131 | 62394745,4504871,12886298569 2132 | 62395017,4504187,13905497140 2133 | 62395218,4505415,06879798947 2134 | 62395943,4505261,12928499187 2135 | 62396320,4503880,14829498694 2136 | 62397438,4506119,09810199153 2137 | 62397958,4504977,14875498712 2138 | 62398047,4504452,28868499437 2139 | 62398162,4505467,05876799555 2140 | 62398217,4505298,20814298575 2141 | 62398253,4505136,18875999385 2142 | 62398450,4504634,20834197317 2143 | 62398629,4504366,29876199538 2144 | 62398834,4505478,06818199242 2145 | 62399344,4505361,29873849647 2146 | 62399352,4504682,14819499579 2147 | 62399710,4503859,30907195097 2148 | 62399716,4505382,30928498790 2149 | 62399840,4505194,19928899961 2150 | 62399898,4502159,27916498808 2151 | 62400703,4506370,06836599320 2152 | 62401365,4504599,13826097641 2153 | 62401592,4504280,23918599975 2154 | 62401994,4505471,07845897101 2155 | 62402027,4504972,18875097144 2156 | 62402522,4505810,02834398764 2157 | 62403429,4503963,29904799171 2158 | 62403803,4505668,06826197518 2159 | 62404292,4503852,12847495330 2160 | 62405086,4504630,29843148938 2161 | 62405452,4506331,09876899199 2162 | 62405617,4503909,21847897942 2163 | 62405728,4506093,03869197989 2164 | 62405937,4501634,29878599134 2165 | 62406092,4504504,11886999501 2166 | 62406368,4506140,08918698621 2167 | 62406740,4506125,03890097994 2168 | 62406786,4504961,13865798584 2169 | 62407891,4506330,02847799415 2170 | 62408183,4506164,06926298028 2171 | 62408396,4505254,12916896652 2172 | 62408542,4505891,09907297966 2173 | 62408978,4503726,27834597778 2174 | 62409418,4505259,12869798124 2175 | 62410266,4504353,12845997118 2176 | 62410319,4503707,13876898513 2177 | 62410416,4504341,21873349317 2178 | 62411347,4506268,01829998781 2179 | 62411491,4505785,07877299133 2180 | 62411522,4501680,24916798500 2181 | 62413001,4504131,19836298643 2182 | 62413901,4505703,07856694555 2183 | 62414050,4506032,01858699726 2184 | 62414066,4504467,11828897162 2185 | 62414610,4505375,15886397884 2186 | 62414698,4505642,08888897780 2187 | 62415311,4505002,11825799178 2188 | 62415641,4506132,04896697574 2189 | 62416215,4504845,30899299643 2190 | 62416874,4504863,22855798364 2191 | 62416897,4503970,21878299946 2192 | 62417460,4505826,07926297516 2193 | 62419071,4506179,01875997854 2194 | 62419711,4505331,16826998672 2195 | 62420514,4503708,13838199962 2196 | 62420835,4504663,14877599583 2197 | 62421070,4505871,09879399774 2198 | 62421821,4506279,01894497498 2199 | 62421953,4506135,08817697004 2200 | 62422068,4505752,04916398323 2201 | 62422583,4504227,26853747970 2202 | 62423442,4505168,12827096332 2203 | 62424303,4504206,21902749532 2204 | 62424484,4504962,17846699341 2205 | 62424547,4504589,28909497371 2206 | 62424677,4503816,15884099371 2207 | 62424724,4504790,10928197307 2208 | 62425427,4502235,28904298516 2209 | 62425805,4505310,14912949339 2210 | 62425893,4504547,12858298383 2211 | 62425957,4504021,27838797984 2212 | 62426000,4505766,08845098744 2213 | 62427136,4505118,27909197703 2214 | 62427393,4504835,11914897531 2215 | 62427457,4505242,22895397729 2216 | 62427564,4505281,23857399765 2217 | 62428225,4506285,09816499760 2218 | 62428325,4506170,01846099774 2219 | 62428343,4505986,02816295915 2220 | 62428858,4504792,17838899501 2221 | 62429506,4504770,30877799197 2222 | 62429903,4503756,20848798542 2223 | 62430725,4503774,24863949188 2224 | 62431048,4503998,25889099626 2225 | 62431258,4505576,05865894742 2226 | 62431263,4504934,10897197109 2227 | 62431704,4506315,06868197100 2228 | 62432216,4505904,07895196422 2229 | 62432291,4504829,30888397635 2230 | 62433673,4504039,18845797958 2231 | 62434038,4505812,02896499303 2232 | 62434253,4504344,13835299737 2233 | 62434525,4504918,10825196914 2234 | 62435894,4503813,22867096535 2235 | 62436163,4503889,10822948117 2236 | 62437048,4505973,03834798343 2237 | 62437118,4506156,03908798758 2238 | 62437130,4505704,09815397972 2239 | 62437908,4505651,04830199743 2240 | 62438147,4503676,18926696978 2241 | 62438418,4505217,29837597992 2242 | 62438973,4505541,01887098111 2243 | 62439435,4504981,13906097529 2244 | 62439767,4504999,12828798721 2245 | 62439852,4504553,28908099461 2246 | 62439953,4503695,19880299428 2247 | 62440542,4506294,02892549136 2248 | 62440600,4505092,25854796928 2249 | 62440799,4505864,01901698186 2250 | 62440965,4502511,02886095247 2251 | 62441459,4504020,15815899730 2252 | 62441752,4504895,19854699191 2253 | 62441852,4504249,23923848584 2254 | 62442416,4506248,08847897601 2255 | 62443206,4503870,15886098968 2256 | 62444013,4504554,13857498245 2257 | 62444258,4503799,10926797366 2258 | 62444488,4503851,20926796039 2259 | 62445181,4504451,11868097770 2260 | 62446298,4504907,20895998045 2261 | 62446536,4506143,03855795980 2262 | 62446581,4506245,03859199738 2263 | 62447034,4504764,13857397783 2264 | 62447102,4505282,17838298389 2265 | 62447195,4505082,29834999135 2266 | 62448230,4505463,03886594568 2267 | 62448789,4503832,11847196728 2268 | 62449373,4505124,12857498478 2269 | 62450528,4505140,23928799069 2270 | 62450680,4505357,26853949328 2271 | 62450701,4504273,18842749375 2272 | 62450994,4504048,16909098142 2273 | 62451196,4506098,04824798554 2274 | 62451288,4506183,03835695718 2275 | 62452612,4504605,23913149785 2276 | 62452613,4504197,18866498101 2277 | 62453466,4506201,03850099501 2278 | 62453476,4506046,09889799576 2279 | 62455288,4505517,06923148785 2280 | 62455847,4504036,26886596366 2281 | 62456096,4504872,17919297158 2282 | 62456512,4504208,13876498701 2283 | 62457070,4505617,09824698942 2284 | 62457157,4504510,15875497534 2285 | 62457711,4505033,13825997843 2286 | 62457865,4503659,31923649924 2287 | 62458026,4505985,02822649389 2288 | 62458092,4504638,18925499974 2289 | 62458888,4504165,15859196982 2290 | 62459436,4504905,31856299719 2291 | 62459705,4505221,30876998579 2292 | 62459857,4505266,24829197223 2293 | 62460122,4505536,05836898984 2294 | 62461278,4503692,18863249399 2295 | 62461921,4504559,27852549365 2296 | 62462505,4505796,02875096950 2297 | 62463337,4504306,26869799954 2298 | 62463907,4505831,09905599701 2299 | 62463925,4504816,28862848391 2300 | 62464026,4506150,04914797123 2301 | 62464611,4506145,04849799520 2302 | 62464927,4506056,07875499542 2303 | 62465768,4504026,28894699517 2304 | 62466604,4504093,27906898972 2305 | 62467329,4506195,01835199343 2306 | 62467624,4506180,02825798938 2307 | 62467860,4506203,01868396454 2308 | 62468232,4505915,08818296941 2309 | 62469050,4503979,27835498307 2310 | 62470373,4504970,19878298902 2311 | 62470556,4505170,19896895128 2312 | 62471384,4505681,07877999755 2313 | 62472501,4505804,04896399956 2314 | 62472823,4504043,22918197285 2315 | 62473314,4503986,30929498476 2316 | 62473538,4505922,08875997727 2317 | 62473985,4506227,08896399579 2318 | 62474690,4505175,26879198207 2319 | 62474862,4506375,07836298785 2320 | 62475202,4505538,04828099324 2321 | 62475936,4505993,04844898121 2322 | 62476218,4503665,12905198538 2323 | 62476846,4506342,03842849763 2324 | 62477629,4504636,27815095982 2325 | 62478406,4503865,15929599648 2326 | 62478539,4504563,30885298504 2327 | 62479479,4504202,15877299721 2328 | 62479724,4504983,10896897530 2329 | 62480156,4505354,14896997336 2330 | 62480186,4504403,13826094685 2331 | 62480800,4505048,22837598722 2332 | 62481291,4505049,31929299690 2333 | 62481623,4505570,02916597765 2334 | 62481899,4503678,29907098689 2335 | 62482599,4506194,09906396731 2336 | 62482885,4504571,11865995581 2337 | 62483411,4504381,10886196216 2338 | 62485986,4504424,22829398757 2339 | 62486707,4504022,28918898877 2340 | 62486828,4504841,20822949739 2341 | 62487716,4505493,09872548316 2342 | 62488200,4504489,15859997551 2343 | 62488588,4504298,10919674348 2344 | 62489298,4504328,26846098150 2345 | 62489388,4505226,21899799353 2346 | 62489619,4505464,03908399144 2347 | 62490290,4505999,08908399553 2348 | 62491312,4504608,31834198382 2349 | 62491480,4506023,02919698201 2350 | 62491496,4505799,08916198257 2351 | 62491579,4504707,11876697043 2352 | 62491996,4505624,02896796561 2353 | 62492222,4503814,66836301588 2354 | 62492515,4504834,13898499450 2355 | 62493213,4505519,08885598960 2356 | 62493346,4503755,22907599322 2357 | 62493752,4505739,07857997926 2358 | 62494916,4506272,01897999559 2359 | 62494942,4505868,06856598940 2360 | 62495044,4504784,19907296396 2361 | 62495192,4506070,09905799581 2362 | 62495521,4503801,21903349910 2363 | 62496182,4504548,23925397261 2364 | 62496502,4505207,24879798910 2365 | 62496574,4504746,28827197728 2366 | 62497091,4505211,13877097700 2367 | 62497558,4505625,08838599940 2368 | 62498101,4504818,27844598128 2369 | 62498311,4505314,10824997484 2370 | 62498499,4505459,02817096886 2371 | 62498782,4503956,22848196928 2372 | 62500183,4505446,01836896927 2373 | 62500319,4503946,20917896845 2374 | 62500329,4505011,15876798147 2375 | 62500515,4504562,19825298544 2376 | 62500999,4504976,26863449161 2377 | 62501136,4506087,07876295436 2378 | 62501180,4506292,04905096260 2379 | 62501221,4506045,04908799823 2380 | 62501444,4505732,08834598397 2381 | 62502503,4504778,12927997132 2382 | 62502872,4505183,25856898159 2383 | 62503132,4504332,20888697374 2384 | 62503383,4506118,03825098193 2385 | 62503602,4504401,12886899872 2386 | 62503743,4505883,07914299157 2387 | 62503990,4504196,20907294405 2388 | 62504460,4505604,09826099353 2389 | 62504524,4504450,15897297377 2390 | 62504897,4504564,23815497910 2391 | 62505047,4505241,11856799176 2392 | 62505103,4505246,29918999610 2393 | 62505826,4504868,13924699064 2394 | 62505851,4503924,30886995330 2395 | 62506202,4504155,29816896477 2396 | 62506468,4504318,12926198465 2397 | 62507122,4504898,29816798033 2398 | 62507786,4504069,17915996701 2399 | 62507849,4504102,27837597248 2400 | 62507860,4504205,44875801594 2401 | 62508030,4504823,25895397140 2402 | 62508314,4505839,06856695148 2403 | 62508623,4505043,31815094398 2404 | 62509169,4504747,24878597229 2405 | 62509296,4503967,53926000701 2406 | 62509297,4504456,68896700433 2407 | 62509740,4504387,26842748312 2408 | 62510627,4506335,04879199919 2409 | 62510771,4502530,12872549984 2410 | 62510930,4504411,20916298812 2411 | 62511047,4504956,11875298773 2412 | 62511778,4505062,15907498120 2413 | 62511789,4503797,29877096317 2414 | 62512255,4506232,03926297308 2415 | 62513241,4506233,09816196075 2416 | 62513368,4504330,26907099546 2417 | 62513903,4505344,17899998545 2418 | 62514057,4505294,13835496117 2419 | 62514478,4504922,12928298351 2420 | 62516180,4505926,06883849335 2421 | 62516494,4503839,26854998152 2422 | 62516941,4504221,25839997976 2423 | 62517109,4504164,14885796401 2424 | 62517433,4505854,06822948594 2425 | 62517545,4504877,17895099368 2426 | 62517794,4504103,16866396969 2427 | 62517801,4504068,18846099103 2428 | 62518901,4505030,15916299378 2429 | 62520079,4504019,24835699206 2430 | 62520256,4506126,04828198551 2431 | 62520372,4506264,06928997136 2432 | 62520777,4505257,12816999187 2433 | 62520912,4504496,23856598713 2434 | 62521210,4505346,29857299688 2435 | 62522204,4504141,26815796925 2436 | 62522676,4502012,11818498154 2437 | 62523138,4504446,21886195947 2438 | 62523661,4504900,26836799142 2439 | 62524646,4503876,46855501368 2440 | 62525011,4506072,06907397031 2441 | 62525327,4506092,03917296552 2442 | 62525586,4503723,27926997675 2443 | 62525664,4504150,20885799311 2444 | 62525666,4505987,06873149157 2445 | 62525746,4506057,04908098841 2446 | 62525914,4504195,12919999614 2447 | 62526165,4505297,24903949933 2448 | 62526181,4505543,08838499172 2449 | 62526562,4505765,08917596671 2450 | 62526938,4505705,01847399917 2451 | 62527119,4504687,29839898361 2452 | 62527186,4504644,18817099595 2453 | 62528182,4502129,21847296639 2454 | 62529117,4505300,23899097556 2455 | 62532061,4504650,30885799120 2456 | 62532207,4504290,30844098746 2457 | 62532818,4504509,11834999333 2458 | 62533988,4504094,16854998777 2459 | 62534683,4502097,29868298802 2460 | 62535289,4505392,16816299601 2461 | 62535961,4503748,19918999992 2462 | 62536455,4504722,30915596564 2463 | 62536497,4505827,02867797818 2464 | 62536783,4503847,13865896160 2465 | 62538327,4503856,29837896132 2466 | 62538428,4503897,57868500125 2467 | 62538908,4505983,08837498008 2468 | 62540821,4505059,31928996975 2469 | 62541459,4504299,28867298764 2470 | 62541700,4504156,23886196032 2471 | 62542266,4504145,13925799518 2472 | 62542967,4505336,21810299719 2473 | 62543055,4503807,12852049748 2474 | 62543074,4504301,43816900175 2475 | 62544331,4503920,20834996570 2476 | 62544338,4503974,13907099649 2477 | 62544381,4506217,08887498068 2478 | 62544663,4504581,27815597120 2479 | 62544869,4505859,07922548921 2480 | 62545185,4504392,20906698472 2481 | 62546302,4504621,24843448905 2482 | 62546450,4505911,09925399598 2483 | 62547010,4503953,18916997996 2484 | 62547672,4505542,04917298845 2485 | 62547731,4506208,01907799030 2486 | 62547748,4504535,31889398305 2487 | 62548015,4504669,25857799707 2488 | 62548690,4503929,30868598219 2489 | 62550158,4506094,06908898271 2490 | 62550429,4504579,24918899290 2491 | 62550931,4505060,12879697814 2492 | 62551146,4505455,08847596784 2493 | 62551447,4505090,27897099557 2494 | 62551492,4505178,29844099167 2495 | 62551519,4504279,11895896758 2496 | 62552038,4506291,03896298940 2497 | 62552256,4504408,11897698783 2498 | 62553244,4506198,02913349302 2499 | 62553646,4505317,54865501199 2500 | 62554019,4505665,05816599069 2501 | 62554932,4504948,12855095724 2502 | 62555418,4504572,19888097239 2503 | 62555552,4504412,22927098877 2504 | 62556227,4506348,04847396534 2505 | 62556373,4503666,26877399752 2506 | 62556829,4504890,13828498708 2507 | 62557351,4504172,29867198006 2508 | 62557429,4504259,30849198617 2509 | 62558406,4505764,01848198443 2510 | 62559157,4505177,55907800341 2511 | 62559393,4503939,10825199123 2512 | 62559630,4505741,09849599736 2513 | 62559889,4505366,17907098559 2514 | 62561499,4503806,21899198716 2515 | 62561623,4504617,23899099214 2516 | 62563165,4505943,09875395588 2517 | 62564182,4504471,17857399579 2518 | 62564375,4505070,27855296344 2519 | 62564427,4504864,12857798692 2520 | 62564554,4506281,09886997512 2521 | 62564646,4506120,08859798269 2522 | 62564779,4504874,11907896570 2523 | 62565167,4505932,06828498906 2524 | 62565316,4504695,21825398977 2525 | 62565671,4503722,17895899305 2526 | 62565891,4505677,05835197540 2527 | 62566073,4506312,02898998722 2528 | 62566420,4504507,16845197540 2529 | 62567086,4504014,16836599563 2530 | 62567313,4503978,21868298143 2531 | 62567566,4504448,26875598510 2532 | 62569281,4505006,24926398446 2533 | 62569406,4504474,30815999394 2534 | 62569551,4504623,18895499885 2535 | 62570172,4503958,28895298788 2536 | 62570892,4503921,19897398713 2537 | 62571680,4503758,48846500238 2538 | 62571983,4505979,09856697328 2539 | 62574812,4505113,14855897912 2540 | 62576481,4504289,21848899396 2541 | 62576935,4503845,17825598448 2542 | 62578033,4503888,20813749573 2543 | 62578072,4505362,25923248709 2544 | 62578728,4503846,19892848753 2545 | 62578941,4503899,28836897120 2546 | 62579525,4504153,31926299959 2547 | 62579606,4504398,29916697196 2548 | 62580087,4504070,14826296314 2549 | 62580203,4504364,22904999907 2550 | 62580405,4503980,28838699903 2551 | 62580857,4503992,17885899749 2552 | 62581051,4503752,15899699650 2553 | 62581421,4505484,04824699165 2554 | 62582118,4504486,24817099943 2555 | 62582461,4505558,05917897672 2556 | 62582801,4505940,08827798313 2557 | 62583413,4505291,56907800119 2558 | 62584701,4504930,28837997099 2559 | 62584970,4503684,30848199644 2560 | 62586220,4504825,30918697353 2561 | 62586465,4504042,20839299037 2562 | 62586925,4504135,29907796351 2563 | 62586941,4505135,25886195721 2564 | 62587449,4505400,07876397972 2565 | 62587675,4504526,24899397629 2566 | 62587686,4505333,11856499113 2567 | 62588015,4505292,12867396355 2568 | 62588161,4505547,03816896672 2569 | 62588609,4504980,11865099020 2570 | 62588791,4503955,14817999183 2571 | 62589737,4503976,12858596597 2572 | 62590409,4504724,30818798624 2573 | 62590595,4506362,02886199018 2574 | 62590826,4503749,26887198593 2575 | 62591406,4505352,28827897320 2576 | 62591535,4505250,28814697314 2577 | 62591624,4506085,09845896124 2578 | 62592863,4505067,23816396700 2579 | 62593201,4503746,62866902734 2580 | 62593299,4503809,16896698811 2581 | 62593641,4503931,24827798319 2582 | 62594342,4504866,14895696995 2583 | 62595522,4505337,15869499134 2584 | 62596146,4504854,14836095155 2585 | 62596350,4505614,09894797433 2586 | 62597195,4503745,14826096897 2587 | 62597301,4505779,09923749591 2588 | 62597516,4504248,29846899837 2589 | 62598310,4503999,11825197666 2590 | 62598546,4505843,09854399915 2591 | 62598563,4504850,20819096997 2592 | 62598866,4505420,02896794984 2593 | 62599908,4503862,28877299467 2594 | 62600699,4504439,26909197340 2595 | 62600973,4504803,30917698542 2596 | 62601167,4506006,04902749921 2597 | 62601464,4505548,06825196615 2598 | 62601662,4505142,24823049745 2599 | 62603376,4504556,10897199381 2600 | 62603500,4504896,31929397862 2601 | 62605710,4503969,14908797974 2602 | 62606289,4506013,03845897327 2603 | 62606555,4505071,13868399540 2604 | 62607990,4504267,29869299462 2605 | 62608096,4506280,07846996448 2606 | 62608544,4506184,09819697261 2607 | 62608950,4504783,30836698718 2608 | 62608951,4505077,21889574752 2609 | 62609498,4504072,30816597338 2610 | 62611144,4505702,01885097371 2611 | 62611227,4504781,17858898889 2612 | 62611318,4504622,22845096922 2613 | 62611624,4505994,05905398263 2614 | 62612204,4503716,28894996937 2615 | 62612251,4505074,26866497310 2616 | 62612337,4505588,07896198038 2617 | 62612909,4505599,07836098077 2618 | 62613102,4505683,04866497996 2619 | 62613189,4503892,17887597499 2620 | 62613201,4502540,25919774900 2621 | 62613323,4505937,04836396788 2622 | 62613485,4505952,02878798387 2623 | 62615521,4505229,18878599043 2624 | 62615626,4505373,27816397974 2625 | 62615916,4504875,14877298575 2626 | 62617080,4503669,24812549398 2627 | 62617717,4504010,25838199073 2628 | 62617768,4505053,29837896728 2629 | 62618297,4505722,06880698115 2630 | 62620609,4504427,22878697514 2631 | 62620972,4504107,29813148968 2632 | 62621093,4506316,09875398110 2633 | 62621291,4504928,25859299345 2634 | 62624604,4503985,20908699808 2635 | 62624869,4506246,04895099975 2636 | 62625329,4505627,01830198861 2637 | 62625713,4505774,09874798751 2638 | 62626240,4504268,12858497793 2639 | 62626843,4504594,29846897311 2640 | 62626844,4504324,19846499116 2641 | 62626867,4503962,10927698590 2642 | 62627823,4505753,01916396577 2643 | 62628102,4505411,06907299374 2644 | 62628115,4504358,54927000779 2645 | 62628164,4503988,15833447766 2646 | 62628575,4505797,09819898097 2647 | 62628677,4503786,28836699795 2648 | 62632293,4504430,10885498928 2649 | 62633132,4506359,06866797755 2650 | 62633520,4505179,13889497720 2651 | 62633721,4505878,06898799520 2652 | 62633989,4505876,03856996149 2653 | 62634461,4506310,01885599296 2654 | 62634883,4504024,19814196928 2655 | 62634911,4504295,12875799329 2656 | 62634965,4504633,15846597775 2657 | 62635735,4504139,14847296594 2658 | 62635763,4505206,22868798096 2659 | 62635777,4505561,09847099280 2660 | 62636030,4503932,28858897167 2661 | 62637162,4504576,17925595772 2662 | 62637728,4506239,01928499177 2663 | 62638377,4504421,10837198548 2664 | 62638453,4504241,21896294579 2665 | 62638816,4506066,06908497242 2666 | 62638917,4505807,01867697949 2667 | 62639650,4503996,14879699550 2668 | 62640199,4503825,26887799716 2669 | 62640527,4504720,13916297984 2670 | 62641532,4504166,13929499144 2671 | 62641612,4505327,22879899595 2672 | 62642292,4503831,25846496508 2673 | 62642352,4505272,11853847854 2674 | 62642722,4505422,06927797338 2675 | 62643328,4505928,05829098689 2676 | 62643669,4506178,06855398123 2677 | 62644466,4504944,22816695183 2678 | 62645511,4504998,31879498840 2679 | 62645864,4506151,02885296559 2680 | 62646405,4504677,17839599668 2681 | 62647569,4504008,16915799969 2682 | 62649737,4504718,17924696982 2683 | 62651152,4504154,20898398529 2684 | 62653224,4505028,21866997834 2685 | 62653368,4504226,54896101385 2686 | 62655214,4505824,07866197789 2687 | 62656213,4504194,29836498222 2688 | 62656563,4504837,27915897555 2689 | 62656716,4504016,19818699134 2690 | 62657331,4505473,05886299127 2691 | 62657906,4504307,25847198322 2692 | 62658502,4505149,29814897980 2693 | 62658793,4506099,08815599390 2694 | 62658903,4504620,23875899511 2695 | 62658956,4504425,26915599302 2696 | 62659427,4503800,11837299715 2697 | 62659798,4503703,31879199258 2698 | 62659844,4506075,03862649116 2699 | 62659955,4504223,21898398991 2700 | 62660301,4503900,22857896754 2701 | 62660346,4503866,14846799355 2702 | 62660886,4505225,24858699432 2703 | 62660938,4504112,19900199344 2704 | 62661256,4506117,01923349363 2705 | 62661535,4504629,16895096362 2706 | 62662528,4503902,19876895733 2707 | 62663220,4504569,14899499760 2708 | 62664035,4504028,29916997068 2709 | 62665760,4504610,12822949574 2710 | 62665935,4504855,18866896336 2711 | 62667417,4505321,20905895924 2712 | 62668076,4504210,16855399907 2713 | 62669111,4503828,21875997715 2714 | 62669631,4505173,22878999588 2715 | 62669816,4503778,31909698971 2716 | 62670401,4504286,21883348947 2717 | 62670843,4504561,27897095020 2718 | 62671101,4505311,28899498137 2719 | 62671723,4504201,27848698828 2720 | 62671894,4503878,17898299708 2721 | 62672458,4504234,15929097057 2722 | 62672466,4503785,25923248113 2723 | 62672522,4504723,13928499116 2724 | 62672623,4504810,19839197732 2725 | 62672820,4504200,20827899772 2726 | 62673356,4504346,14917797855 2727 | 62673952,4504500,22876995771 2728 | 62674399,4506148,04908798959 2729 | 62674614,4506212,01863547306 2730 | 62676026,4505656,01927498789 2731 | 62676070,4505252,19817598210 2732 | 62676217,4506225,07895797140 2733 | 62676713,4506364,08826699087 2734 | 62677189,4504849,13907499531 2735 | 62677845,4504356,23824596948 2736 | 62679513,4503850,24919999310 2737 | 62679899,4503763,21925996596 2738 | 62680609,4505256,30846098379 2739 | 62681254,4506028,06884599162 2740 | 62681454,4505754,04854299242 2741 | 62681789,4505003,22889499692 2742 | 62682342,4504699,21888096776 2743 | 62682497,4504739,22864898185 2744 | 62683162,4505347,14847298333 2745 | 62683507,4506224,06829698895 2746 | 62683665,4504207,28875798792 2747 | 62685188,4504312,15905797333 2748 | 62685220,4504140,16905398516 2749 | 62685464,4504991,12894899806 2750 | 62686500,4503540,04893548500 2751 | 62687298,4503810,28907797025 2752 | 62687663,4503877,30874597755 2753 | 62688750,4505196,26872549578 2754 | 62689346,4505073,24877998300 2755 | 62692777,4505472,08825796437 2756 | 62692879,4505819,06856898499 2757 | 62693099,4504573,54857400693 2758 | 62693919,4504678,14837597502 2759 | 62694967,4504812,10820899704 2760 | 62695267,4504216,23876797275 2761 | 62695783,4505412,02924398984 2762 | 62695938,4504188,17843846742 2763 | 62696172,4504591,31814398334 2764 | 62696327,4504006,11828096674 2765 | 62698379,4505304,28887296571 2766 | 62698412,4505386,21837398409 2767 | 62698895,4505096,13867999951 2768 | 62699439,4503661,22816796745 2769 | 62699837,4504355,16886999082 2770 | 62700292,4504891,24877098695 2771 | 62700643,4504269,28815598700 2772 | 62700970,4504372,17865997345 2773 | 62701032,4504004,15818398856 2774 | 62701053,4504271,31907496700 2775 | 62701115,4505222,14929199716 2776 | 62701479,4505014,23859297609 2777 | 62701768,4503784,10896997713 2778 | 62701806,4505706,23920099521 2779 | 62702019,4505390,19889098727 2780 | 62702171,4504544,19887797822 2781 | 62702385,4506142,04827398212 2782 | 62702470,4504921,10866798929 2783 | 62702491,4503751,30836198561 2784 | 62702595,4504615,12855497547 2785 | 62702765,4504779,11878398779 2786 | 62703024,4506266,09826298410 2787 | 62703174,4506186,06827096650 2788 | 62703611,4504062,20855496837 2789 | 62703872,4505108,17920198139 2790 | 62703941,4503698,29906699883 2791 | 62704185,4503704,15867096733 2792 | 62705136,4503989,15827498758 2793 | 62705215,4504082,24826097570 2794 | 62705284,4504431,12865699156 2795 | 62705467,4504924,62856900148 2796 | 62705732,4504597,20865597712 2797 | 62705785,4504996,25818397790 2798 | 62706306,4503966,11898099913 2799 | 62706466,4506155,07848399293 --------------------------------------------------------------------------------