From 143877ec3dd4e7a3966af51630bcfa0b62b5050c Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Tue, 20 Sep 2022 14:33:22 -0400 Subject: [PATCH] test: Use Playwright + agenda start/end dates fix (#4471) * test: agenda-neue - separate timezone controls assertions to allow retries * test: agenda-neue - use dom query selectors instead of first() / eq() * test: agenda-neue - playwright * test: fix playwright setup for ci * test: playwright - remove safari + fix timezone local * test: upload playwright report * test: playwright - fix trace upload * test * test: playwright - agenda search * test: fix startdate timezone * test: playwright - agenda table events * test: playwright - remove only filter * test: remove exit early flag * test: allow longer tests * test: agenda materials dialog * test: agenda filter by area/group * test: agenda calendar view * test: agenda settings * test: jump to day * test: fix agenda jump to day timezone parse * test: increase test timeout * test: remove fail fast * test: test sharding + increase delay * test: fixes * test: use macos image * test: fixes * test: agenda color assign + future + live meeting tests * test: agenda mobile tests * test: remainder of tests for playwright + optimizations * test: red line intersection accept close value * test: add delay for agenda search tests * chore: cleanup old tests + adapt build workflow * ci: fix build workflow * ci: fix build workflow order * fix: point to playwright floor plan images + readme --- .github/workflows/build.yml | 44 +- .pnp.cjs | 63 +- ...iltins-npm-5.0.1-6d4820dd76-66d204657f.zip | Bin 0 -> 2580 bytes ...gin-n-npm-15.2.5-1f66a5b3be-3be265957b.zip | Bin 0 -> 97649 bytes ...odule-npm-2.10.0-6dff9310aa-0f3f77811f.zip | Bin 0 -> 10302 bytes ...solve-npm-1.22.1-3980488690-07af5fc1e8.zip | Bin 0 -> 60488 bytes .../resolve-patch-46f9469d0d-5656f4d0be.zip | Bin 0 -> 61739 bytes client/App.vue | 4 - client/agenda/Agenda.vue | 6 +- client/agenda/AgendaSettings.vue | 20 +- client/agenda/FloorPlan.vue | 7 +- client/agenda/store.js | 9 +- cypress/e2e-legacy/meeting/agenda.cy.js | 94 - cypress/e2e/meeting/agenda-neue.cy.js | 1365 -- cypress/fixtures/agenda-113-data.json | 10281 -------------- cypress/fixtures/agenda-114-data.json | 11660 ---------------- dev/vite-plugins/serve-preview-assets.js | 2 +- package.json | 1 + playwright/.editorconfig | 6 + playwright/.eslintrc.js | 16 + playwright/.gitignore | 4 + playwright/README.md | 57 + .../data}/agenda-settings.json | 0 .../floor-plan-images/meeting-floor-1.png | Bin .../floor-plan-images/meeting-floor-2.png | Bin .../floor-plan-images/meeting-floor-3.png | Bin .../floor-plan-images/meeting-floor-4.jpg | Bin .../floor-plan-images/meeting-floor-5.jpg | Bin .../floor-plan-images/meeting-floor-6.jpg | Bin .../data}/meeting-floors.json | 0 playwright/helpers/common.js | 17 + .../helpers}/meeting.js | 127 +- playwright/helpers/viewports.js | 6 + playwright/package-lock.json | 4015 ++++++ playwright/package.json | 32 + playwright/playwright.config.js | 116 + playwright/tests/meeting/agenda.spec.js | 1427 ++ playwright/tests/meeting/floor-plan.spec.js | 129 + yarn.lock | 65 +- 39 files changed, 6065 insertions(+), 23508 deletions(-) create mode 100644 .yarn/cache/builtins-npm-5.0.1-6d4820dd76-66d204657f.zip create mode 100644 .yarn/cache/eslint-plugin-n-npm-15.2.5-1f66a5b3be-3be265957b.zip create mode 100644 .yarn/cache/is-core-module-npm-2.10.0-6dff9310aa-0f3f77811f.zip create mode 100644 .yarn/cache/resolve-npm-1.22.1-3980488690-07af5fc1e8.zip create mode 100644 .yarn/cache/resolve-patch-46f9469d0d-5656f4d0be.zip delete mode 100644 cypress/e2e-legacy/meeting/agenda.cy.js delete mode 100644 cypress/e2e/meeting/agenda-neue.cy.js delete mode 100644 cypress/fixtures/agenda-113-data.json delete mode 100644 cypress/fixtures/agenda-114-data.json create mode 100644 playwright/.editorconfig create mode 100644 playwright/.eslintrc.js create mode 100644 playwright/.gitignore create mode 100644 playwright/README.md rename {cypress/fixtures => playwright/data}/agenda-settings.json (100%) rename {cypress/fixtures => playwright/data}/floor-plan-images/meeting-floor-1.png (100%) rename {cypress/fixtures => playwright/data}/floor-plan-images/meeting-floor-2.png (100%) rename {cypress/fixtures => playwright/data}/floor-plan-images/meeting-floor-3.png (100%) rename {cypress/fixtures => playwright/data}/floor-plan-images/meeting-floor-4.jpg (100%) rename {cypress/fixtures => playwright/data}/floor-plan-images/meeting-floor-5.jpg (100%) rename {cypress/fixtures => playwright/data}/floor-plan-images/meeting-floor-6.jpg (100%) rename {cypress/fixtures => playwright/data}/meeting-floors.json (100%) create mode 100644 playwright/helpers/common.js rename {cypress/generators => playwright/helpers}/meeting.js (85%) create mode 100644 playwright/helpers/viewports.js create mode 100644 playwright/package-lock.json create mode 100644 playwright/package.json create mode 100644 playwright/playwright.config.js create mode 100644 playwright/tests/meeting/agenda.spec.js create mode 100644 playwright/tests/meeting/floor-plan.spec.js diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bcccd8e19..7bf30f077 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -171,42 +171,46 @@ jobs: name: coverage path: coverage.json - tests-cypress-modern: - name: Run Tests (Cypress - Modern) + tests-playwright: + name: Run Tests (Playwright) if: ${{ github.event.inputs.skiptests == 'false' }} needs: [prepare] runs-on: macos-latest + strategy: + fail-fast: false + matrix: + project: [chromium, firefox] steps: - uses: actions/checkout@v3 + - uses: actions/setup-node@v2 + with: + node-version: '18' + - name: Run all tests run: | echo "Installing dependencies..." yarn - echo "Start Vite Preview..." - yarn preview &>/dev/null & + echo "Installing Playwright..." + cd playwright + mkdir test-results + npm ci + npx playwright install --with-deps ${{ matrix.project }} echo "Running tests..." - yarn cypress + npx playwright test --project=${{ matrix.project }} - - name: Upload Video Recordings + - name: Upload Report uses: actions/upload-artifact@v3.0.0 if: ${{ always() }} continue-on-error: true with: - name: videos-modern - path: cypress/videos/ - - - name: Upload Screenshots - uses: actions/upload-artifact@v3.0.0 - if: ${{ always() }} - continue-on-error: true - with: - name: screenshots-modern - path: cypress/screenshots/ + name: playwright-results-${{ matrix.project }} + path: playwright/test-results/ + if-no-files-found: ignore - tests-cypress-legacy: - name: Run Tests (Cypress - Legacy) + tests-cypress: + name: Run Tests (Cypress) if: ${{ github.event.inputs.skiptests == 'false' }} needs: [prepare] runs-on: ubuntu-latest @@ -256,6 +260,7 @@ jobs: with: name: videos-legacy path: cypress/videos/ + if-no-files-found: ignore - name: Upload Screenshots uses: actions/upload-artifact@v3.0.0 @@ -264,6 +269,7 @@ jobs: with: name: screenshots-modern path: cypress/screenshots/ + if-no-files-found: ignore # ----------------------------------------------------------------- # RELEASE @@ -271,7 +277,7 @@ jobs: release: name: Make Release if: ${{ always() }} - needs: [tests-python, tests-cypress-modern, tests-cypress-legacy, prepare] + needs: [tests-python, tests-playwright, tests-cypress, prepare] runs-on: ubuntu-latest env: SHOULD_DEPLOY: ${{needs.prepare.outputs.should_deploy}} diff --git a/.pnp.cjs b/.pnp.cjs index 8e53e5359..fcbe4c67c 100644 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -61,6 +61,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["eslint-config-standard", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:17.0.0"],\ ["eslint-plugin-cypress", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.12.1"],\ ["eslint-plugin-import", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.26.0"],\ + ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:15.2.5"],\ ["eslint-plugin-node", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:11.1.0"],\ ["eslint-plugin-promise", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.0.1"],\ ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.4.0"],\ @@ -3095,10 +3096,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["builtins", [\ - ["npm:4.1.0", {\ - "packageLocation": "./.yarn/cache/builtins-npm-4.1.0-b8969ccdfe-3524f5a589.zip/node_modules/builtins/",\ + ["npm:5.0.1", {\ + "packageLocation": "./.yarn/cache/builtins-npm-5.0.1-6d4820dd76-66d204657f.zip/node_modules/builtins/",\ "packageDependencies": [\ - ["builtins", "npm:4.1.0"],\ + ["builtins", "npm:5.0.1"],\ ["semver", "npm:7.3.7"]\ ],\ "linkType": "HARD"\ @@ -4862,7 +4863,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/eslint-plugin-promise", null],\ ["eslint", "npm:8.23.0"],\ ["eslint-plugin-import", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.26.0"],\ - ["eslint-plugin-n", "virtual:5de208ba69f1abc06b9e76e02d4ce4fc49fcab4f9a21e07e70644bde43652129abc0a8d2e76e362701d48e3019da8bcf1b9d697031ba71659718edb10a775408#npm:15.2.0"],\ + ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:15.2.5"],\ ["eslint-plugin-promise", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.0.1"]\ ],\ "packagePeers": [\ @@ -4871,6 +4872,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "@types/eslint-plugin-promise",\ "@types/eslint",\ "eslint-plugin-import",\ + "eslint-plugin-n",\ "eslint-plugin-promise",\ "eslint"\ ],\ @@ -4962,10 +4964,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:5cccaf00e87dfff96dbbb5eaf7a3055373358b8114d6a1adfb32f54ed6b40ba06068d3aa1fdd8062899a0cad040f68c17cc6b72bac2cdbe9700f3d6330d112f3#npm:3.0.1", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-es-virtual-9a126af2f5/0/cache/eslint-plugin-es-npm-3.0.1-95e8015220-e57592c523.zip/node_modules/eslint-plugin-es/",\ + ["virtual:01ca464921c9b9f6f05ff324a93e38459f6f1b69ef551b0ff88f975ab15594aa2d383b8c5900d3e9ebd3f172ab1a572bfe06ea18bc9ed6aab7ddec552080fdee#npm:4.1.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-es-virtual-ecad70e987/0/cache/eslint-plugin-es-npm-4.1.0-a4cf26d3cd-26b87a216d.zip/node_modules/eslint-plugin-es/",\ "packageDependencies": [\ - ["eslint-plugin-es", "virtual:5cccaf00e87dfff96dbbb5eaf7a3055373358b8114d6a1adfb32f54ed6b40ba06068d3aa1fdd8062899a0cad040f68c17cc6b72bac2cdbe9700f3d6330d112f3#npm:3.0.1"],\ + ["eslint-plugin-es", "virtual:01ca464921c9b9f6f05ff324a93e38459f6f1b69ef551b0ff88f975ab15594aa2d383b8c5900d3e9ebd3f172ab1a572bfe06ea18bc9ed6aab7ddec552080fdee#npm:4.1.0"],\ ["@types/eslint", null],\ ["eslint", "npm:8.23.0"],\ ["eslint-utils", "npm:2.1.0"],\ @@ -4977,10 +4979,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["virtual:c8e07c2a6b56869a5a6a64a5a2bbfafd2756fdfec2e39799aafeb55edf967e3394125f03e2dbe23e573456f9dc23ed0ee125b7a467ac99d6b6dc124c1fb861dd#npm:4.1.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-es-virtual-2fffa83c77/0/cache/eslint-plugin-es-npm-4.1.0-a4cf26d3cd-26b87a216d.zip/node_modules/eslint-plugin-es/",\ + ["virtual:5cccaf00e87dfff96dbbb5eaf7a3055373358b8114d6a1adfb32f54ed6b40ba06068d3aa1fdd8062899a0cad040f68c17cc6b72bac2cdbe9700f3d6330d112f3#npm:3.0.1", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-es-virtual-9a126af2f5/0/cache/eslint-plugin-es-npm-3.0.1-95e8015220-e57592c523.zip/node_modules/eslint-plugin-es/",\ "packageDependencies": [\ - ["eslint-plugin-es", "virtual:c8e07c2a6b56869a5a6a64a5a2bbfafd2756fdfec2e39799aafeb55edf967e3394125f03e2dbe23e573456f9dc23ed0ee125b7a467ac99d6b6dc124c1fb861dd#npm:4.1.0"],\ + ["eslint-plugin-es", "virtual:5cccaf00e87dfff96dbbb5eaf7a3055373358b8114d6a1adfb32f54ed6b40ba06068d3aa1fdd8062899a0cad040f68c17cc6b72bac2cdbe9700f3d6330d112f3#npm:3.0.1"],\ ["@types/eslint", null],\ ["eslint", "npm:8.23.0"],\ ["eslint-utils", "npm:2.1.0"],\ @@ -5033,27 +5035,27 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["eslint-plugin-n", [\ - ["npm:15.2.0", {\ - "packageLocation": "./.yarn/cache/eslint-plugin-n-npm-15.2.0-669e8b723e-4303dea35a.zip/node_modules/eslint-plugin-n/",\ + ["npm:15.2.5", {\ + "packageLocation": "./.yarn/cache/eslint-plugin-n-npm-15.2.5-1f66a5b3be-3be265957b.zip/node_modules/eslint-plugin-n/",\ "packageDependencies": [\ - ["eslint-plugin-n", "npm:15.2.0"]\ + ["eslint-plugin-n", "npm:15.2.5"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:5de208ba69f1abc06b9e76e02d4ce4fc49fcab4f9a21e07e70644bde43652129abc0a8d2e76e362701d48e3019da8bcf1b9d697031ba71659718edb10a775408#npm:15.2.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-n-virtual-c8e07c2a6b/0/cache/eslint-plugin-n-npm-15.2.0-669e8b723e-4303dea35a.zip/node_modules/eslint-plugin-n/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:15.2.5", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-n-virtual-01ca464921/0/cache/eslint-plugin-n-npm-15.2.5-1f66a5b3be-3be265957b.zip/node_modules/eslint-plugin-n/",\ "packageDependencies": [\ - ["eslint-plugin-n", "virtual:5de208ba69f1abc06b9e76e02d4ce4fc49fcab4f9a21e07e70644bde43652129abc0a8d2e76e362701d48e3019da8bcf1b9d697031ba71659718edb10a775408#npm:15.2.0"],\ + ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:15.2.5"],\ ["@types/eslint", null],\ - ["builtins", "npm:4.1.0"],\ + ["builtins", "npm:5.0.1"],\ ["eslint", "npm:8.23.0"],\ - ["eslint-plugin-es", "virtual:c8e07c2a6b56869a5a6a64a5a2bbfafd2756fdfec2e39799aafeb55edf967e3394125f03e2dbe23e573456f9dc23ed0ee125b7a467ac99d6b6dc124c1fb861dd#npm:4.1.0"],\ + ["eslint-plugin-es", "virtual:01ca464921c9b9f6f05ff324a93e38459f6f1b69ef551b0ff88f975ab15594aa2d383b8c5900d3e9ebd3f172ab1a572bfe06ea18bc9ed6aab7ddec552080fdee#npm:4.1.0"],\ ["eslint-utils", "virtual:4ce1a8504abbef475a07bd77b2f33ca024b044ac2c2313238806e468cfc919e5b56d220f7037cae852750a0611def1618a4dcf884e6a3971f5446ffa4429df13#npm:3.0.0"],\ ["ignore", "npm:5.2.0"],\ - ["is-core-module", "npm:2.9.0"],\ + ["is-core-module", "npm:2.10.0"],\ ["minimatch", "npm:3.1.2"],\ - ["resolve", "patch:resolve@npm%3A1.22.0#~builtin::version=1.22.0&hash=07638b"],\ - ["semver", "npm:6.3.0"]\ + ["resolve", "patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b"],\ + ["semver", "npm:7.3.7"]\ ],\ "packagePeers": [\ "@types/eslint",\ @@ -6291,6 +6293,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["is-core-module", [\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/is-core-module-npm-2.10.0-6dff9310aa-0f3f77811f.zip/node_modules/is-core-module/",\ + "packageDependencies": [\ + ["is-core-module", "npm:2.10.0"],\ + ["has", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:2.9.0", {\ "packageLocation": "./.yarn/cache/is-core-module-npm-2.9.0-5ba77c35ae-b27034318b.zip/node_modules/is-core-module/",\ "packageDependencies": [\ @@ -8417,6 +8427,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["supports-preserve-symlinks-flag", "npm:1.0.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b", {\ + "packageLocation": "./.yarn/cache/resolve-patch-46f9469d0d-5656f4d0be.zip/node_modules/resolve/",\ + "packageDependencies": [\ + ["resolve", "patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b"],\ + ["is-core-module", "npm:2.10.0"],\ + ["path-parse", "npm:1.0.7"],\ + ["supports-preserve-symlinks-flag", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["resolve-from", [\ @@ -8528,6 +8548,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["eslint-config-standard", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:17.0.0"],\ ["eslint-plugin-cypress", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.12.1"],\ ["eslint-plugin-import", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.26.0"],\ + ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:15.2.5"],\ ["eslint-plugin-node", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:11.1.0"],\ ["eslint-plugin-promise", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.0.1"],\ ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.4.0"],\ diff --git a/.yarn/cache/builtins-npm-5.0.1-6d4820dd76-66d204657f.zip b/.yarn/cache/builtins-npm-5.0.1-6d4820dd76-66d204657f.zip new file mode 100644 index 0000000000000000000000000000000000000000..9c03e4748b77854a2b61300352cfa4cf612dc6e8 GIT binary patch literal 2580 zcmZ{mc{r5o8^^~o+7LCild;P(c9m>{u_qbZ8Jc7nW1ks~bwZXQ*_k0rNVb?Fi9^U* z%9bd~mTgL$82VXj)R{WRuaoO|-s^gw=a2jTUe9|!pXa^5a5ENG5a9dJtsLI}WAV?6 zgE3=qu4qRL&NaXX?WYLeGn99Cs7rvSkH05&Cx;oZ|A)M0-l$_JGXS8;3IKrj%sK0c zLSy~V4wgvoF(uHIjeDo5<-nH?PKu~RnLkJ#esbcFzE2x>gAyl->Nf_>bhfU>t$BUY&k0e&$~5PvmW7A%bubJbrXczOKEAH*~FF; zzfa@$CHa*OaeUHqADu5Yn%pc1dO^hd&V^+3E*x_S6gJctVlOauwO+;p`4&S|302*M zJ7cYBGgg{s9hR5z+8@ZxGOWRJoxs5^=cp;w81nq8DBU(OAb*`07?$I&0jEi~5> z;l(c9yV7Ro>&4GZG@4ZY^G;(uQMOARw1DF=oG`W z+{_yhnijOFbE&`6=+QS6wBTzztd9?G#tQshUvg8t$CFdlYF5k4xrZ8$lbE_HQZmlu z2#^U{PRJnSyqL@=2;jH?Kq7!egoAf`0-zH6$@Ju5t?n+AqOBAsi4DiCuI1u`Br6PZdFHB1sqhjCrc(tC(ALnkM>Oj8qRVr zaMM+~g0r2Z1QbhJm7k=;z7nza=GG!nL$^|6rc8tv3|Lbnu0iHAByBio7g-VQP37}< zGIL4H4;KJe8tJKY;NPh4VC!)7eET^Dwq-y7Kxj{FJ+ZFnUvb!Yj`Us81^YfwZjvgKp8Sx1h)3z8$fEari@sp;wW#f4 zO($Tnoi%>y4fk(D&BGkrH;t4+Xc?o?5lnAQZi!T~38c>Iz7p89WohOFzg{Xo8ZUJA zu?q9}KBeC%YK0;-MU<8jySWimZtSsSp7UV?YrHwLXDxrS}2Tn9ym1URr zzgW!MKkCzF^M*i{3CXU0h{wJawd>WF_2}Uo;NE=Kpb^A_Ct#n2#PFF8s@92}LcWDp zafcSw7+Q`|mg=oUz;jPOQ7&AO<@>mnq5gG^8j0XiK+H>c5SuY8N2I8{RDaX7t!$f2 z+(UnhPg6reZax7zah$Q|Q(%QR;=-|L`{uBiC5?K5cSpQ#IJ_xVU3-pp0W+00e?1KO z&0kf10xI6hOPk0W@mW|<(Cvwr2&;A3dO9wwmM$l6>^w#mbMLd_z8;;~;nCRMlVhH( z|32LQgWrPw_~-uH1otH=jnHFJiD4#`XuM-l=VE^P{e*^vL3*nzKF`M?T}-Ij25bBLTpXF<; zk{Y#inn6BQ>Evgc^t0SR?bHU^)S7%s37L8B#Bq^A1KXrTl;^7E64ZY$yrCjjO(j-1PAS3ZEiy+Tpx_+xQF z6`p?hfbwRhUn}(>Hfqp-Q6*Lu06=)pN?DC2c^n3Yr)9~F1Z}*{!?6*nlIp;R?n9A|io!3u zzvT0s$rwh6W_H$6IFp7POht{YP*H=ONWT6@MRS%_?*gG0f77FTVv<1z1wW;XcR{}?y2#Q_1O869jV<7 z;HMNX1F!$y&Q3ent+o3K|I{jAw3q+Z`uBz2t+yNWpL*SFd+Gfjd$<{p5d;9RF`fsE K+hX>^0saL^SSjfM literal 0 HcmV?d00001 diff --git a/.yarn/cache/eslint-plugin-n-npm-15.2.5-1f66a5b3be-3be265957b.zip b/.yarn/cache/eslint-plugin-n-npm-15.2.5-1f66a5b3be-3be265957b.zip new file mode 100644 index 0000000000000000000000000000000000000000..0c6488fb8a674d20400b156e650bf96fdb9ce5c4 GIT binary patch literal 97649 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%0D&_+=END+Q8LhP5i4O~+|TJfZjn#EC5ilsUZYR6 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 YNW;E_90&;Hmsbxo1cd1y>Kcgu2Pu=E9{>OV literal 0 HcmV?d00001 diff --git a/.yarn/cache/resolve-npm-1.22.1-3980488690-07af5fc1e8.zip b/.yarn/cache/resolve-npm-1.22.1-3980488690-07af5fc1e8.zip new file mode 100644 index 0000000000000000000000000000000000000000..d41402c877cb9f05ce5b88361eb7b95a49c9606f GIT binary patch literal 60488 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 Az5oCK literal 0 HcmV?d00001 diff --git a/.yarn/cache/resolve-patch-46f9469d0d-5656f4d0be.zip b/.yarn/cache/resolve-patch-46f9469d0d-5656f4d0be.zip new file mode 100644 index 0000000000000000000000000000000000000000..c3066c3608ab6c3d62067a9f634e131ed625de93 GIT binary patch literal 61739 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 DDR;UY literal 0 HcmV?d00001 diff --git a/client/App.vue b/client/App.vue index 7e9605bd5..79eae7404 100644 --- a/client/App.vue +++ b/client/App.vue @@ -24,10 +24,6 @@ const agendaStore = useAgendaStore() const appContainer = ref(null) -// INIT - -agendaStore.fetch() - // -------------------------------------------------------------------- // Handle browser resize // -------------------------------------------------------------------- diff --git a/client/agenda/Agenda.vue b/client/agenda/Agenda.vue index 6a9db7c67..38566739a 100644 --- a/client/agenda/Agenda.vue +++ b/client/agenda/Agenda.vue @@ -227,8 +227,8 @@ const titleExtra = computed(() => { return title }) const meetingDate = computed(() => { - const start = DateTime.fromISO(agendaStore.meeting.startDate).setZone(agendaStore.timezone) - const end = DateTime.fromISO(agendaStore.meeting.endDate).setZone(agendaStore.timezone) + const start = DateTime.fromISO(agendaStore.meeting.startDate, { zone: agendaStore.meeting.timezone }).setZone(agendaStore.timezone) + const end = DateTime.fromISO(agendaStore.meeting.endDate, { zone: agendaStore.meeting.timezone }).setZone(agendaStore.timezone) if (start.month === end.month) { return `${start.toFormat('MMMM d')} - ${end.toFormat('d, y')}` } else { @@ -353,6 +353,8 @@ onBeforeUnmount(() => { // MOUNTED onMounted(() => { + agendaStore.fetch(route.params.meetingNumber) + handleCurrentMeetingRedirect() // -> Hide Loading Screen diff --git a/client/agenda/AgendaSettings.vue b/client/agenda/AgendaSettings.vue index 3b51b56e9..c9fbd4dde 100644 --- a/client/agenda/AgendaSettings.vue +++ b/client/agenda/AgendaSettings.vue @@ -31,7 +31,7 @@ n-drawer(v-model:show='isShown', placement='right', :width='panelWidth') n-divider(title-placement='left') i.bi.bi-globe.me-2 small Timezone - n-button-group.mt-2(style='justify-content: stretch; width: 100%;') + n-button-group.mt-2#agenda-settings-tz-btn(style='justify-content: stretch; width: 100%;') n-button( style='flex-grow: 1;' :type='agendaStore.isTimezoneMeeting ? `primary` : `default`' @@ -47,7 +47,7 @@ n-drawer(v-model:show='isShown', placement='right', :width='panelWidth') :type='agendaStore.timezone === `UTC` ? `primary` : `default`' @click='setTimezone(`UTC`)' ) UTC - n-select.mt-2( + n-select.mt-2#agenda-settings-tz-ddn( v-model:value='agendaStore.timezone' :options='timezones' placeholder='Select Time Zone' @@ -61,7 +61,7 @@ n-drawer(v-model:show='isShown', placement='right', :width='panelWidth') //- .d-flex.align-items-center.mt-3 //- n-switch.me-3(v-model:value='agendaStore.listDayCollapse', disabled) //- span.small Collapse Days by Default - .d-flex.align-items-center.mt-3 + #agenda-settings-tgl-colorlgd.d-flex.align-items-center.mt-3 n-switch.me-3( v-model:value='agendaStore.colorLegendShown' aria-label='Display Color Legend' @@ -71,7 +71,7 @@ n-drawer(v-model:show='isShown', placement='right', :width='panelWidth') template(#trigger) i.bi.bi-info-circle span Only displayed when a color is assigned to at least 1 event. - .d-flex.align-items-center.mt-3 + #agenda-settings-tgl-infonote.d-flex.align-items-center.mt-3 n-switch.me-3( v-model:value='agendaStore.infoNoteShown' aria-label='Display Current Meeting Info Note' @@ -81,19 +81,19 @@ n-drawer(v-model:show='isShown', placement='right', :width='panelWidth') template(#trigger) i.bi.bi-info-circle span Any update to the note will result in this setting being turned back on. - .d-flex.align-items-center.mt-3 + #agenda-settings-tgl-eventicons.d-flex.align-items-center.mt-3 n-switch.me-3( v-model:value='agendaStore.eventIconsShown' aria-label='Display Event Icons' ) span.small Display Event Icons - .d-flex.align-items-center.mt-3 + #agenda-settings-tgl-floorind.d-flex.align-items-center.mt-3 n-switch.me-3( v-model:value='agendaStore.floorIndicatorsShown' aria-label='Display Floor Indicators' ) span.small Display Floor Indicators - .d-flex.align-items-center.mt-3 + #agenda-settings-tgl-groupind.d-flex.align-items-center.mt-3 n-switch.me-3( v-model:value='agendaStore.areaIndicatorsShown' aria-label='Display Group Area Indicators' @@ -103,7 +103,7 @@ n-drawer(v-model:show='isShown', placement='right', :width='panelWidth') template(#trigger) i.bi.bi-info-circle span Will not be shown on smaller screens, regardless of this setting. - .d-flex.align-items-center.mt-3 + #agenda-settings-tgl-redline.d-flex.align-items-center.mt-3 n-switch.me-3( v-model:value='agendaStore.redhandShown' aria-label='Display Realtime Red Line' @@ -113,7 +113,7 @@ n-drawer(v-model:show='isShown', placement='right', :width='panelWidth') template(#trigger) i.bi.bi-info-circle span Only shown during live events. Updated every 5 seconds. - .d-flex.align-items-center.mt-3 + #agenda-settings-tgl-boldertxt.d-flex.align-items-center.mt-3 n-switch.me-3( v-model:value='agendaStore.bolderText' aria-label='Use Bolder Text' @@ -140,7 +140,7 @@ n-drawer(v-model:show='isShown', placement='right', :width='panelWidth') n-divider#agenda-settings-colors-header(title-placement='left') i.bi.bi-palette.me-2 small Custom Colors / Tags - .d-flex.align-items-center.mt-3(v-for='(cl, idx) of state.colors') + .agenda-settings-colors-row.d-flex.align-items-center.mt-3(v-for='(cl, idx) of state.colors') n-color-picker.me-3( :modes='[`hex`]' :render-label='() => {}' diff --git a/client/agenda/FloorPlan.vue b/client/agenda/FloorPlan.vue index a345befa5..f10522396 100644 --- a/client/agenda/FloorPlan.vue +++ b/client/agenda/FloorPlan.vue @@ -216,10 +216,9 @@ onBeforeUnmount(() => { // MOUNTED onMounted(() => { - // -> Go to current meeting if not provided - if (!route.params.meetingNumber && agendaStore.meeting.number) { - router.replace({ params: { meetingNumber: agendaStore.meeting.number } }) - } + agendaStore.fetch(route.params.meetingNumber) + + handleCurrentMeetingRedirect() // -> Hide Loading Screen if (agendaStore.isLoaded) { diff --git a/client/agenda/store.js b/client/agenda/store.js index 932c29475..42b523877 100644 --- a/client/agenda/store.js +++ b/client/agenda/store.js @@ -133,11 +133,14 @@ export const useAgendaStore = defineStore('agenda', { } }, actions: { - async fetch () { + async fetch (meetingNumber) { try { - const meetingData = JSON.parse(document.getElementById('meeting-data').textContent) + if (!meetingNumber) { + const meetingData = JSON.parse(document.getElementById('meeting-data').textContent) + meetingNumber = meetingData.meetingNumber + } - const resp = await fetch(`/api/meeting/${meetingData.meetingNumber}/agenda-data`, { credentials: 'omit' }) + const resp = await fetch(`/api/meeting/${meetingNumber}/agenda-data`, { credentials: 'omit' }) if (!resp.ok) { throw new Error(resp.statusText) } diff --git a/cypress/e2e-legacy/meeting/agenda.cy.js b/cypress/e2e-legacy/meeting/agenda.cy.js deleted file mode 100644 index 0074ac501..000000000 --- a/cypress/e2e-legacy/meeting/agenda.cy.js +++ /dev/null @@ -1,94 +0,0 @@ -describe('meeting agenda', () => { - before(() => { - cy.visit('/meeting/113/agenda/') - }) - - it('toggle customize panel when clicking on customize header bar', () => { - cy.get('#agenda-filter-customize').click() - cy.get('#customize').should('be.visible').and('have.class', 'show') - - cy.get('#agenda-filter-customize').click() - cy.get('#customize').should('not.be.visible').and('not.have.class', 'show') - }) - - it('customize panel should have at least 3 areas', () => { - cy.get('#agenda-filter-customize').click() - cy.get('.agenda-filter-areaselectbtn').should('have.length.at.least', 3) - }) - - it('customize panel should have at least 10 groups', () => { - cy.get('.agenda-filter-groupselectbtn').should('have.length.at.least', 10) - }) - - it('filtering the agenda should modify the URL', () => { - cy.get('.agenda-filter-groupselectbtn').take(5).as('selectedGroups').each(randomElement => { - cy.wrap(randomElement).click() - cy.wrap(randomElement).invoke('attr', 'data-filter-item').then(keyword => { - cy.url().should('contain', keyword) - }) - }) - - // Deselect everything - cy.get('@selectedGroups').click({ multiple: true }) - }) - - it('selecting an area should select all corresponding groups', () => { - cy.get('.agenda-filter-areaselectbtn').first().click().invoke('attr', 'data-filter-item').then(area => { - cy.url().should('contain', area) - - cy.get(`.agenda-filter-groupselectbtn[data-filter-keywords*="${area}"]`).each(group => { - cy.wrap(group).invoke('attr', 'data-filter-keywords').then(groupKeywords => { - // In case value is a comma-separated list of keywords... - if (groupKeywords.indexOf(',') < 0 || groupKeywords.split(',').includes(area)) { - cy.wrap(group).should('have.class', 'active') - } - }) - }) - }) - }) - - it('weekview iframe should load', () => { - cy.get('#weekview > iframe').its('0.contentDocument').should('exist') - cy.get('#weekview > iframe').its('0.contentDocument.readyState').should('equal', 'complete') - cy.get('#weekview > iframe').its('0.contentDocument.body', { - timeout: 30000 - }).should('not.be.empty') - }) -}) - -describe('meeting agenda weekview', () => { - before(() => { - cy.visit('/meeting/113/agenda/week-view.html') - }) - it('should have day headers', () => { - cy.get('.agenda-weekview-day').should('have.length.greaterThan', 0).and('be.visible') - }) - it('should have day columns', () => { - cy.get('.agenda-weekview-column').should('have.length.greaterThan', 0).and('be.visible') - }) - - it('should have the same number of day headers and columns', () => { - cy.get('.agenda-weekview-day').its('length').then(lgth => { - cy.get('.agenda-weekview-column').should('have.length', lgth) - }) - }) - - it('should have meetings', () => { - cy.get('.agenda-weekview-meeting').should('have.length.greaterThan', 0).and('be.visible') - }) - - it('meeting hover should cause expansion to column width', () => { - cy.get('.agenda-weekview-column:first').invoke('outerWidth').then(colWidth => { - /* eslint-disable cypress/no-unnecessary-waiting */ - cy.get('.agenda-weekview-meeting-mini').any(5).each(meeting => { - cy.wrap(meeting) - .wait(250) - .realHover({ position: 'center' }) - .invoke('outerWidth') - .should('be.closeTo', colWidth, 1) - // Move over to top left corner of the page to end the mouseover of the current meeting block - cy.get('.agenda-weekview-day:first').realHover().wait(250) - }) - }) - }) -}) diff --git a/cypress/e2e/meeting/agenda-neue.cy.js b/cypress/e2e/meeting/agenda-neue.cy.js deleted file mode 100644 index 40187e7b5..000000000 --- a/cypress/e2e/meeting/agenda-neue.cy.js +++ /dev/null @@ -1,1365 +0,0 @@ -import { DateTime } from 'luxon' -import path from 'path' -import { find, first, isEqual, times } from 'lodash-es' -import { faker } from '@faker-js/faker' -import slugify from 'slugify' -import meetingGenerator from '../../generators/meeting' - -const xslugify = (str) => slugify(str.replace('/', '-'), { lower: true, strict: true }) - -const TEST_SEED = 123 - -const viewports = { - desktop: [1536, 960], - smallDesktop: [1280, 800], - tablet: [768, 1024], - mobile: [360, 760] -} - -// Set randomness seed -faker.seed(TEST_SEED) - -/** - * Inject meeting info json into the page - * - * @param {*} win Window Object - * @param {*} meetingNumber Meeting Number - */ -function injectMeetingData (win, meetingNumber) { - const meetingDataScript = win.document.createElement('script') - meetingDataScript.id = 'meeting-data' - meetingDataScript.type = 'application/json' - meetingDataScript.innerHTML = `{"meetingNumber": "${meetingNumber}"}` - win.document.querySelector('head').appendChild(meetingDataScript) -} - -/** - * Format URL by replacing inline variables - * - * @param {String} url Raw URL - * @param {Object} session Session Object - * @param {String} meetingNumber Meeting Number - * @returns Formatted URL - */ -function formatLinkUrl (url, session, meetingNumber) { - return url ? url.replace('{meeting.number}', meetingNumber) - .replace('{group.acronym}', session.groupAcronym) - .replace('{short}', session.short) - .replace('{order_number}', session.orderInMeeting) : url -} - -/** - * Find the first URL in text matching a conference domain - * - * @param {String} txt Raw Text - * @returns First URL found - */ -function findFirstConferenceUrl (txt) { - try { - const fUrl = txt.match(urlRe) - if (fUrl && fUrl[0].length > 0) { - const pUrl = new URL(fUrl[0]) - if (conferenceDomains.some(d => pUrl.hostname.endsWith(d))) { - return fUrl[0] - } - } - } catch (err) { } - return null -} - -// ==================================================================== -// AGENDA-NEUE (past meeting) | DESKTOP viewport -// ==================================================================== - -describe('meeting -> agenda-neue [past, desktop]', { - viewportWidth: viewports.desktop[0], - viewportHeight: viewports.desktop[1] - }, () => { - let meetingData = null - - before(() => { - // Set clock to 2022-02-01 (month is 0-indexed) - cy.clock(new Date(2022, 1, 1)) - - // Generate meeting data - meetingData = meetingGenerator.generateAgendaResponse({ dateMode: 'past' }) - - // Intercept Meeting Data API - cy.intercept('GET', `/api/meeting/${meetingData.meeting.number}/agenda-data`, { body: meetingData }).as('getMeetingData') - - // Visit agenda page - cy.visit(`/meeting/${meetingData.meeting.number}/agenda-neue`, { - onBeforeLoad: (win) => { injectMeetingData(win, meetingData.meeting.number) } - }) - cy.wait('@getMeetingData') - - // Fix scroll behavior - // See https://github.com/cypress-io/cypress/issues/3200 - cy.document().then(document => { - const htmlElement = document.querySelector('html') - if (htmlElement) { - htmlElement.style.scrollBehavior = 'inherit' - } - }) - }) - - // -> HEADER - - it(`has IETF 123 title`, () => { - cy.get('.agenda h1').first().contains(`IETF ${meetingData.meeting.number} Meeting Agenda`) - - // Take a snapshot for visual diffing - cy.percySnapshot('meeting -> agenda-neue [past, desktop]', { widths: [viewports.desktop[0]] }) - }) - it(`has meeting city subtitle`, () => { - cy.get('.agenda h4').first().contains(meetingData.meeting.city) - }) - it(`has meeting date subtitle`, () => { - cy.get('.agenda h4').first().contains(/[a-zA-Z] [0-9]{1,2} - ([a-zA-Z]+ )?[0-9]{1,2}, [0-9]{4}/i) - }) - it(`has meeting last updated datetime`, () => { - const updatedDateTime = DateTime.fromISO(meetingData.meeting.updated).setZone(meetingData.meeting.timezone).toFormat(`DD 'at' tt ZZZZ`) - cy.get('.agenda h6').first().contains(updatedDateTime) - }) - - // -> NAV - - it(`has the correct navigation items`, () => { - cy.get('.agenda .meeting-nav > li').should('have.length', 3) - cy.get('.agenda .meeting-nav > li').first().contains('Agenda') - cy.get('.agenda .meeting-nav > li').eq(1).contains('Floor plan') - cy.get('.agenda .meeting-nav > li').last().contains('Plaintext') - }) - it(`has the Settings button on the right`, () => { - cy.get('.agenda .meeting-nav').next('button').should('exist') - .and('include.text', 'Settings') - cy.window().then(win => { - cy.get('.agenda .meeting-nav').next('button').then(el => { - const btnBounds = el[0].getBoundingClientRect() - expect(btnBounds.x).to.be.greaterThan(win.innerWidth - btnBounds.width - 100) - }) - }) - }) - - // -> SCHEDULE LIST -> Header - - it(`has schedule list title`, () => { - cy.get('.agenda h2').first().contains(`Schedule`) - }) - it(`has info note`, () => { - cy.get('.agenda .agenda-infonote').should('exist').and('include.text', meetingData.meeting.infoNote) - }) - it(`info note can be dismissed / reopened`, () => { - cy.get('.agenda .agenda-infonote > button').click() - cy.get('.agenda .agenda-infonote').should('not.exist') - cy.get('.agenda h2').first().next('button').should('exist') - cy.get('.agenda h2').first().next('button').click() - cy.get('.agenda .agenda-infonote').should('exist') - cy.get('.agenda h2').first().next('button').should('not.exist') - }) - it(`has timezone selector`, () => { - cy.get('.agenda .agenda-tz-selector').should('exist') - cy.get('.agenda .agenda-tz-selector').prev().should('exist').and('include.text', 'Timezone:').prev('.bi').should('exist') - cy.get('.agenda .agenda-tz-selector > button').should('have.length', 3) - cy.get('.agenda .agenda-tz-selector > button').first().contains('Meeting') - cy.get('.agenda .agenda-tz-selector > button').eq(1).contains('Local') - cy.get('.agenda .agenda-tz-selector > button').last().contains('UTC') - cy.get('.agenda .agenda-timezone-ddn').should('exist') - }) - it.skip('can change timezone', () => { - // Switch to local timezone - cy.get('.agenda .agenda-tz-selector > button').eq(1).click().should('have.class', 'n-button--primary-type') - .prev('button').should('not.have.class', 'n-button--primary-type') - const localDateTime = DateTime.fromISO(meetingData.meeting.updated).setZone('local').toFormat(`DD 'at' tt ZZZZ`) - cy.get('.agenda h6').first().contains(localDateTime) - // Switch to UTC - cy.get('.agenda .agenda-tz-selector > button').last().click().should('have.class', 'n-button--primary-type') - .prev('button').should('not.have.class', 'n-button--primary-type') - const utcDateTime = DateTime.fromISO(meetingData.meeting.updated).setZone('utc').toFormat(`DD 'at' tt ZZZZ`) - cy.get('.agenda h6').first().contains(utcDateTime) - cy.get('.agenda .agenda-timezone-ddn').contains('UTC') - // Switch back to meeting timezone - cy.get('.agenda .agenda-tz-selector > button').first().click().should('have.class', 'n-button--primary-type') - cy.get('.agenda .agenda-timezone-ddn').contains('Tokyo') - }) - - // -> SCHEDULE LIST -> Table Headers - - it('has schedule list table headers', () => { - // Table Headers - cy.get('.agenda-table-head-time').should('exist').and('contain', 'Time') - cy.get('.agenda-table-head-location').should('exist').and('contain', 'Location') - cy.get('.agenda-table-head-event').should('exist').and('contain', 'Event') - // Day Headers - cy.get('.agenda-table-display-day').should('have.length', 7).each((el, idx) => { - const localDateTime = DateTime.fromISO(meetingData.meeting.startDate).setZone('local').plus({ days: idx }).toLocaleString(DateTime.DATE_HUGE) - cy.wrap(el).should('contain', localDateTime) - }) - }) - - // -> SCHEDULE LIST -> Table Events - - it('has schedule list table events (can take a while)', { - // This test is VERY memory-intensive, so disable DOM snapshots to prevent browser crash - numTestsKeptInMemory: 0 - }, () => { - let isFirstSession = true - cy.get('tr.agenda-table-display-event').should('have.length', meetingData.schedule.length).each((el, idx) => { - // Apply small arbitrary wait every 10 rows to prevent the test UI from freezing - if (idx % 10 === 0) { - // eslint-disable-next-line cypress/no-unnecessary-waiting - cy.wait(10) - } - const event = meetingData.schedule[idx] - const eventStart = DateTime.fromISO(event.startDateTime) - const eventEnd = eventStart.plus({ seconds: event.duration }) - const eventTimeSlot = `${eventStart.toFormat('HH:mm')} - ${eventEnd.toFormat('HH:mm')}` - // -------- - // Location - // -------- - if (event.location?.short) { - // Has floor badge - cy.wrap(el).find('.agenda-table-cell-room > a').should('contain', event.room) - .and('have.attr', 'href', `/meeting/` + meetingData.meeting.number + `/floor-plan-neue?room=` + xslugify(event.room)) - .prev('.badge').should('contain', event.location.short) - } else { - // No floor badge - cy.wrap(el).find('.agenda-table-cell-room > span:not(.badge)').should('contain', event.room) - .prev('.badge').should('not.exist') - } - // --------------------------------------------------- - // Type-specific timeslot / group / name columns tests - // --------------------------------------------------- - if (event.type === 'regular') { - // First session should have header row above it - if (isFirstSession) { - cy.wrap(el).prev('tr.agenda-table-display-session-head').should('exist') - .find('.agenda-table-cell-ts').should('contain', eventTimeSlot) - .next('.agenda-table-cell-name').should('contain', `${DateTime.fromISO(event.startDateTime).toFormat('cccc')} ${event.name}`) - } - // Timeslot - cy.wrap(el).find('.agenda-table-cell-ts').should('contain', '—') - // Group Acronym + Parent - cy.wrap(el).find('.agenda-table-cell-group > .badge').should('contain', event.groupParent.acronym) - .next('a').should('contain', event.acronym).and('have.attr', 'href', `/group/` + event.acronym + `/about/`) - // Group Name - cy.wrap(el).find('.agenda-table-cell-name').should('contain', event.groupName) - isFirstSession = false - } else { - // Timeslot - cy.wrap(el).find('.agenda-table-cell-ts').should('contain', eventTimeSlot) - // Event Name - cy.wrap(el).find('.agenda-table-cell-name').should('contain', event.name) - isFirstSession = true - } - // ----------- - // Name column - // ----------- - // Event icon - if (['break', 'plenary'].includes(event.type) || (event.type === 'other' && ['office hours', 'hackathon'].some(s => event.name.toLowerCase().indexOf(s) >= 0))) { - cy.wrap(el).find('.agenda-table-cell-name > i.bi').should('exist') - } - // Name link - if (event.flags.agenda) { - cy.wrap(el).find('.agenda-table-cell-name > a').should('have.attr', 'href', event.agenda.url) - } - // BoF badge - if (event.isBoF) { - cy.wrap(el).find('.agenda-table-cell-name > .badge').should('contain', 'BoF') - } - // Note - if (event.note) { - cy.wrap(el).find('.agenda-table-cell-name > .agenda-table-note').should('exist') - .find('i.bi').should('exist') - .next('span').should('contain', event.note) - } - // ----------------------- - // Buttons / Status Column - // ----------------------- - switch (event.status) { - // Cancelled - case 'canceled': { - cy.wrap(el).find('.agenda-table-cell-links > .badge.is-cancelled').should('contain', 'Cancelled') - break - } - // Rescheduled - case 'resched': { - cy.wrap(el).find('.agenda-table-cell-links > .badge.is-rescheduled').should('contain', 'Rescheduled') - break - } - // Scheduled - case 'sched': { - if (event.flags.showAgenda || ['regular', 'plenary'].includes(event.type)) { - cy.wrap(el).find('.agenda-table-cell-links > .agenda-table-cell-links-buttons').as('eventbuttons') - if (event.flags.agenda) { - // Show meeting materials button - cy.get('@eventbuttons').find('i.bi.bi-collection').should('exist') - // ZIP materials button - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-tar`).should('have.attr', 'href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.tgz`) - .children('i.bi').should('exist') - // PDF materials button - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-pdf`).should('have.attr', 'href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.pdf`) - .children('i.bi').should('exist') - } else if (event.type === 'regular') { - // No meeting materials yet warning badge - cy.get('@eventbuttons').find('.no-meeting-materials').should('exist') - } - // Notepad button - const hedgeDocLink = `https://notes.ietf.org/notes-ietf-${meetingData.meeting.number}-${event.type === 'plenary' ? 'plenary' : event.acronym}` - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-note`).should('have.attr', 'href', hedgeDocLink) - .children('i.bi').should('exist') - // Chat logs - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-logs`).should('have.attr', 'href', event.links.chatArchive) - .children('i.bi').should('exist') - // Recordings - for (const rec of event.links.recordings) { - if (rec.url.indexOf('audio') > 0) { - // -> Audio - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-audio-${rec.id}`).should('have.attr', 'href', rec.url) - .children('i.bi').should('exist') - } else if (rec.url.indexOf('youtu') > 0) { - // -> Youtube - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-youtube-${rec.id}`).should('have.attr', 'href', rec.url) - .children('i.bi').should('exist') - } else { - // -> Others - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-video-${rec.id}`).should('have.attr', 'href', rec.url) - .children('i.bi').should('exist') - } - } - // Video Stream - if (event.links.videoStream) { - const videoStreamLink = `https://www.meetecho.com/ietf${meetingData.meeting.number}/recordings#${event.acronym.toUpperCase()}` - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-rec`).should('have.attr', 'href', videoStreamLink) - .children('i.bi').should('exist') - } - } else { - cy.wrap(el).find('.agenda-table-cell-links > .agenda-table-cell-links-buttons').should('not.exist') - } - break - } - } - }) - }) - - // -> SCHEDULE LIST -> Search - - it('can search meetings', { - // No need to keep DOM snapshots for this test - numTestsKeptInMemory: 0 - }, () => { - cy.get('.agenda-table > .agenda-table-search > button').click() - cy.get('.agenda-search').should('exist').and('be.visible') - const event = find(meetingData.schedule, s => s.type === 'regular') - const eventWithNote = find(meetingData.schedule, s => s.note) - // Search different terms - const searchTerms = [ - 'hack', // Should match hackathon events - event.groupAcronym, // Match group name - event.room.toLowerCase(), // Match room name - eventWithNote.note.substring(0, 10).toLowerCase() // Match partial note - ] - for (const term of searchTerms) { - cy.get('.agenda-search input[type=text]').clear().type(term) - cy.get('.agenda-table .agenda-table-display-event').should('have.length.lessThan', meetingData.schedule.length) - // Let the UI update before checking each displayed row - // eslint-disable-next-line cypress/no-unnecessary-waiting - cy.wait(1000) - cy.get('.agenda-table .agenda-table-display-event').each((el, idx) => { - cy.wrap(el).contains(term, { matchCase: false }) - }) - } - // Clear button - cy.get('.agenda-search button').click() - cy.get('.agenda-search input[type=text]').should('have.value', '') - cy.get('.agenda-table .agenda-table-display-event').should('have.length', meetingData.schedule.length) - // Invalid search - cy.get('.agenda-search input[type=text]').type(faker.vehicle.vin()) - cy.get('.agenda-table .agenda-table-display-event').should('have.length', 0) - cy.get('.agenda-table .agenda-table-display-noresult').should('exist').and('contain', 'No event matching your search query.') - // Closing search should clear search - cy.get('.agenda-table > .agenda-table-search > button').click() - cy.get('.agenda-search').should('not.exist') - cy.get('.agenda-table .agenda-table-display-event').should('have.length', meetingData.schedule.length) - }) - - // -> SCHEDULE LIST -> Show Meeting Materials dialog - - it('can show meeting materials dialog', () => { - const event = find(meetingData.schedule, s => s.flags.showAgenda && s.flags.agenda) - const eventStart = DateTime.fromISO(event.startDateTime) - const eventEnd = eventStart.plus({ seconds: event.duration }) - // Intercept meeting materials request - const materialsUrl = (new URL(event.agenda.url)).pathname - const materialsInfo = { - url: event.agenda.url, - slides: times(5, idx => ({ - id: 100000 + idx, - title: faker.commerce.productName(), - url: `/meeting/${meetingData.meeting.number}/materials/slides-${meetingData.meeting.number}-${event.acronym}-${faker.internet.domainWord()}`, - ext: ['pdf', 'html', 'md', 'txt', 'pptx'][idx] - })), - minutes: { - ext: 'md', - id: 123456, - title: 'Minutes IETF123 Testing', - url: `/meeting/${meetingData.meeting.number}/materials/minutes-${meetingData.meeting.number}-${event.acronym}-${faker.internet.domainWord()}` - } - } - cy.intercept('GET', `/api/meeting/session/${event.sessionId}/materials`, { body: materialsInfo }).as('getMaterialsInfo') - cy.intercept('GET', materialsUrl, { body: 'The internet is a series of tubes.' }).as('getMaterialsText') - cy.intercept('GET', materialsInfo.minutes.url, { body: 'One does not simply walk into mordor.' }).as('getMaterialsMinutes') - // Open dialog - cy.get(`#agenda-rowid-${event.id}`).find(`#btn-lnk-${event.id}-mat`).click() - cy.get('.agenda-eventdetails').should('exist').and('be.visible') - cy.wait('@getMaterialsText') - // Header - cy.get('.agenda-eventdetails .n-card-header__main > .detail-header > .bi').should('exist') - .next('span').should('contain', eventStart.toFormat('DDDD')) - cy.get('.agenda-eventdetails .n-card-header__extra > .detail-header > .bi').should('exist') - .next('strong').should('contain', `${eventStart.toFormat('T')} - ${eventEnd.toFormat('T')}`) - cy.get('.agenda-eventdetails .detail-title > h6 > .bi').should('exist') - .next('span').should('contain', event.name) - cy.get('.agenda-eventdetails .detail-location > .bi').should('exist') - .next('.badge').should('contain', event.location.short) - .next('span').should('contain', event.room) - // Navigation - cy.get('.agenda-eventdetails .detail-nav > a').should('have.length', 3) - .first().should('have.class', 'active') - .nextAll().should('not.have.class', 'active') - // Agenda Tab - cy.get('.agenda-eventdetails .detail-text > iframe').should('have.attr', 'src', materialsUrl) - // Slides Tab - cy.get('.agenda-eventdetails .detail-nav > a').eq(1).click() - .should('have.class', 'active') - .siblings('a').should('not.have.class', 'active') - cy.get('.agenda-eventdetails .detail-text > .list-group > .list-group-item').should('have.length', materialsInfo.slides.length).each((el, idx) => { - cy.wrap(el).should('have.attr', 'href', materialsInfo.slides[idx].url) - .children('.bi').should('have.class', `bi-filetype-${materialsInfo.slides[idx].ext}`) - .next('span').should('contain', materialsInfo.slides[idx].title) - }) - // Minutes Tab - cy.get('.agenda-eventdetails .detail-nav > a').eq(2).click() - .should('have.class', 'active') - .prevAll('a').should('not.have.class', 'active') - cy.wait('@getMaterialsMinutes') - cy.get('.agenda-eventdetails .detail-text > iframe').should('have.attr', 'src', materialsInfo.minutes.url) - // Footer Buttons - const hedgeDocLink = `https://notes.ietf.org/notes-ietf-${meetingData.meeting.number}-${event.type === 'plenary' ? 'plenary' : event.acronym}` - cy.get('.agenda-eventdetails .detail-action > a').should('have.length', 3) - .first().should('contain', 'Download as tarball').should('have.attr', 'href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.tgz`) - .next().should('contain', 'Download as PDF').should('have.attr', 'href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.pdf`) - .next().should('contain', 'Notepad').should('have.attr', 'href', hedgeDocLink) - // Clicking X should close the dialog - cy.get('.agenda-eventdetails .n-card-header__extra > .detail-header > button').click() - }) - - // -> SCHEDULE LIST -> Show Meeting Materials dialog (EMPTY VARIANT) - - it('can show meeting materials dialog (empty variant)', () => { - const event = find(meetingData.schedule, s => s.flags.showAgenda && s.flags.agenda) - // Intercept meeting materials request - const materialsUrl = (new URL(event.agenda.url)).pathname - const materialsInfo = { - url: event.agenda.url, - slides: [], - minutes: null - } - cy.intercept('GET', `/api/meeting/session/${event.sessionId}/materials`, { body: materialsInfo }).as('getMaterialsInfo') - cy.intercept('GET', materialsUrl, { body: 'The internet is a series of tubes.' }).as('getMaterialsText') - // Open dialog - cy.get(`#agenda-rowid-${event.id}`).find(`#btn-lnk-${event.id}-mat`).click() - cy.get('.agenda-eventdetails').should('exist').and('be.visible') - cy.wait('@getMaterialsText') - // Slides Tab - cy.get('.agenda-eventdetails .detail-nav > a').eq(1).click() - cy.get('.agenda-eventdetails .detail-text').should('contain', 'No slides submitted for this session.') - // Minutes Tab - cy.get('.agenda-eventdetails .detail-nav > a').eq(2).click() - cy.get('.agenda-eventdetails .detail-text').should('contain', 'No minutes submitted for this session.') - // Clicking X should close the dialog - cy.get('.agenda-eventdetails .n-card-header__extra > .detail-header > button').click() - }) - - // -> FILTER BY AREA/GROUP DIALOG - - it('can filter by area/group', { - // This test has lot of UI element interactions and the UI can get slow with DOM snapshots, so disable it - numTestsKeptInMemory: 0 - }, () => { - // Open dialog - cy.get('#agenda-quickaccess-filterbyareagroups-btn').should('exist').and('be.visible').click() - cy.get('.agenda-personalize').should('exist').and('be.visible') - // Check header elements - cy.get('.agenda-personalize .n-drawer-header__main > span').contains('Filter Areas + Groups') - cy.get('.agenda-personalize .agenda-personalize-actions > button').should('have.length', 3) - cy.get('.agenda-personalize .agenda-personalize-actions > button').first().contains('Clear Selection') - cy.get('.agenda-personalize .agenda-personalize-actions > button').eq(1).contains('Cancel') - cy.get('.agenda-personalize .agenda-personalize-actions > button').last().contains('Apply') - // Check categories - cy.get('.agenda-personalize .agenda-personalize-category').should('have.length', meetingData.categories.length) - // Check areas + groups - cy.get('.agenda-personalize .agenda-personalize-category').each((el, idx) => { - const cat = meetingData.categories[idx] - cy.wrap(el).find('.agenda-personalize-area').should('have.length', cat.length) - .each((areaEl, areaIdx) => { - // Area Button - const area = cat[areaIdx] - cy.wrap(areaEl).find('.agenda-personalize-areamain').scrollIntoView() - if (area.label) { - cy.wrap(areaEl).find('.agenda-personalize-areamain > button').should('be.visible').contains(area.label) - } else { - cy.wrap(areaEl).find('.agenda-personalize-areamain > button').should('not.exist') - } - // Group Buttons - cy.wrap(areaEl).find('.agenda-personalize-groups > button').should('have.length', area.children.length) - .each((groupEl, groupIdx) => { - const group = area.children[groupIdx] - cy.wrap(groupEl).should('be.visible').contains(group.label) - if (group.is_bof) { - cy.wrap(groupEl).should('have.class', 'is-bof') - cy.wrap(groupEl).find('.badge').should('be.visible').contains('BoF') - } - }) - // Test Area Selection - if (area.label) { - cy.wrap(areaEl).find('.agenda-personalize-areamain > button').click() - cy.wrap(areaEl).find('.agenda-personalize-groups > button').should('have.class', 'is-checked') - cy.wrap(areaEl).find('.agenda-personalize-areamain > button').click() - cy.wrap(areaEl).find('.agenda-personalize-groups > button').should('not.have.class', 'is-checked') - } - // Test Group Selection - cy.wrap(areaEl).find('.agenda-personalize-groups > button').any().click() - .should('have.class', 'is-checked').click().should('not.have.class', 'is-checked') - }) - }) - // Test multi-toggled_by button trigger - cy.get(`.agenda-personalize .agenda-personalize-category:last .agenda-personalize-area:last .agenda-personalize-groups > button:contains('BoF')`).as('bofbtn') - cy.get('@bofbtn').click() - cy.get('.agenda-personalize .agenda-personalize-group:has(.badge)').should('have.class', 'is-checked') - cy.get('@bofbtn').click() - cy.get('.agenda-personalize .agenda-personalize-group:has(.badge)').should('not.have.class', 'is-checked') - // Clicking all groups from area then area button should unselect all - cy.get('.agenda-personalize .agenda-personalize-area:first .agenda-personalize-groups > button').click({ multiple: true }) - cy.get('.agenda-personalize .agenda-personalize-area:first .agenda-personalize-areamain > button').click() - cy.get('.agenda-personalize .agenda-personalize-area:first .agenda-personalize-groups > button').should('not.have.class', 'is-checked') - // Test Clear Selection - cy.get('.agenda-personalize .agenda-personalize-group').any(10).click({ multiple: true }) - cy.get('.agenda-personalize .agenda-personalize-actions > button').first().click() - cy.get('.agenda-personalize .agenda-personalize-group').should('not.have.class', 'is-checked') - // Click Cancel should hide dialog - cy.get('.agenda-personalize .agenda-personalize-actions > button').eq(1).click() - cy.get('.agenda-personalize').should('not.exist') - }) - - // -> PICK SESSIONS - - it('can pick individual sessions', () => { - // Enter pick mode - cy.get('#agenda-quickaccess-picksessions-btn').should('be.visible').click().should('not.exist') - cy.get('#agenda-quickaccess-applypick-btn').should('be.visible') - cy.get('#agenda-quickaccess-discardpick-btn').should('be.visible') - - // Pick 10 random sessions - cy.get('.agenda .agenda-table-cell-check > .n-checkbox').should('have.length', meetingData.schedule.length) - .any(10).click({ multiple: true }) - cy.get('#agenda-quickaccess-applypick-btn').click().should('not.exist') - cy.get('#agenda-quickaccess-modifypick-btn').should('be.visible') - cy.get('#agenda-quickaccess-discardpick-btn').should('be.visible') - cy.get('.agenda .agenda-table-display-event').should('have.length', 10) - - // Change selection (keep existing 5 + add 5 new ones) - cy.get('#agenda-quickaccess-modifypick-btn').click().should('not.exist') - cy.get('#agenda-quickaccess-applypick-btn').should('be.visible') - cy.get('#agenda-quickaccess-discardpick-btn').should('be.visible') - cy.get('.agenda .agenda-table-cell-check > .n-checkbox').should('have.length', meetingData.schedule.length) - .filter('.n-checkbox--checked').should('have.length', 10) - .take(5).click({ multiple: true }) - cy.get('.agenda .agenda-table-cell-check > .n-checkbox:not(.n-checkbox--checked)').any(5).click({ multiple: true }) - cy.get('#agenda-quickaccess-applypick-btn').click() - cy.get('.agenda .agenda-table-display-event').should('have.length', 10) - - // Discard should clear selection - cy.get('#agenda-quickaccess-discardpick-btn').click().should('not.exist') - cy.get('#agenda-quickaccess-modifypick-btn').should('not.exist') - cy.get('#agenda-quickaccess-picksessions-btn').should('be.visible') - cy.get('.agenda .agenda-table-cell-check').should('not.exist') - cy.get('.agenda .agenda-table-display-event').should('have.length', meetingData.schedule.length) - }) - - // -> CALENDAR VIEW - - it('can view calendar', () => { - // Open dialog - cy.get('#agenda-quickaccess-calview-btn').should('be.visible').click() - cy.get('.agenda-calendar').should('exist').and('be.visible') - // Check header elements - cy.get('.agenda-calendar .n-drawer-header__main > span').contains('Calendar View') - cy.get('.agenda-calendar .agenda-calendar-actions').as('diagheader') - cy.get('@diagheader').children('button').should('have.length', 2) - cy.get('@diagheader').children('button').first().should('include.text', 'Filter') - cy.get('@diagheader').children('button').last().should('include.text', 'Close') - // ----------------------- - // Check timezone controls - // ----------------------- -// cy.get('@diagheader').children('small').first().should('contain', 'Timezone') -// // Switch to local timezone -// cy.get('@diagheader').children('.n-button-group').find('button').as('tzbuttons').eq(1).click().should('have.class', 'n-button--primary-type') -// .prev('button').should('not.have.class', 'n-button--primary-type') -// const localDateTime = DateTime.fromISO(meetingData.meeting.updated).setZone('local').toFormat(`DD 'at' tt ZZZZ`) -// cy.get('.agenda h6').first().contains(localDateTime) -// // Switch to UTC -// cy.get('@tzbuttons').last().click().should('have.class', 'n-button--primary-type') -// .prev('button').should('not.have.class', 'n-button--primary-type') -// const utcDateTime = DateTime.fromISO(meetingData.meeting.updated).setZone('utc').toFormat(`DD 'at' tt ZZZZ`) -// cy.get('.agenda h6').first().contains(utcDateTime) -// // Switch back to meeting timezone -// cy.get('@tzbuttons').first().click().should('have.class', 'n-button--primary-type') - // ---------------------- - // Check Filters Shortcut - // ---------------------- - cy.get('@diagheader').children('button').first().click() - // Only check whether the dialog is shown. We already tested the dialog earlier. - cy.get('.agenda-personalize').should('be.visible') - // Close dialog - cy.get('.agenda-personalize .agenda-personalize-actions > button').eq(1).click() - cy.get('.agenda-personalize').should('not.exist') - // ------------------ - // Check Event Dialog - // ------------------ - const firstEvent = meetingData.schedule[0] - const materialsUrl = (new URL(firstEvent.agenda.url)).pathname - const materialsInfo = { - url: firstEvent.agenda.url, - slides: [], - minutes: null - } - cy.intercept('GET', `/api/meeting/session/${firstEvent.sessionId}/materials`, { body: materialsInfo }).as('getMaterialsInfo') - cy.intercept('GET', materialsUrl, { body: 'The internet is a series of tubes.' }).as('getMaterialsText') - cy.get('.agenda-calendar .fc-event').first().click() - // Only check whether the dialog is shown. We already tested the dialog earlier. - cy.get('.agenda-eventdetails').should('be.visible') - // Close dialog - cy.get('.agenda-eventdetails .n-card-header__extra > .detail-header > button').click() - // ----------- - // Event Hover - // ----------- - // First Event - let eventStart = DateTime.fromISO(firstEvent.startDateTime) - let eventEnd = eventStart.plus({ seconds: firstEvent.duration }) - let hoverDateTime = `${eventStart.toFormat('DDDD')} from ${eventStart.toFormat('T')} to ${eventEnd.toFormat('T')}` - cy.get('.agenda-calendar .fc-event').first().realHover({ position: 'center' }) - cy.get('.agenda-calendar-hint > div').first().should('include.text', firstEvent.name) - .next().should('include.text', firstEvent.location.short).and('include.text', firstEvent.room) - .next().should('include.text', hoverDateTime) - // Second Event - const secondEvent = meetingData.schedule[1] - eventStart = DateTime.fromISO(secondEvent.startDateTime) - eventEnd = eventStart.plus({ seconds: secondEvent.duration }) - hoverDateTime = `${eventStart.toFormat('DDDD')} from ${eventStart.toFormat('T')} to ${eventEnd.toFormat('T')}` - cy.get('.agenda-calendar .fc-event').eq(1).realHover({ position: 'center' }) - cy.get('.agenda-calendar-hint > div').first().should('include.text', secondEvent.name) - .next().should('include.text', secondEvent.location.short).and('include.text', secondEvent.room) - .next().should('include.text', hoverDateTime) - // ------------------------------ - // Click Close should hide dialog - // ------------------------------ - cy.get('@diagheader').children('button').last().click() - cy.get('.agenda-calendar').should('not.exist') - }) - - // -> SETTINGS DIALOG - - it('can change settings', () => { - // Open dialog - cy.get('.meeting-nav').next('button').should('exist').and('be.visible').click() - cy.get('.agenda-settings').should('exist').and('be.visible') - // Check header elements - cy.get('.agenda-settings .n-drawer-header__main > span').contains('Agenda Settings') - cy.get('.agenda-settings .agenda-settings-actions > button').should('have.length', 2) - cy.get('.agenda-settings .agenda-settings-actions > button').first().should('be.visible') - cy.get('.agenda-settings .agenda-settings-actions > button').last().contains('Close') - // ------------------- - // Check export config - // ------------------- - cy.get('.agenda-settings .agenda-settings-actions > button').first().click() - cy.get('.n-dropdown-option:contains("Export Configuration")').should('exist').and('be.visible').click() - cy.readFile(path.join(Cypress.config('downloadsFolder'), 'agenda-settings.json'), { timeout: 15000 }).then(cfg => { - cy.fixture('agenda-settings.json').then(cfgValid => { - expect(isEqual(cfg, cfgValid)).to.be.true - }) - }) - // ------------------- - // Check import config - // ------------------- - // Skip test if firefox/safari since they don't support the file picker API - if (!Cypress.isBrowser('firefox') && !Cypress.isBrowser('safari')) { - cy.fixture('agenda-settings.json', { encoding: 'utf8' }).then(cfgImport => { - // Stub the native file picker - // From https://cypresstips.substack.com/p/stub-the-browser-filesystem-api - cy.window().then((win) => { - cy.stub(win, 'showOpenFilePicker').resolves([{ - getFile: cy.stub().resolves({ - text: cy.stub().resolves(JSON.stringify(cfgImport)) - }) - }]) - cy.get('.agenda-settings .agenda-settings-actions > button').first().click() - cy.get('.n-dropdown-option:contains("Import Configuration")').should('exist').and('be.visible').click() - cy.get('.n-message').should('contain', 'Config imported successfully') - }) - }) - } else { - cy.log('Config import test skipped because this browser does not support file picker API, which is required for the test.') - } - // ----------------------- - // Check timezone controls - // ----------------------- -// cy.get('.agenda-settings-content > .n-divider').first().should('contain', 'Timezone').as('settings-timezone') -// // Switch to local timezone -// cy.get('@settings-timezone').next('.n-button-group').find('button').eq(1).click().should('have.class', 'n-button--primary-type') -// .prev('button').should('not.have.class', 'n-button--primary-type') -// const localDateTime = DateTime.fromISO(meetingData.meeting.updated).setZone('local').toFormat(`DD 'at' tt ZZZZ`) -// cy.get('.agenda h6').first().contains(localDateTime) -// // Switch to UTC -// cy.get('@settings-timezone').next('.n-button-group').find('button').last().click().should('have.class', 'n-button--primary-type') -// .prev('button').should('not.have.class', 'n-button--primary-type') -// const utcDateTime = DateTime.fromISO(meetingData.meeting.updated).setZone('utc').toFormat(`DD 'at' tt ZZZZ`) -// cy.get('.agenda h6').first().contains(utcDateTime) -// // Switch back to meeting timezone -// cy.get('@settings-timezone').next('.n-button-group').find('button').first().click().should('have.class', 'n-button--primary-type') -// cy.get('@settings-timezone').next('.n-button-group').next('.n-select').contains('Tokyo') - // ---------------------- - // Check display controls - // ---------------------- - cy.get('.agenda-settings-content > .n-divider').eq(1).should('contain', 'Display').as('settings-display') - // -> Test Current Meeting Info Note toggle - cy.get('@settings-display').nextAll('div.d-flex').eq(1).find('div[role=switch]').as('switch-infonote').click() - cy.get('.agenda .agenda-infonote').should('not.exist') - cy.get('@switch-infonote').click() - cy.get('.agenda .agenda-infonote').should('exist') - // -> Test Event Icons toggle - cy.get('@settings-display').nextAll('div.d-flex').eq(2).find('div[role=switch]').as('switch-eventicons').click() - cy.get('.agenda .agenda-event-icon').should('not.exist') - cy.get('@switch-eventicons').click() - cy.get('.agenda .agenda-event-icon').should('exist') - // -> Test Floor Indicators toggle - cy.get('@settings-display').nextAll('div.d-flex').eq(3).find('div[role=switch]').as('switch-floorind').click() - cy.get('.agenda .agenda-table-cell-room > span.badge').should('not.exist') - cy.get('@switch-floorind').click() - cy.get('.agenda .agenda-table-cell-room > span.badge').should('exist') - // -> Test Group Area Indicators toggle - cy.get('@settings-display').nextAll('div.d-flex').eq(4).find('div[role=switch]').as('switch-groupind').click() - cy.get('.agenda .agenda-table-cell-group > span.badge').should('not.exist') - cy.get('@switch-groupind').click() - cy.get('.agenda .agenda-table-cell-group > span.badge').should('exist') - // TODO: realtime red line toggle - // -> Test Bolder Text toggle - cy.get('@settings-display').nextAll('div.d-flex').eq(6).find('div[role=switch]').as('switch-boldertext').click() - cy.get('.agenda').should('have.class', 'bolder-text') - cy.get('@switch-boldertext').click() - cy.get('.agenda').should('not.have.class', 'bolder-text') - - // ---------------------------- - // Check calendar view controls - // ---------------------------- - cy.get('.agenda-settings-content > .n-divider').eq(2).should('contain', 'Calendar View').as('settings-calendar') - // TODO: calendar view checks - // ---------------------------- - // Check calendar view controls - // ---------------------------- - cy.get('.agenda-settings-content > .n-divider').eq(3).should('contain', 'Custom Colors / Tags').as('settings-colors') - // ------------------------------ - // Click Close should hide dialog - // ------------------------------ - cy.get('.agenda-settings .agenda-settings-actions > button').last().click() - cy.get('.agenda-settings').should('not.exist') - }) - - // -> ADD TO CALENDAR - - it('can add to calendar', () => { - cy.get('#agenda-quickaccess-addtocal-btn').should('be.visible').and('include.text', 'Add to your calendar').click() - cy.get('.n-dropdown-menu > .n-dropdown-option').should('have.length', 2) - .first().should('include.text', 'Subscribe') - .next().should('include.text', 'Download') - - // Cannot test if .ics download works because of cypress bug: - // See https://github.com/cypress-io/cypress/issues/14857 - - // // Intercept Download ICS Call - // cy.intercept('GET', `/meeting/${meetingData.meeting.number}/agenda.ics`, { - // body: 'test', - // headers: { - // 'Content-disposition': 'attachment; filename=agenda.ics', - // 'Content-Type': 'text/calendar' - // } - // }).as('getIcs') - - // // Test Download ICS - // cy.get('.n-dropdown-menu > .n-dropdown-option').eq(1).click() - // cy.wait('@getIcs') - }) - - // -> JUMP TO DAY - - it(`can jump to specific days`, () => { - // -> Separator label - cy.get('.agenda .agenda-quickaccess-jumpto').prev('div[role=separator]').should('be.visible').and('include.text', 'Jump to...') - // -> Check nav items - cy.get('.agenda .agenda-quickaccess-jumpto > .nav-item').should('have.length', 7).as('dayjumpbuttons') - .each((el, idx) => { - const localDateTime = DateTime.fromISO(meetingData.meeting.startDate).setZone('local').plus({ days: idx }).toLocaleString(DateTime.DATE_HUGE) - cy.wrap(el).should('contain', localDateTime) - }) - - // Scroll to last day - // Cypress does not handle the IntersectionObserver correctly, so disable this test for now. - // See https://github.com/cypress-io/cypress/issues/3848 - cy.get('@dayjumpbuttons').last().children('a').click({ scrollBehavior: false, force: true }) // .should('have.class', 'active') - cy.get('.agenda-table-display-day').last().isInViewport() - - // Scroll to second day - cy.get('@dayjumpbuttons').eq(1).children('a').click({ scrollBehavior: false, force: true }) // .should('have.class', 'active') - cy.get('.agenda-table-display-day').eq(1).isInViewport() - - cy.scrollTo('top') - }) - - // -> Color Tagging - - it(`can assign colors/tags to sessions`, () => { - cy.scrollTo('top') - cy.get('.agenda .agenda-table-colorpicker').should('be.visible').click({ scrollBehavior: false }) - - // Check Legend - cy.get('.agenda .agenda-colorlegend').should('be.visible') - .children().first().should('include.text', 'Color Legend') - .nextAll().should('have.length', 5) - - // Check color dots - cy.get('.agenda .agenda-table-display-event .agenda-table-colorindicator.is-active').should('have.length', meetingData.schedule.length) - - // ------------------------- - // Assign colors to sessions - // ------------------------- - cy.get('.agenda .agenda-table-display-event').take(5).each((el, idx) => { - cy.wrap(el).find('.agenda-table-colorindicator').should('be.visible').click({ scrollBehavior: false, force: true }) - .prev('.agenda-table-colorchoices').should('be.visible') - .children('.agenda-table-colorchoice').should('have.length', 6) - .eq(idx + 1).click({ scrollBehavior: false }).should('not.exist') - }) - - // Exit color assignment mode - cy.get('.agenda .agenda-table-colorpicker').click({ scrollBehavior: false }) - cy.get('.agenda .agenda-table-display-event .agenda-table-colorindicator').should('have.length', 5).and('not.have.class', 'is-active') - cy.get('.agenda .agenda-colorlegend').should('be.visible') - - // ---------------------------------------- - // Change color legend from settings dialog - // ---------------------------------------- - // Open dialog - cy.get('.meeting-nav').next('button').should('exist').and('be.visible').click() - cy.get('.agenda-settings').should('exist').and('be.visible') - // Toggle color legend switch - cy.get('.agenda-settings-content > .n-divider').eq(1).should('contain', 'Display') - .next('div.d-flex').find('div[role=switch]').as('switch-colorlegend').click() - // Legend should be hidden - cy.get('.agenda .agenda-colorlegend').should('not.exist') - // Toggle color legend back - cy.get('@switch-colorlegend').click() - // Legend should be visible - cy.get('.agenda .agenda-colorlegend').should('be.visible') - // Change color names - cy.get('#agenda-settings-colors-header').nextAll('div.d-flex').each((el, idx) => { - const newName = faker.music.genre() - cy.wrap(el).find('.n-input').clear().type(newName) - // TODO: Color names + values don't update in test mode for some reason... Watcher not triggering? Skipped for now. - // cy.get('.agenda .agenda-colorlegend').children().eq(idx + 1).should('include.text', newName) - }) - // Close dialog - cy.get('.agenda-settings .agenda-settings-actions > button').last().click() - cy.get('.agenda-settings').should('not.exist') - - // --------------- - // Unassign colors - // --------------- - // Re-enter color assignment mode - cy.get('.agenda .agenda-table-colorpicker').should('be.visible').click({ scrollBehavior: false }) - // Remove color selection - cy.get('.agenda .agenda-table-display-event').take(5).each((el, idx) => { - cy.wrap(el).find('.agenda-table-colorindicator').should('be.visible').click({ scrollBehavior: false, force: true }) - .prev('.agenda-table-colorchoices').should('be.visible') - .children('.agenda-table-colorchoice').should('have.length', 6) - .first().click({ scrollBehavior: false }).should('not.exist') - }) - // Exit color assignment mode - cy.get('.agenda .agenda-table-colorpicker').click({ scrollBehavior: false }) - // No colored dots should appear - cy.get('.agenda .agenda-table-display-event .agenda-table-colorindicator').should('not.exist') - // Clear all colors from Settings menu - cy.get('.meeting-nav').next('button').should('exist').and('be.visible').click() - cy.get('.agenda-settings').should('exist').and('be.visible') - cy.get('.agenda-settings .agenda-settings-actions > button').first().click() - cy.get('.n-dropdown-option:contains("Clear Color")').should('exist').and('be.visible').click() - // Color legend should no longer be displayed - cy.get('.agenda .agenda-colorlegend').should('not.exist') - cy.get('.agenda-settings').should('not.exist') - }) -}) - -// ==================================================================== -// AGENDA-NEUE (future meeting) | DESKTOP viewport -// ==================================================================== - -describe('meeting -> agenda-neue [future, desktop]', { - viewportWidth: viewports.desktop[0], - viewportHeight: viewports.desktop[1] - }, () => { - let meetingData = null - - before(() => { - // Set clock to 2022-02-01 (month is 0-indexed) - cy.clock(new Date(2022, 1, 1)) - - // Generate future meeting data - meetingData = meetingGenerator.generateAgendaResponse({ dateMode: 'future' }) - - // Intercept Meeting Data API - cy.intercept('GET', `/api/meeting/${meetingData.meeting.number}/agenda-data`, { body: meetingData }).as('getMeetingData') - - // Visit agenda page - cy.visit(`/meeting/${meetingData.meeting.number}/agenda-neue`, { - onBeforeLoad: (win) => { injectMeetingData(win, meetingData.meeting.number) } - }) - cy.wait('@getMeetingData') - }) - - // -> SCHEDULE LIST -> Warning - - it(`has current meeting warning`, () => { - cy.get('.agenda .agenda-currentwarn').should('exist').and('include.text', 'Note: IETF agendas are subject to change, up to and during a meeting.') - }) - - // -> SCHEDULE LIST -> Table Events - - it('has schedule list table events (can take a while)', { - // This test is VERY memory-intensive, so disable DOM snapshots to prevent browser crash - numTestsKeptInMemory: 0 - }, () => { - let isFirstSession = true - cy.get('tr.agenda-table-display-event').should('have.length', meetingData.schedule.length).each((el, idx) => { - // Apply small arbitrary wait every 10 rows to prevent the test UI from freezing - if (idx % 10 === 0) { - // eslint-disable-next-line cypress/no-unnecessary-waiting - cy.wait(10) - } - const event = meetingData.schedule[idx] - - // ----------------------- - // Buttons / Status Column - // ----------------------- - if (event.status === 'sched') { - if (event.flags.showAgenda || ['regular', 'plenary'].includes(event.type)) { - cy.wrap(el).find('.agenda-table-cell-links > .agenda-table-cell-links-buttons').as('eventbuttons') - if (event.flags.agenda) { - // Show meeting materials button - cy.get('@eventbuttons').find('i.bi.bi-collection').should('exist') - // ZIP materials button - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-tar`).should('have.attr', 'href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.tgz`) - .children('i.bi').should('exist') - // PDF materials button - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-pdf`).should('have.attr', 'href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.pdf`) - .children('i.bi').should('exist') - } else if (event.type === 'regular') { - // No meeting materials yet warning badge - cy.get('@eventbuttons').find('.no-meeting-materials').should('exist') - } - // Notepad button - const hedgeDocLink = `https://notes.ietf.org/notes-ietf-${meetingData.meeting.number}-${event.type === 'plenary' ? 'plenary' : event.acronym}` - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-note`).should('have.attr', 'href', hedgeDocLink) - .children('i.bi').should('exist') - // Chat room - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-room`).should('have.attr', 'href', event.links.chat) - .children('i.bi').should('exist') - // Video Stream - if (event.links.videoStream) { - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-video`).should('have.attr', 'href', formatLinkUrl(event.links.videoStream, event, meetingData.meeting.number)) - .children('i.bi').should('exist') - } - // Onsite Tool - if (event.links.onsitetool) { - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-onsitetool`).should('have.attr', 'href', formatLinkUrl(event.links.onsitetool, event, meetingData.meeting.number)) - .children('i.bi').should('exist') - } - // Audio Stream - if (event.links.audioStream) { - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-audio`).should('have.attr', 'href', formatLinkUrl(event.links.audioStream, event, meetingData.meeting.number)) - .children('i.bi').should('exist') - } - // Remote Call-In - let remoteCallInUrl = null - if (event.note) { - remoteCallInUrl = findFirstConferenceUrl(event.note) - } - if (!remoteCallInUrl && event.remoteInstructions) { - remoteCallInUrl = findFirstConferenceUrl(event.remoteInstructions) - } - if (!remoteCallInUrl && event.links.webex) { - remoteCallInUrl = event.links.webex - } - if (remoteCallInUrl) { - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-remotecallin`).should('have.attr', 'href', remoteCallInUrl) - .children('i.bi').should('exist') - } - // calendar - if (event.links.calendar) { - cy.get('@eventbuttons').find(`#btn-lnk-${event.id}-calendar`).should('have.attr', 'href', event.links.calendar) - .children('i.bi').should('exist') - } - } else { - cy.wrap(el).find('.agenda-table-cell-links > .agenda-table-cell-links-buttons').should('not.exist') - } - } - }) - }) -}) - -// ==================================================================== -// AGENDA-NEUE (live meeting) | DESKTOP viewport -// ==================================================================== - -describe('meeting -> agenda-neue [live, desktop]', { - viewportWidth: viewports.desktop[0], - viewportHeight: viewports.desktop[1] - }, () => { - let meetingData = null - const currentTime = DateTime.fromISO('2022-02-01T13:45:15', { zone: 'Asia/Tokyo' }) - const liveEvents = [] - let lastLiveEvent = null - - before(() => { - // Set clock to 2022-02-01 (month is 0-indexed) - cy.clock(currentTime.toMillis()) - - // Generate live meeting data - meetingData = meetingGenerator.generateAgendaResponse({ dateMode: 'current' }) - - // Calculate live events - let lastEventStartTime = null - for (const event of meetingData.schedule) { - const eventStart = DateTime.fromISO(event.startDateTime, { zone: 'Asia/Tokyo' }) - const eventEnd = eventStart.plus({ seconds: event.duration }) - if (currentTime >= eventStart && currentTime < eventEnd) { - liveEvents.push(event) - // -> Find last event before current time - if (lastEventStartTime === eventStart.toMillis()) { - continue - } else { - lastEventStartTime = eventStart.toMillis() - lastLiveEvent = event - } - } - // -> Skip future events - if (eventStart > currentTime) { - break - } - } - - // Intercept Meeting Data API - cy.intercept('GET', `/api/meeting/${meetingData.meeting.number}/agenda-data`, { body: meetingData }).as('getMeetingData') - - // Visit agenda page - cy.visit(`/meeting/${meetingData.meeting.number}/agenda-neue`, { - onBeforeLoad: (win) => { injectMeetingData(win, meetingData.meeting.number) } - }) - cy.wait('@getMeetingData') - - // Fix scroll behavior - // See https://github.com/cypress-io/cypress/issues/3200 - cy.document().then(document => { - const htmlElement = document.querySelector('html') - if (htmlElement) { - htmlElement.style.scrollBehavior = 'inherit' - } - }) - }) - - beforeEach(() => { - cy.clock(currentTime.toMillis()) - }) - - // -> HIGHLIGHTED LIVE SESSIONS - - it(`has live sessions highlighted`, () => { - cy.get('.agenda .agenda-table-display-event.agenda-table-live').should('have.length', liveEvents.length) - }) - - // -> LIVE RED LINE - - it(`has live red line`, () => { - cy.get('.agenda .agenda-table-redhand').should('be.visible').then(el => { - cy.get(`#agenda-rowid-${lastLiveEvent.id}`).then(elEv => { - expect(el.offsetTop).to.equal(elEv.offsetTop) - }) - }) - }) - - // -> JUMP TO NOW - - it(`has jump to now button`, () => { - cy.get('.agenda .agenda-quickaccess-jumpto > .nav-item').should('have.length', 8).first().should('include.text', 'Now').click() - cy.get('.agenda .agenda-table-redhand').isInViewport() - }) - - // -> HIDE RED LINE - // TODO: dialog fails to render for unknown reason (but clicking manually on the window triggers the render) - // Seems like a cypress bug... Skipping for now. - it.skip(`can toggle the live red line`, () => { - // Open settings dialog - cy.get('.meeting-nav').next('button').click() - cy.get('.agenda-settings').should('exist').and('be.visible') - // Toggle red line switch - cy.get('.agenda-settings-content > .n-divider').eq(1).should('contain', 'Display') - .nextAll('div.d-flex').eq(5).find('div[role=switch]').as('switch-redline').click() - // Check red line disappeared - cy.get('.agenda .agenda-table-redhand').should('not.exist') - // Re-enable it - cy.get('@switch-redline').click() - // Check red line is visible again - cy.get('.agenda .agenda-table-redhand').should('be.visible') - // Close dialog - cy.get('.agenda-settings .agenda-settings-actions > button').last().click() - cy.get('.agenda-settings').should('not.exist') - }) -}) - -// ==================================================================== -// AGENDA-NEUE (past meeting) | SMALL DESKTOP/TABLET/MOBILE viewport -// ==================================================================== - -describe('meeting -> agenda-neue [past, small screens]', () => { - // Generate meeting data - const meetingData = meetingGenerator.generateAgendaResponse({ dateMode: 'past' }) - - for (const vp of ['smallDesktop', 'tablet', 'mobile']) { - describe(vp, { - viewportWidth: viewports[vp][0], - viewportHeight: viewports[vp][1] - }, () => { - before(() => { - // Set clock to 2022-02-01 (month is 0-indexed) - cy.clock(new Date(2022, 1, 1)) - - // Intercept Meeting Data API - cy.intercept('GET', `/api/meeting/${meetingData.meeting.number}/agenda-data`, { body: meetingData }).as('getMeetingData') - - // Visit agenda page - cy.visit(`/meeting/${meetingData.meeting.number}/agenda-neue`, { - onBeforeLoad: (win) => { injectMeetingData(win, meetingData.meeting.number) } - }) - cy.wait('@getMeetingData') - - // Fix scroll behavior - // See https://github.com/cypress-io/cypress/issues/3200 - cy.document().then(document => { - const htmlElement = document.querySelector('html') - if (htmlElement) { - htmlElement.style.scrollBehavior = 'inherit' - } - }) - }) - - // -> NARROW QUICK ACCESS PANEL (smallDesktop only) - - if (vp === 'smallDesktop') { - it('has narrow quick access panel', () => { - // Alternate labels for buttons - cy.get('#agenda-quickaccess-filterbyareagroups-btn').should('be.visible').and('include.text', 'Filter...') - .next('button').should('be.visible').and('include.text', 'Pick...') - cy.get('#agenda-quickaccess-calview-btn').should('be.visible').and('include.text', 'Cal View') - .next('button').should('be.visible').and('include.text', '.ics') - // -> Shorter date labels for Jump to buttons - cy.get('.agenda .agenda-quickaccess-jumpto > .nav-item').should('have.length', 7).as('dayjumpbuttons') - .each((el, idx) => { - const localDateTime = DateTime.fromISO(meetingData.meeting.startDate).setZone('local').plus({ days: idx }).toFormat('ccc LLL d') - cy.wrap(el).should('contain', localDateTime).find('i.bi').should('not.be.visible') - }) - - // Take a snapshot for visual diffing - cy.percySnapshot(`meeting -> agenda-neue [past, ${vp}]`, { widths: [viewports[vp][0]] }) - }) - } - - // -> TABLET + MOBILE-specific tests - - if (vp === 'tablet' || vp === 'mobile') { - - // Check for elements that should not exist on smaller screens - - it('has no updated date', () => { - cy.get('.agenda > h4 > h6').should('not.be.visible') - - // Take a snapshot for visual diffing - cy.percySnapshot(`meeting -> agenda-neue [past, ${vp}]`, { widths: [viewports[vp][0]] }) - }) - - it('has no timezone dropdown selector', () => { - cy.get('.agenda .agenda-tz-selector').next('.agenda-timezone-ddn').should('not.exist') - }) - - it('has no floor + group indicators', () => { - cy.get('.agenda .agenda-table-cell-room > .badge').should('not.be.visible') - cy.get('.agenda .agenda-table-cell-group > .badge').should('not.exist') - }) - - // Session buttons should be hidden in a dropdown menu - - it('has session buttons dropdown', () => { - cy.get('.agenda .agenda-table-display-event .agenda-table-cell-links-buttons').each(el => { - cy.wrap(el).children().should('have.length', 1) - }) - - // TODO: Check for dropdown links once changed to a custom panel with standard links - }) - - // Bottom Mobile Bar - - it('has no lateral quick access panel', () => { - cy.get('.agenda-quickaccess').should('not.exist') - }) - - it('has a bottom mobile bar', () => { - cy.get('.agenda-mobile-bar').should('be.visible') - .children().should('have.length', 4) - .first().should('include.text', 'Filters') - .next().should('include.text', 'Cal') - .next().should('include.text', '.ics') - .next().children().should('have.length', 1).and('have.class', 'bi') - }) - - it('can open the filters overlay', () => { - cy.get('.agenda-mobile-bar > button').first().click() - cy.get('.agenda-personalize').should('be.visible') - cy.get('.agenda-personalize .agenda-personalize-actions > button').eq(1).click() - cy.get('.agenda-personalize').should('not.exist') - }) - - it('can open the calendar view', () => { - cy.get('.agenda-mobile-bar > button').eq(1).click() - cy.get('.agenda-calendar').should('be.visible') - cy.get('.agenda-calendar .agenda-calendar-actions > button').eq(1).click() - cy.get('.agenda-calendar').should('not.exist') - }) - - it('can open the ics dropdown', () => { - cy.get('.agenda-mobile-bar > button').eq(2).click() - cy.get('.n-dropdown-menu > .n-dropdown-option').should('have.length', 2) - .first().should('include.text', 'Subscribe') - .next().should('include.text', 'Download') - }) - - it('can open the settings overlay', () => { - cy.get('.agenda-mobile-bar > button').last().click() - cy.get('.agenda-settings').should('be.visible') - cy.get('.agenda-settings .agenda-settings-actions > button').eq(1).click() - cy.get('.agenda-settings').should('not.exist') - }) - } - }) - } -}) - -// ==================================================================== -// FLOOR-PLAN-NEUE | All Viewports -// ==================================================================== - -describe(`meeting -> floor-plan-neue`, () => { - for (const vp of ['desktop', 'smallDesktop', 'tablet', 'mobile']) { - describe(vp, { - viewportWidth: viewports[vp][0], - viewportHeight: viewports[vp][1] - }, () => { - const meetingData = meetingGenerator.generateAgendaResponse({ dateMode: 'past', skipSchedule: true }) - - before(() => { - cy.intercept('GET', `/api/meeting/${meetingData.meeting.number}/agenda-data`, { body: meetingData }).as('getMeetingData') - cy.visit(`/meeting/${meetingData.meeting.number}/floor-plan-neue`, { - onBeforeLoad: (win) => { injectMeetingData(win, meetingData.meeting.number) } - }) - cy.wait('@getMeetingData') - }) - - // -> HEADER - - it(`has IETF ${meetingData.meeting.number} title`, () => { - cy.get('.floorplan h1').first().contains(`IETF ${meetingData.meeting.number} Floor Plan`) - - // Take a snapshot for visual diffing - cy.percySnapshot(`meeting -> floor-plan-neue [${vp}]`, { widths: [viewports[vp][0]] }) - }) - it(`has meeting city subtitle`, () => { - cy.get('.floorplan h4').first().contains(meetingData.meeting.city) - }) - it(`has meeting date subtitle`, () => { - cy.get('.floorplan h4').first().contains(/[a-zA-Z] [0-9]{1,2} - ([a-zA-Z]+ )?[0-9]{1,2}, [0-9]{4}/i) - }) - - // -> NAV - - it(`has the correct navigation items`, () => { - cy.get('.floorplan .meeting-nav > li').should('have.length', 3) - cy.get('.floorplan .meeting-nav > li').first().contains('Agenda') - cy.get('.floorplan .meeting-nav > li').eq(1).contains('Floor plan') - cy.get('.floorplan .meeting-nav > li').last().contains('Plaintext') - }) - - // -> FLOORS - - it(`can switch between floors`, () => { - cy.get('.floorplan .floorplan-floors > .nav-link').should('have.length', meetingData.floors.length) - cy.get('.floorplan .floorplan-floors > .nav-link').each((el, idx) => { - cy.wrap(el).contains(meetingData.floors[idx].name) - cy.wrap(el).click() - cy.wrap(el).should('have.class', 'active') - cy.wrap(el).siblings().should('not.have.class', 'active') - // Wait for image to load + verify - cy.get('.floorplan .floorplan-plan > img').should('be.visible').and(img => expect(img[0].naturalWidth).to.be.greaterThan(1)) - }) - }) - - // -> ROOMS - - it(`can select rooms`, { retries: 2 }, () => { - const floor = meetingData.floors[0] - cy.get('.floorplan .floorplan-floors > .nav-link').first().click() - cy.get('.floorplan .floorplan-rooms > .list-group-item').should('have.length', floor.rooms.length) - cy.get('.floorplan .floorplan-rooms > .list-group-item').each((el, idx) => { - // Room List - const room = floor.rooms[idx] - cy.wrap(el).find('strong').contains(room.name) - .next('small').contains(room.functionalName) - cy.wrap(el).find('.badge').should('exist').and('include.text', floor.short) - cy.wrap(el).click() - cy.wrap(el).should('have.class', 'active') - cy.wrap(el).siblings().should('not.have.class', 'active') - // URL query segment - cy.location('search').should('include', `room=${room.slug}`) - // Pin Drop - cy.window().then(win => { - cy.get('.floorplan .floorplan-plan > img').then(floorImg => { - const planxRatio = floorImg[0].width / floor.width - const planyRatio = floorImg[0].height / floor.height - cy.get('.floorplan .floorplan-plan-pin').should('exist').then(el => { - const pinMarginLeft = parseInt(win.getComputedStyle(el[0]).getPropertyValue('margin-left').match(/\d+/)) - const xPos = Math.round((room.left + (room.right - room.left) / 2) * planxRatio) - 25 + pinMarginLeft - const yPos = Math.round((room.top + (room.bottom - room.top) / 2) * planyRatio) - 40 - expect(el[0].offsetLeft).to.equal(xPos) - expect(el[0].offsetTop).to.equal(yPos) - }) - }) - }) - }) - }) - }) - } -}) diff --git a/cypress/fixtures/agenda-113-data.json b/cypress/fixtures/agenda-113-data.json deleted file mode 100644 index f8517d931..000000000 --- a/cypress/fixtures/agenda-113-data.json +++ /dev/null @@ -1,10281 +0,0 @@ -{ - "meeting": { - "number": "113", - "city": "Vienna", - "startDate": "2022-03-19", - "endDate": "2022-03-25", - "updated": "2022-03-23T07:52:27-07:00", - "timezone": "Europe/Vienna", - "infoNote": "Times on the text agenda are shown in Vienna local time, UTC +1.
\r\nPlease see our
Meeting FAQ for information about hybrid meetings, COVID-19 preparations and more.
\r\nTo see information on public side meetings, visit the meeting wiki.
\r\nFor our social/hallway space, please visit Gather. Password: notewell
\r\nFor Meetecho resources and tutorials, visit Preparing for IETF 113.", - "warningNote": "" - }, - "categories": [ - [ - { - "label": "ART", - "keyword": "art", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "avtcore", - "keyword": "avtcore", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "calext", - "keyword": "calext", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "cdni", - "keyword": "cdni", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "core", - "keyword": "core", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "dispatch", - "keyword": "dispatch", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "emailcore", - "keyword": "emailcore", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "httpapi", - "keyword": "httpapi", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "jmap", - "keyword": "jmap", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "mediaman", - "keyword": "mediaman", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "moq", - "keyword": "moq", - "toggled_by": [ - "bof", - "art" - ], - "is_bof": true - }, - { - "label": "regext", - "keyword": "regext", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "scim", - "keyword": "scim", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "sedate", - "keyword": "sedate", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "webtrans", - "keyword": "webtrans", - "toggled_by": [ - "art" - ], - "is_bof": false - }, - { - "label": "wish", - "keyword": "wish", - "toggled_by": [ - "art" - ], - "is_bof": false - } - ] - }, - { - "label": "GEN", - "keyword": "gen", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "gendispatch", - "keyword": "gendispatch", - "toggled_by": [ - "gen" - ], - "is_bof": false - }, - { - "label": "shmoo", - "keyword": "shmoo", - "toggled_by": [ - "gen" - ], - "is_bof": false - } - ] - }, - { - "label": "INT", - "keyword": "int", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "6lo", - "keyword": "6lo", - "toggled_by": [ - "int" - ], - "is_bof": false - }, - { - "label": "6man", - "keyword": "6man", - "toggled_by": [ - "int" - ], - "is_bof": false - }, - { - "label": "add", - "keyword": "add", - "toggled_by": [ - "int" - ], - "is_bof": false - }, - { - "label": "dmm", - "keyword": "dmm", - "toggled_by": [ - "int" - ], - "is_bof": false - }, - { - "label": "dprive", - "keyword": "dprive", - "toggled_by": [ - "int" - ], - "is_bof": false - }, - { - "label": "drip", - "keyword": "drip", - "toggled_by": [ - "int" - ], - "is_bof": false - }, - { - "label": "intarea", - "keyword": "intarea", - "toggled_by": [ - "int" - ], - "is_bof": false - }, - { - "label": "lpwan", - "keyword": "lpwan", - "toggled_by": [ - "int" - ], - "is_bof": false - }, - { - "label": "madinas", - "keyword": "madinas", - "toggled_by": [ - "int" - ], - "is_bof": false - }, - { - "label": "savnet", - "keyword": "savnet", - "toggled_by": [ - "bof", - "int" - ], - "is_bof": true - } - ] - }, - { - "label": "OPS", - "keyword": "ops", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "anima", - "keyword": "anima", - "toggled_by": [ - "ops" - ], - "is_bof": false - }, - { - "label": "bmwg", - "keyword": "bmwg", - "toggled_by": [ - "ops" - ], - "is_bof": false - }, - { - "label": "dnsop", - "keyword": "dnsop", - "toggled_by": [ - "ops" - ], - "is_bof": false - }, - { - "label": "grow", - "keyword": "grow", - "toggled_by": [ - "ops" - ], - "is_bof": false - }, - { - "label": "iotops", - "keyword": "iotops", - "toggled_by": [ - "ops" - ], - "is_bof": false - }, - { - "label": "mboned", - "keyword": "mboned", - "toggled_by": [ - "ops" - ], - "is_bof": false - }, - { - "label": "mops", - "keyword": "mops", - "toggled_by": [ - "ops" - ], - "is_bof": false - }, - { - "label": "netconf", - "keyword": "netconf", - "toggled_by": [ - "ops" - ], - "is_bof": false - }, - { - "label": "netmod", - "keyword": "netmod", - "toggled_by": [ - "ops" - ], - "is_bof": false - }, - { - "label": "opsawg", - "keyword": "opsawg", - "toggled_by": [ - "ops" - ], - "is_bof": false - }, - { - "label": "sidrops", - "keyword": "sidrops", - "toggled_by": [ - "ops" - ], - "is_bof": false - }, - { - "label": "v6ops", - "keyword": "v6ops", - "toggled_by": [ - "ops" - ], - "is_bof": false - } - ] - }, - { - "label": "RTG", - "keyword": "rtg", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "bess", - "keyword": "bess", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "bier", - "keyword": "bier", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "can", - "keyword": "can", - "toggled_by": [ - "bof", - "rtg" - ], - "is_bof": true - }, - { - "label": "ccamp", - "keyword": "ccamp", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "detnet", - "keyword": "detnet", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "idr", - "keyword": "idr", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "lisp", - "keyword": "lisp", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "lsr", - "keyword": "lsr", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "lsvr", - "keyword": "lsvr", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "manet", - "keyword": "manet", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "mpls", - "keyword": "mpls", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "pals", - "keyword": "pals", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "pce", - "keyword": "pce", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "pim", - "keyword": "pim", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "raw", - "keyword": "raw", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "rift", - "keyword": "rift", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "roll", - "keyword": "roll", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "rtgarea", - "keyword": "rtgarea", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "rtgwg", - "keyword": "rtgwg", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "spring", - "keyword": "spring", - "toggled_by": [ - "rtg" - ], - "is_bof": false - }, - { - "label": "teas", - "keyword": "teas", - "toggled_by": [ - "rtg" - ], - "is_bof": false - } - ] - }, - { - "label": "SEC", - "keyword": "sec", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "ace", - "keyword": "ace", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "acme", - "keyword": "acme", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "cose", - "keyword": "cose", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "dance", - "keyword": "dance", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "emu", - "keyword": "emu", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "gnap", - "keyword": "gnap", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "i2nsf", - "keyword": "i2nsf", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "ipsecme", - "keyword": "ipsecme", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "lake", - "keyword": "lake", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "lamps", - "keyword": "lamps", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "mls", - "keyword": "mls", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "oauth", - "keyword": "oauth", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "ohai", - "keyword": "ohai", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "openpgp", - "keyword": "openpgp", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "ppm", - "keyword": "ppm", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "privacypass", - "keyword": "privacypass", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "rats", - "keyword": "rats", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "saag", - "keyword": "saag", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "secdispatch", - "keyword": "secdispatch", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "suit", - "keyword": "suit", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "teep", - "keyword": "teep", - "toggled_by": [ - "sec" - ], - "is_bof": false - }, - { - "label": "tls", - "keyword": "tls", - "toggled_by": [ - "sec" - ], - "is_bof": false - } - ] - }, - { - "label": "TSV", - "keyword": "tsv", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "alto", - "keyword": "alto", - "toggled_by": [ - "tsv" - ], - "is_bof": false - }, - { - "label": "dtn", - "keyword": "dtn", - "toggled_by": [ - "tsv" - ], - "is_bof": false - }, - { - "label": "ippm", - "keyword": "ippm", - "toggled_by": [ - "tsv" - ], - "is_bof": false - }, - { - "label": "masque", - "keyword": "masque", - "toggled_by": [ - "tsv" - ], - "is_bof": false - }, - { - "label": "quic", - "keyword": "quic", - "toggled_by": [ - "tsv" - ], - "is_bof": false - }, - { - "label": "taps", - "keyword": "taps", - "toggled_by": [ - "tsv" - ], - "is_bof": false - }, - { - "label": "tcpm", - "keyword": "tcpm", - "toggled_by": [ - "tsv" - ], - "is_bof": false - }, - { - "label": "tsvarea", - "keyword": "tsvarea", - "toggled_by": [ - "tsv" - ], - "is_bof": false - }, - { - "label": "tsvwg", - "keyword": "tsvwg", - "toggled_by": [ - "tsv" - ], - "is_bof": false - } - ] - } - ], - [ - { - "label": "IAB", - "keyword": "iab", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "iabopen", - "keyword": "iabopen", - "toggled_by": [ - "iab" - ], - "is_bof": false - } - ] - }, - { - "label": "IRTF", - "keyword": "irtf", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "cfrg", - "keyword": "cfrg", - "toggled_by": [ - "irtf" - ], - "is_bof": false - }, - { - "label": "coinrg", - "keyword": "coinrg", - "toggled_by": [ - "irtf" - ], - "is_bof": false - }, - { - "label": "gaia", - "keyword": "gaia", - "toggled_by": [ - "irtf" - ], - "is_bof": false - }, - { - "label": "hrpc", - "keyword": "hrpc", - "toggled_by": [ - "irtf" - ], - "is_bof": false - }, - { - "label": "icnrg", - "keyword": "icnrg", - "toggled_by": [ - "irtf" - ], - "is_bof": false - }, - { - "label": "irtfopen", - "keyword": "irtfopen", - "toggled_by": [ - "irtf" - ], - "is_bof": false - }, - { - "label": "maprg", - "keyword": "maprg", - "toggled_by": [ - "irtf" - ], - "is_bof": false - }, - { - "label": "nmrg", - "keyword": "nmrg", - "toggled_by": [ - "irtf" - ], - "is_bof": false - }, - { - "label": "panrg", - "keyword": "panrg", - "toggled_by": [ - "irtf" - ], - "is_bof": false - }, - { - "label": "pearg", - "keyword": "pearg", - "toggled_by": [ - "irtf" - ], - "is_bof": false - }, - { - "label": "qirg", - "keyword": "qirg", - "toggled_by": [ - "irtf" - ], - "is_bof": false - } - ] - } - ], - [ - { - "label": "Administrative", - "keyword": "admin", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "IETF Registration", - "keyword": "ietf-registration", - "toggled_by": [ - "admin", - "secretariat" - ], - "is_bof": false - }, - { - "label": "INT AD Office Hours", - "keyword": "int-ad-office-hours", - "toggled_by": [ - "admin", - "iesg" - ], - "is_bof": false - }, - { - "label": "RTG AD Office Hours", - "keyword": "rtg-ad-office-hours", - "toggled_by": [ - "admin", - "iesg" - ], - "is_bof": false - }, - { - "label": "TSV AD Office Hours", - "keyword": "tsv-ad-office-hours", - "toggled_by": [ - "admin", - "iesg" - ], - "is_bof": false - }, - { - "label": "Gather Newcomers' Quick Connections (Note that pre-registration is required)", - "keyword": "gather-newcomers-quick-connections-note-that-pre-registration-is-required", - "toggled_by": [ - "admin", - "secretariat" - ], - "is_bof": false - }, - { - "label": "Onsite Newcomers' Quick Connections (Note that pre-registration is required)", - "keyword": "onsite-newcomers-quick-connections-note-that-pre-registration-is-required", - "toggled_by": [ - "admin", - "secretariat" - ], - "is_bof": false - }, - { - "label": "RPC Office Hours", - "keyword": "rpc-office-hours", - "toggled_by": [ - "admin", - "secretariat" - ], - "is_bof": false - }, - { - "label": "ISE Office Hours", - "keyword": "ise-office-hours", - "toggled_by": [ - "admin", - "secretariat" - ], - "is_bof": false - }, - { - "label": "SEC AD Office Hours", - "keyword": "sec-ad-office-hours", - "toggled_by": [ - "admin", - "iesg" - ], - "is_bof": false - }, - { - "label": "ART AD Office Hours", - "keyword": "art-ad-office-hours", - "toggled_by": [ - "admin", - "iesg" - ], - "is_bof": false - }, - { - "label": "IANA Office Hours", - "keyword": "iana-office-hours", - "toggled_by": [ - "admin", - "secretariat" - ], - "is_bof": false - }, - { - "label": "Newcomers' Feedback Session", - "keyword": "newcomers-feedback-session", - "toggled_by": [ - "admin", - "secretariat" - ], - "is_bof": false - } - ] - }, - { - "label": "Coding", - "keyword": "coding", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "Hackathon", - "keyword": "hackathon", - "toggled_by": [ - "coding", - "hackathon" - ], - "is_bof": false - }, - { - "label": "Code Sprint", - "keyword": "code-sprint", - "toggled_by": [ - "coding", - "tools" - ], - "is_bof": false - }, - { - "label": "Hackdemo Happy Hour", - "keyword": "hackdemo-happy-hour", - "toggled_by": [ - "coding", - "hackathon" - ], - "is_bof": false - } - ] - }, - { - "label": "Plenary", - "keyword": "plenary", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "IETF Plenary", - "keyword": "ietf-plenary", - "toggled_by": [ - "plenary", - "ietf" - ], - "is_bof": false - } - ] - }, - { - "label": "Presentation", - "keyword": "presentation", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "Hackathon Kickoff", - "keyword": "hackathon-kickoff", - "toggled_by": [ - "presentation", - "hackathon" - ], - "is_bof": false - }, - { - "label": "Hackathon Results Presentations", - "keyword": "hackathon-results-presentations", - "toggled_by": [ - "presentation", - "hackathon" - ], - "is_bof": false - }, - { - "label": "", - "keyword": null, - "toggled_by": [ - "presentation", - "iepg" - ], - "is_bof": false - }, - { - "label": "Hot RFC Lightning Talks", - "keyword": "hot-rfc-lightning-talks", - "toggled_by": [ - "presentation", - "hotrfc" - ], - "is_bof": false - }, - { - "label": "Host Speaker Series: IPv6 Adoption Worldwide: Momentum, Challenges and Next Steps", - "keyword": "host-speaker-series-ipv6-adoption-worldwide-momentum-challenges-and-next-steps", - "toggled_by": [ - "presentation", - "ietf" - ], - "is_bof": false - } - ] - }, - { - "label": "Social", - "keyword": "social", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "Welcome Reception", - "keyword": "welcome-reception", - "toggled_by": [ - "social", - "ietf" - ], - "is_bof": false - }, - { - "label": "Break", - "keyword": "break", - "toggled_by": [ - "social", - "secretariat" - ], - "is_bof": false - }, - { - "label": "Beverage and Snack Break", - "keyword": "beverage-and-snack-break", - "toggled_by": [ - "social", - "secretariat" - ], - "is_bof": false - }, - { - "label": "Newcomers' Dinner (Open to newcomers. Note that pre-registration is required and a $25USD fee will be charged.)", - "keyword": "newcomers-dinner-open-to-newcomers-note-that-pre-registration-is-required-and-a-25usd-fee-will-be-charged", - "toggled_by": [ - "social", - "secretariat" - ], - "is_bof": false - }, - { - "label": "Systers Networking Event", - "keyword": "systers-networking-event", - "toggled_by": [ - "social", - "systers" - ], - "is_bof": false - }, - { - "label": "Newcomers' Coffee Break (in Gather)", - "keyword": "newcomers-coffee-break-in-gather", - "toggled_by": [ - "social", - "emodir" - ], - "is_bof": false - }, - { - "label": "WG Chairs Lunch (For WG Chairs Only)", - "keyword": "wg-chairs-lunch-for-wg-chairs-only", - "toggled_by": [ - "social", - "emodir" - ], - "is_bof": false - }, - { - "label": "Beverage Break", - "keyword": "beverage-break", - "toggled_by": [ - "social", - "secretariat" - ], - "is_bof": false - } - ] - }, - { - "label": "Tutorial", - "keyword": "tutorial", - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "Tutorial: Newcomers' Overview", - "keyword": "tutorial-newcomers-overview", - "toggled_by": [ - "tutorial", - "emodir" - ], - "is_bof": false - } - ] - }, - { - "label": null, - "keyword": null, - "toggled_by": [], - "is_bof": false, - "children": [ - { - "label": "BoF", - "keyword": "bof", - "toggled_by": [], - "is_bof": false - }, - { - "label": "emodir", - "keyword": "emodir", - "toggled_by": [ - "gen" - ], - "is_bof": false - }, - { - "label": "Hackathon", - "keyword": "hackathon", - "toggled_by": [ - "gen" - ], - "is_bof": false - }, - { - "label": "hotrfc", - "keyword": "hotrfc", - "toggled_by": [ - "ietf" - ], - "is_bof": false - }, - { - "label": "IEPG", - "keyword": "iepg", - "toggled_by": [], - "is_bof": false - }, - { - "label": "Systers", - "keyword": "systers", - "toggled_by": [ - "gen" - ], - "is_bof": false - }, - { - "label": "Tools", - "keyword": "tools", - "toggled_by": [ - "gen" - ], - "is_bof": false - } - ] - } - ] - ], - "isCurrentMeeting": false, - "useHedgeDoc": true, - "schedule": [ - { - "id": 104180, - "sessionId": 29440, - "room": "Grand Klimt Hall 1/2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "hackathon", - "duration": 41400, - "name": "Hackathon", - "startDateTime": "2022-03-19T09:30:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "coding", - "hackathon", - "hackathon-sessc" - ], - "groupAcronym": "hackathon", - "groupName": "Hackathon", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-hackathon-sessc-02" - }, - "orderInMeeting": 1, - "short": "Hackathon", - "sessionToken": "sessc", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/hackathon", - "chatArchive": "https://www.ietf.org/jabber/logs/hackathon?C=M;O=D", - "recordings": [ - { - "id": 107273, - "name": "recording-113-hackathon-1", - "title": "Video recording for HACKATHON on 2022-03-19 at 09:30:00", - "url": "https://www.youtube.com/watch?v=TcSwaaeAdpc" - } - ], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29440.ics" - } - }, - { - "id": 104178, - "sessionId": 29439, - "room": "Park Suite 7", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "tools", - "duration": 21600, - "name": "Code Sprint", - "startDateTime": "2022-03-19T10:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "code-sprint", - "coding", - "tools" - ], - "groupAcronym": "tools", - "groupName": "The Tools Team", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "https://ietf.zoom.us/j/82964431863?pwd=V2RGU0NrYmpQMUczcWlESU1TUVpRZz09", - "flags": { - "agenda": false, - "showAgenda": true - }, - "agenda": { - "url": null - }, - "orderInMeeting": 1, - "short": "Code Sprint", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/tools", - "chatArchive": "https://www.ietf.org/jabber/logs/tools?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29439.ics" - } - }, - { - "id": 104179, - "sessionId": 29272, - "room": "Grand Klimt Hall 1/2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "hackathon", - "duration": 1800, - "name": "Hackathon Kickoff", - "startDateTime": "2022-03-19T10:30:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "hackathon", - "hackathon-kickoff", - "hackathon-sessa", - "presentation" - ], - "groupAcronym": "hackathon", - "groupName": "Hackathon", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "https://meetings.conf.meetecho.com/ietf113/?group=hackathon", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-hackathon-sessa-00" - }, - "orderInMeeting": 2, - "short": "Hackathon Kickoff", - "sessionToken": "sessa", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/hackathon", - "chatArchive": "https://www.ietf.org/jabber/logs/hackathon?C=M;O=D", - "recordings": [ - { - "id": 107279, - "name": "recording-113-hackathon-2", - "title": "Video recording for HACKATHON on 2022-03-19 at 10:30:00", - "url": "https://www.youtube.com/watch?v=KEe_oML3FMk" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf113/?group=hackathon", - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29272.ics" - } - }, - { - "id": 104181, - "sessionId": 29441, - "room": "Grand Klimt Hall 1/2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "hackathon", - "duration": 23400, - "name": "Hackathon", - "startDateTime": "2022-03-20T09:30:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "coding", - "hackathon", - "hackathon-sessd" - ], - "groupAcronym": "hackathon", - "groupName": "Hackathon", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-hackathon-sessd-00" - }, - "orderInMeeting": 3, - "short": "Hackathon", - "sessionToken": "sessd", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/hackathon", - "chatArchive": "https://www.ietf.org/jabber/logs/hackathon?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29441.ics" - } - }, - { - "id": 104172, - "sessionId": 29443, - "room": "Park Ensemble", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "secretariat", - "duration": 28800, - "name": "IETF Registration", - "startDateTime": "2022-03-20T10:00:00", - "status": "sched", - "type": "reg", - "isBoF": false, - "filterKeywords": [ - "admin", - "ietf-registration", - "secretariat", - "secretariat-sessa" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 1, - "short": "IETF Registration", - "sessionToken": "sessa", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29443.ics" - } - }, - { - "id": 104523, - "sessionId": 29469, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "emodir", - "duration": 3600, - "name": "Tutorial: Newcomers", - "startDateTime": "2022-03-20T12:30:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "emodir", - "emodir-sessb", - "tutorial", - "tutorial-newcomers-overview" - ], - "groupAcronym": "emodir", - "groupName": "Education, Mentoring and Outreach Directorate", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "https://meetings.conf.meetecho.com/ietf113/?group=emodir", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-emodir-sessb-00" - }, - "orderInMeeting": 1, - "short": "Tutorial: Newcomers' Overview", - "sessionToken": "sessb", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/emodir", - "chatArchive": "https://www.ietf.org/jabber/logs/emodir?C=M;O=D", - "recordings": [ - { - "id": 107274, - "name": "recording-113-emodir-1", - "title": "Video recording for EMODIR on 2022-03-20 at 12:30:00", - "url": "https://www.youtube.com/watch?v=kHcK2D05MnU" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf113/?group=emodir", - "audioStream": null, - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite113/?group=emodir", - "calendar": "/meeting/113/session/29469.ics" - } - }, - { - "id": 104768, - "sessionId": 29495, - "room": "Green Room 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "iesg", - "duration": 3600, - "name": "INT AD Office Hours", - "startDateTime": "2022-03-20T13:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "iesg", - "iesg-sesse", - "int-ad-office-hours" - ], - "groupAcronym": "iesg", - "groupName": "Internet Engineering Steering Group", - "groupParent": { - "acronym": "ietf" - }, - "note": "", - "remoteInstructions": "https://cisco.webex.com/cisco/j.php?MTID=mdd8ae7aaea1245e77276eccfb7abc275", - "flags": { - "agenda": false, - "showAgenda": true - }, - "agenda": { - "url": null - }, - "orderInMeeting": 3, - "short": "INT AD Office Hours", - "sessionToken": "sesse", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/iesg", - "chatArchive": "https://www.ietf.org/jabber/logs/iesg?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29495.ics" - } - }, - { - "id": 104541, - "sessionId": 29485, - "room": "Park Suite 1", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "iesg", - "duration": 3600, - "name": "RTG AD Office Hours", - "startDateTime": "2022-03-20T13:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "iesg", - "iesg-sessb", - "rtg-ad-office-hours" - ], - "groupAcronym": "iesg", - "groupName": "Internet Engineering Steering Group", - "groupParent": { - "acronym": "ietf" - }, - "note": "", - "remoteInstructions": "https://ietf.webex.com/meet/pr1424879951771", - "flags": { - "agenda": false, - "showAgenda": true - }, - "agenda": { - "url": null - }, - "orderInMeeting": 2, - "short": "RTG AD Office Hours", - "sessionToken": "sessb", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/iesg", - "chatArchive": "https://www.ietf.org/jabber/logs/iesg?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29485.ics" - } - }, - { - "id": 104537, - "sessionId": 29481, - "room": "Park Suite 6", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "iesg", - "duration": 3600, - "name": "TSV AD Office Hours", - "startDateTime": "2022-03-20T13:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "iesg", - "iesg-sessa", - "tsv-ad-office-hours" - ], - "groupAcronym": "iesg", - "groupName": "Internet Engineering Steering Group", - "groupParent": { - "acronym": "ietf" - }, - "note": "", - "remoteInstructions": "https://ietf.webex.com/ietf/j.php?MTID=m6cb0f6dbb61114a0d962cf5ef05ab3d0", - "flags": { - "agenda": false, - "showAgenda": true - }, - "agenda": { - "url": null - }, - "orderInMeeting": 1, - "short": "TSV AD Office Hours", - "sessionToken": "sessa", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/iesg", - "chatArchive": "https://www.ietf.org/jabber/logs/iesg?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29481.ics" - } - }, - { - "id": 104182, - "sessionId": 29273, - "room": "Grand Klimt Hall 1/2", - "location": {}, - "acronym": "hackathon", - "duration": 7200, - "name": "Hackathon Results Presentations", - "startDateTime": "2022-03-20T14:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "hackathon", - "hackathon-results-presentations", - "hackathon-sessb", - "presentation" - ], - "groupAcronym": "hackathon", - "groupName": "Hackathon", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "https://meetings.conf.meetecho.com/ietf113/?group=hackathon&item=2", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-hackathon-sessb-00" - }, - "orderInMeeting": 4, - "short": "Hackathon Results Presentations", - "sessionToken": "sessb", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/hackathon", - "chatArchive": "https://www.ietf.org/jabber/logs/hackathon?C=M;O=D", - "recordings": [], - "videoStream": "https://meetings.conf.meetecho.com/ietf113/?group=hackathon_2", - "audioStream": null, - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite113/?group=hackathon_2", - "calendar": "/meeting/113/session/29273.ics" - } - }, - { - "id": 104773, - "sessionId": 29500, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 3600, - "name": "Gather Newcomers' Quick Connections (Note that pre-registration is required)", - "startDateTime": "2022-03-20T16:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "gather-newcomers-quick-connections-note-that-pre-registration-is-required", - "secretariat", - "secretariat-sessbh" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 2, - "short": "Gather Newcomers' Quick Connections (Note that pre-registration is required)", - "sessionToken": "sessbh", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29500.ics" - } - }, - { - "id": 104524, - "sessionId": 29468, - "room": "Park Ensemble", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "secretariat", - "duration": 3600, - "name": "Newcomers' Quick Connections", - "startDateTime": "2022-03-20T16:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "onsite-newcomers-quick-connections-note-that-pre-registration-is-required", - "secretariat", - "secretariat-sesss" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 1, - "short": "Onsite Newcomers' Quick Connections (Note that pre-registration is required)", - "sessionToken": "sesss", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29468.ics" - } - }, - { - "id": 104187, - "sessionId": 29461, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "ietf", - "duration": 7200, - "name": "Welcome Reception", - "startDateTime": "2022-03-20T17:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "ietf", - "ietf-sessb", - "social", - "welcome-reception" - ], - "groupAcronym": "ietf", - "groupName": "IETF", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 1, - "short": "Welcome Reception", - "sessionToken": "sessb", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/ietf", - "chatArchive": "https://www.ietf.org/jabber/logs/ietf?C=M;O=D", - "recordings": [ - { - "id": 107626, - "name": "recording-113-ietf-2", - "title": "Video recording for IETF on 2022-03-20 at 17:00:00", - "url": "https://www.youtube.com/watch?v=V0-aTFE8YNw" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29461.ics" - } - }, - { - "id": 104538, - "sessionId": 29482, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "iepg", - "duration": 7200, - "name": "IEPG Meeting", - "startDateTime": "2022-03-20T18:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "iepg", - "presentation" - ], - "groupAcronym": "iepg", - "groupName": "IEPG", - "groupParent": {}, - "note": "", - "remoteInstructions": "https://meetings.conf.meetecho.com/ietf113/?group=iepg", - "flags": { - "agenda": false, - "showAgenda": true - }, - "agenda": { - "url": null - }, - "orderInMeeting": 1, - "short": "iepg", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/iepg", - "chatArchive": "https://www.ietf.org/jabber/logs/iepg?C=M;O=D", - "recordings": [ - { - "id": 107275, - "name": "recording-113-iepg-1", - "title": "Video recording for IEPG on 2022-03-20 at 18:00:00", - "url": "https://www.youtube.com/watch?v=u2wVZnJ3fo0" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf113/?group=iepg", - "audioStream": null, - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite113/?group=iepg", - "calendar": "/meeting/113/session/29482.ics" - } - }, - { - "id": 104766, - "sessionId": 29493, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "hotrfc", - "duration": 3600, - "name": "Hot RFC Lightning Talks", - "startDateTime": "2022-03-20T19:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "hot-rfc-lightning-talks", - "hotrfc", - "presentation" - ], - "groupAcronym": "hotrfc", - "groupName": "Hot RFC Lightning Talks", - "groupParent": { - "acronym": "ietf" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-hotrfc-sessa-09" - }, - "orderInMeeting": 1, - "short": "Hot RFC Lightning Talks", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/hotrfc", - "chatArchive": "https://www.ietf.org/jabber/logs/hotrfc?C=M;O=D", - "recordings": [ - { - "id": 107272, - "name": "recording-113-hotrfc-1", - "title": "Video recording for HOTRFC on 2022-03-20 at 19:00:00", - "url": "https://www.youtube.com/watch?v=rt-2H_AAucc" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29493.ics" - } - }, - { - "id": 104173, - "sessionId": 29444, - "room": "Park Ensemble", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "secretariat", - "duration": 28800, - "name": "IETF Registration", - "startDateTime": "2022-03-21T08:30:00", - "status": "sched", - "type": "reg", - "isBoF": false, - "filterKeywords": [ - "admin", - "ietf-registration", - "secretariat", - "secretariat-sessb" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 2, - "short": "IETF Registration", - "sessionToken": "sessb", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29444.ics" - } - }, - { - "id": 104769, - "sessionId": 29499, - "room": "Park Ensemble", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "secretariat", - "duration": 27000, - "name": "RPC Office Hours", - "startDateTime": "2022-03-21T09:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "rpc-office-hours", - "secretariat", - "secretariat-sessbg" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 3, - "short": "RPC Office Hours", - "sessionToken": "sessbg", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29499.ics" - } - }, - { - "id": 104525, - "sessionId": 29470, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "ISE Office Hours", - "startDateTime": "2022-03-21T09:30:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "ise-office-hours", - "secretariat", - "secretariat-sesst" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 4, - "short": "ISE Office Hours", - "sessionToken": "sesst", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29470.ics" - } - }, - { - "id": 104053, - "sessionId": 29339, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "dispatch", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-21T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "dispatch", - "regular" - ], - "groupAcronym": "dispatch", - "groupName": "Dispatch", - "groupParent": { - "acronym": "art" - }, - "note": "Joint with ARTAREA", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-dispatch-01" - }, - "orderInMeeting": 1, - "short": "dispatch", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/dispatch", - "chatArchive": "https://www.ietf.org/jabber/logs/dispatch?C=M;O=D", - "recordings": [ - { - "id": 107450, - "name": "recording-113-dispatch-1", - "title": "Video recording for DISPATCH on 2022-03-21 at 10:00:00", - "url": "https://www.youtube.com/watch?v=sW-VRK1U708" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29339.ics" - } - }, - { - "id": 104054, - "sessionId": 29416, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "dmm", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-21T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "dmm", - "int", - "regular" - ], - "groupAcronym": "dmm", - "groupName": "Distributed Mobility Management", - "groupParent": { - "acronym": "int" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-dmm-00" - }, - "orderInMeeting": 1, - "short": "dmm", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/dmm", - "chatArchive": "https://www.ietf.org/jabber/logs/dmm?C=M;O=D", - "recordings": [ - { - "id": 107452, - "name": "recording-113-dmm-1", - "title": "Video recording for DMM on 2022-03-21 at 10:00:00", - "url": "https://www.youtube.com/watch?v=otDY-x7--JE" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29416.ics" - } - }, - { - "id": 104055, - "sessionId": 29284, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "v6ops", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-21T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "ops", - "regular", - "v6ops" - ], - "groupAcronym": "v6ops", - "groupName": "IPv6 Operations", - "groupParent": { - "acronym": "ops" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-v6ops-02" - }, - "orderInMeeting": 1, - "short": "v6ops", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/v6ops", - "chatArchive": "https://www.ietf.org/jabber/logs/v6ops?C=M;O=D", - "recordings": [ - { - "id": 107454, - "name": "recording-113-v6ops-1", - "title": "Video recording for V6OPS on 2022-03-21 at 10:00:00", - "url": "https://www.youtube.com/watch?v=BRnk-C9tOPU" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29284.ics" - } - }, - { - "id": 104056, - "sessionId": 29326, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "bess", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-21T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "bess", - "regular", - "rtg" - ], - "groupAcronym": "bess", - "groupName": "BGP Enabled ServiceS", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-bess-02" - }, - "orderInMeeting": 1, - "short": "bess", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/bess", - "chatArchive": "https://www.ietf.org/jabber/logs/bess?C=M;O=D", - "recordings": [ - { - "id": 107451, - "name": "recording-113-bess-1", - "title": "Video recording for BESS on 2022-03-21 at 10:00:00", - "url": "https://www.youtube.com/watch?v=9kERhqbJIz4" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29326.ics" - } - }, - { - "id": 104057, - "sessionId": 29389, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "raw", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-21T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "raw", - "regular", - "rtg" - ], - "groupAcronym": "raw", - "groupName": "Reliable and Available Wireless", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-raw-02" - }, - "orderInMeeting": 1, - "short": "raw", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/raw", - "chatArchive": "https://www.ietf.org/jabber/logs/raw?C=M;O=D", - "recordings": [ - { - "id": 107453, - "name": "recording-113-raw-1", - "title": "Video recording for RAW on 2022-03-21 at 10:00:00", - "url": "https://www.youtube.com/watch?v=lgTrZJC79ZA" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29389.ics" - } - }, - { - "id": 104154, - "sessionId": 29406, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "openpgp", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-21T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "openpgp", - "regular", - "sec" - ], - "groupAcronym": "openpgp", - "groupName": "Open Specification for Pretty Good Privacy", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-openpgp-03" - }, - "orderInMeeting": 1, - "short": "openpgp", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/openpgp", - "chatArchive": "https://www.ietf.org/jabber/logs/openpgp?C=M;O=D", - "recordings": [ - { - "id": 107448, - "name": "recording-113-openpgp-1", - "title": "Video recording for OPENPGP on 2022-03-21 at 10:00:00", - "url": "https://www.youtube.com/watch?v=wTYxGs5zm2M" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29406.ics" - } - }, - { - "id": 104059, - "sessionId": 29428, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "teep", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-21T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "sec", - "teep" - ], - "groupAcronym": "teep", - "groupName": "Trusted Execution Environment Provisioning", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-teep-02" - }, - "orderInMeeting": 1, - "short": "teep", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/teep", - "chatArchive": "https://www.ietf.org/jabber/logs/teep?C=M;O=D", - "recordings": [ - { - "id": 107455, - "name": "recording-113-teep-1", - "title": "Video recording for TEEP on 2022-03-21 at 10:00:00", - "url": "https://www.youtube.com/watch?v=rl-8imBGNV8" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29428.ics" - } - }, - { - "id": 104122, - "sessionId": 29330, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "ippm", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-21T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "ippm", - "regular", - "tsv" - ], - "groupAcronym": "ippm", - "groupName": "IP Performance Measurement", - "groupParent": { - "acronym": "tsv" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-ippm-03" - }, - "orderInMeeting": 1, - "short": "ippm", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/ippm", - "chatArchive": "https://www.ietf.org/jabber/logs/ippm?C=M;O=D", - "recordings": [ - { - "id": 107449, - "name": "recording-113-ippm-1", - "title": "Video recording for IPPM on 2022-03-21 at 10:00:00", - "url": "https://www.youtube.com/watch?v=rMw0QwnS16k" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29330.ics" - } - }, - { - "id": 104163, - "sessionId": 29449, - "room": "Yard and Park Ensemble", - "location": {}, - "acronym": "secretariat", - "duration": 3600, - "name": "Lunch Break", - "startDateTime": "2022-03-21T12:00:00", - "status": "sched", - "type": "break", - "isBoF": false, - "filterKeywords": [ - "break", - "secretariat", - "secretariat-sessg", - "social" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 1, - "short": "Break", - "sessionToken": "sessg", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29449.ics" - } - }, - { - "id": 104061, - "sessionId": 29300, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "sedate", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-21T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "regular", - "sedate" - ], - "groupAcronym": "sedate", - "groupName": "Serialising Extended Data About Times and Events", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-sedate-00" - }, - "orderInMeeting": 1, - "short": "sedate", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/sedate", - "chatArchive": "https://www.ietf.org/jabber/logs/sedate?C=M;O=D", - "recordings": [ - { - "id": 107278, - "name": "recording-113-sedate-1", - "title": "Video recording for SEDATE on 2022-03-21 at 13:00:00", - "url": "https://www.youtube.com/watch?v=msDNoiA8vAo" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29300.ics" - } - }, - { - "id": 104062, - "sessionId": 29359, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "wish", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-21T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "regular", - "wish" - ], - "groupAcronym": "wish", - "groupName": "WebRTC Ingest Signaling over HTTPS", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-wish-00" - }, - "orderInMeeting": 1, - "short": "wish", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/wish", - "chatArchive": "https://www.ietf.org/jabber/logs/wish?C=M;O=D", - "recordings": [ - { - "id": 107281, - "name": "recording-113-wish-1", - "title": "Video recording for WISH on 2022-03-21 at 13:00:00", - "url": "https://www.youtube.com/watch?v=vBIlf0L1RTM" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29359.ics" - } - }, - { - "id": 104063, - "sessionId": 29423, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "pearg", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-21T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "irtf", - "pearg", - "regular" - ], - "groupAcronym": "pearg", - "groupName": "Privacy Enhancements and Assessments Research Group", - "groupParent": { - "acronym": "irtf" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-pearg-02" - }, - "orderInMeeting": 1, - "short": "pearg", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/pearg", - "chatArchive": "https://www.ietf.org/jabber/logs/pearg?C=M;O=D", - "recordings": [ - { - "id": 107282, - "name": "recording-113-pearg-1", - "title": "Video recording for PEARG on 2022-03-21 at 13:00:00", - "url": "https://www.youtube.com/watch?v=eWPeHsMz8Uo" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29423.ics" - } - }, - { - "id": 104064, - "sessionId": 29424, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "manet", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-21T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "manet", - "regular", - "rtg" - ], - "groupAcronym": "manet", - "groupName": "Mobile Ad-hoc Networks", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-manet-00" - }, - "orderInMeeting": 1, - "short": "manet", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/manet", - "chatArchive": "https://www.ietf.org/jabber/logs/manet?C=M;O=D", - "recordings": [ - { - "id": 107280, - "name": "recording-113-manet-1", - "title": "Video recording for MANET on 2022-03-21 at 13:00:00", - "url": "https://www.youtube.com/watch?v=wNtJ170kfis" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29424.ics" - } - }, - { - "id": 104065, - "sessionId": 29280, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "pce", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-21T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "pce", - "pce-sessa", - "regular", - "rtg" - ], - "groupAcronym": "pce", - "groupName": "Path Computation Element", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-pce-08" - }, - "orderInMeeting": 1, - "short": "pce", - "sessionToken": "sessa", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/pce", - "chatArchive": "https://www.ietf.org/jabber/logs/pce?C=M;O=D", - "recordings": [ - { - "id": 107271, - "name": "recording-113-pce-1", - "title": "Video recording for PCE on 2022-03-21 at 13:00:00", - "url": "https://www.youtube.com/watch?v=0B42q75br24" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29280.ics" - } - }, - { - "id": 104066, - "sessionId": 29279, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "acme", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-21T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "acme", - "regular", - "sec" - ], - "groupAcronym": "acme", - "groupName": "Automated Certificate Management Environment", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-acme-00" - }, - "orderInMeeting": 1, - "short": "acme", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/acme", - "chatArchive": "https://www.ietf.org/jabber/logs/acme?C=M;O=D", - "recordings": [ - { - "id": 107276, - "name": "recording-113-acme-1", - "title": "Video recording for ACME on 2022-03-21 at 13:00:00", - "url": "https://www.youtube.com/watch?v=g11bCfSfmIU" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29279.ics" - } - }, - { - "id": 104067, - "sessionId": 29308, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "cose", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-21T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "cose", - "regular", - "sec" - ], - "groupAcronym": "cose", - "groupName": "CBOR Object Signing and Encryption", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-cose-01" - }, - "orderInMeeting": 1, - "short": "cose", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/cose", - "chatArchive": "https://www.ietf.org/jabber/logs/cose?C=M;O=D", - "recordings": [ - { - "id": 107277, - "name": "recording-113-cose-1", - "title": "Video recording for COSE on 2022-03-21 at 13:00:00", - "url": "https://www.youtube.com/watch?v=ySETUSkxhsg" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29308.ics" - } - }, - { - "id": 104068, - "sessionId": 29380, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "tsvwg", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-21T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "tsv", - "tsvwg", - "tsvwg-sessa" - ], - "groupAcronym": "tsvwg", - "groupName": "Transport Area Working Group", - "groupParent": { - "acronym": "tsv" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-tsvwg-07" - }, - "orderInMeeting": 1, - "short": "tsvwg", - "sessionToken": "sessa", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/tsvwg", - "chatArchive": "https://www.ietf.org/jabber/logs/tsvwg?C=M;O=D", - "recordings": [ - { - "id": 107460, - "name": "recording-113-tsvwg-1", - "title": "Video recording for TSVWG on 2022-03-21 at 13:00:00", - "url": "https://www.youtube.com/watch?v=wia5eZJf7HE" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29380.ics" - } - }, - { - "id": 104167, - "sessionId": 29454, - "room": "Yard and Park Ensemble", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "Beverage and Snack Break", - "startDateTime": "2022-03-21T14:00:00", - "status": "sched", - "type": "break", - "isBoF": false, - "filterKeywords": [ - "beverage-and-snack-break", - "secretariat", - "secretariat-sessl", - "social" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 2, - "short": "Beverage and Snack Break", - "sessionToken": "sessl", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29454.ics" - } - }, - { - "id": 104526, - "sessionId": 29471, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "ISE Office Hours", - "startDateTime": "2022-03-21T14:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "ise-office-hours", - "secretariat", - "secretariat-sessu" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 5, - "short": "ISE Office Hours", - "sessionToken": "sessu", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29471.ics" - } - }, - { - "id": 104070, - "sessionId": 29298, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "jmap", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-21T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "jmap", - "regular" - ], - "groupAcronym": "jmap", - "groupName": "JSON Mail Access Protocol", - "groupParent": { - "acronym": "art" - }, - "note": "Joint with EXTRA", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-jmap-00" - }, - "orderInMeeting": 1, - "short": "jmap", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/jmap", - "chatArchive": "https://www.ietf.org/jabber/logs/jmap?C=M;O=D", - "recordings": [ - { - "id": 107456, - "name": "recording-113-jmap-1", - "title": "Video recording for JMAP on 2022-03-21 at 14:30:00", - "url": "https://www.youtube.com/watch?v=2YfZMoSBLJA" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29298.ics" - } - }, - { - "id": 104071, - "sessionId": 29354, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "gendispatch", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-21T14:30:00", - "status": "canceled", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "gen", - "gendispatch", - "regular" - ], - "groupAcronym": "gendispatch", - "groupName": "General Area Dispatch", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 1, - "short": "gendispatch", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/gendispatch", - "chatArchive": "https://www.ietf.org/jabber/logs/gendispatch?C=M;O=D", - "recordings": [], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29354.ics" - } - }, - { - "id": 104072, - "sessionId": 29370, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "mops", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-21T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "mops", - "ops", - "regular" - ], - "groupAcronym": "mops", - "groupName": "Media OPerationS", - "groupParent": { - "acronym": "ops" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-mops-04" - }, - "orderInMeeting": 1, - "short": "mops", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/mops", - "chatArchive": "https://www.ietf.org/jabber/logs/mops?C=M;O=D", - "recordings": [ - { - "id": 107459, - "name": "recording-113-mops-1", - "title": "Video recording for MOPS on 2022-03-21 at 14:30:00", - "url": "https://www.youtube.com/watch?v=6UB6zY1q0XU" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29370.ics" - } - }, - { - "id": 104073, - "sessionId": 29291, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "netconf", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-21T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "netconf", - "ops", - "regular" - ], - "groupAcronym": "netconf", - "groupName": "Network Configuration", - "groupParent": { - "acronym": "ops" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-netconf-03" - }, - "orderInMeeting": 1, - "short": "netconf", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/netconf", - "chatArchive": "https://www.ietf.org/jabber/logs/netconf?C=M;O=D", - "recordings": [ - { - "id": 107462, - "name": "recording-113-netconf-1", - "title": "Video recording for NETCONF on 2022-03-21 at 14:30:00", - "url": "https://www.youtube.com/watch?v=8Maze4HunuU" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29291.ics" - } - }, - { - "id": 104074, - "sessionId": 29310, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "rtgwg", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-21T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "rtg", - "rtgwg" - ], - "groupAcronym": "rtgwg", - "groupName": "Routing Area Working Group", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-rtgwg-02" - }, - "orderInMeeting": 1, - "short": "rtgwg", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/rtgwg", - "chatArchive": "https://www.ietf.org/jabber/logs/rtgwg?C=M;O=D", - "recordings": [ - { - "id": 107463, - "name": "recording-113-rtgwg-1", - "title": "Video recording for RTGWG on 2022-03-21 at 14:30:00", - "url": "https://www.youtube.com/watch?v=BNv4Y_9nM-8" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29310.ics" - } - }, - { - "id": 104075, - "sessionId": 29382, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "lake", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-21T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "lake", - "regular", - "sec" - ], - "groupAcronym": "lake", - "groupName": "Lightweight Authenticated Key Exchange", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-lake-04" - }, - "orderInMeeting": 1, - "short": "lake", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/lake", - "chatArchive": "https://www.ietf.org/jabber/logs/lake?C=M;O=D", - "recordings": [ - { - "id": 107461, - "name": "recording-113-lake-1", - "title": "Video recording for LAKE on 2022-03-21 at 14:30:00", - "url": "https://www.youtube.com/watch?v=9cZ2oJ4KDxQ" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29382.ics" - } - }, - { - "id": 104076, - "sessionId": 29293, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "oauth", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-21T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "oauth", - "oauth-sessb", - "regular", - "sec" - ], - "groupAcronym": "oauth", - "groupName": "Web Authorization Protocol", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-oauth-00" - }, - "orderInMeeting": 1, - "short": "oauth", - "sessionToken": "sessb", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/oauth", - "chatArchive": "https://www.ietf.org/jabber/logs/oauth?C=M;O=D", - "recordings": [ - { - "id": 107457, - "name": "recording-113-oauth-1", - "title": "Video recording for OAUTH on 2022-03-21 at 14:30:00", - "url": "https://www.youtube.com/watch?v=2x1sAYn59UU" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29293.ics" - } - }, - { - "id": 104077, - "sessionId": 29334, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "masque", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-21T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "masque", - "regular", - "tsv" - ], - "groupAcronym": "masque", - "groupName": "Multiplexed Application Substrate over QUIC Encryption", - "groupParent": { - "acronym": "tsv" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-masque-00" - }, - "orderInMeeting": 1, - "short": "masque", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/masque", - "chatArchive": "https://www.ietf.org/jabber/logs/masque?C=M;O=D", - "recordings": [ - { - "id": 107458, - "name": "recording-113-masque-1", - "title": "Video recording for MASQUE on 2022-03-21 at 14:30:00", - "url": "https://www.youtube.com/watch?v=ZJmwp5lA45g" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29334.ics" - } - }, - { - "id": 104767, - "sessionId": 29494, - "room": "Park Suite 6", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "iesg", - "duration": 3600, - "name": "SEC AD Office Hours", - "startDateTime": "2022-03-21T16:45:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "iesg", - "iesg-sessd", - "sec-ad-office-hours" - ], - "groupAcronym": "iesg", - "groupName": "Internet Engineering Steering Group", - "groupParent": { - "acronym": "ietf" - }, - "note": "", - "remoteInstructions": "https://ietf.webex.com/ietf/j.php?MTID=m764e32a6866d3e8c47ced2bccdbb1e24", - "flags": { - "agenda": false, - "showAgenda": true - }, - "agenda": { - "url": null - }, - "orderInMeeting": 4, - "short": "SEC AD Office Hours", - "sessionToken": "sessd", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/iesg", - "chatArchive": "https://www.ietf.org/jabber/logs/iesg?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29494.ics" - } - }, - { - "id": 104183, - "sessionId": 29442, - "room": "Grand Klimt Hall 1", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "hackathon", - "duration": 5400, - "name": "Hackdemo Happy Hour", - "startDateTime": "2022-03-21T17:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "coding", - "hackathon", - "hackathon-sesse", - "hackdemo-happy-hour" - ], - "groupAcronym": "hackathon", - "groupName": "Hackathon", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 5, - "short": "Hackdemo Happy Hour", - "sessionToken": "sesse", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/hackathon", - "chatArchive": "https://www.ietf.org/jabber/logs/hackathon?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29442.ics" - } - }, - { - "id": 104184, - "sessionId": 29459, - "room": "Restaurant Lenz Overflow Room", - "location": {}, - "acronym": "secretariat", - "duration": 5400, - "name": "Newcomers Dinner", - "startDateTime": "2022-03-21T19:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "newcomers-dinner-open-to-newcomers-note-that-pre-registration-is-required-and-a-25usd-fee-will-be-charged", - "secretariat", - "secretariat-sessq", - "social" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 6, - "short": "Newcomers' Dinner (Open to newcomers. Note that pre-registration is required and a $25USD fee will be charged.)", - "sessionToken": "sessq", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29459.ics" - } - }, - { - "id": 104542, - "sessionId": 29486, - "room": "Park Suite 6", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "iesg", - "duration": 3600, - "name": "ART AD Office Hours", - "startDateTime": "2022-03-22T08:30:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "art-ad-office-hours", - "iesg", - "iesg-sessc" - ], - "groupAcronym": "iesg", - "groupName": "Internet Engineering Steering Group", - "groupParent": { - "acronym": "ietf" - }, - "note": "", - "remoteInstructions": "https://ietf.webex.com/ietf/j.php?MTID=m1a4717da352ffafc03920849b0732dce", - "flags": { - "agenda": false, - "showAgenda": true - }, - "agenda": { - "url": null - }, - "orderInMeeting": 5, - "short": "ART AD Office Hours", - "sessionToken": "sessc", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/iesg", - "chatArchive": "https://www.ietf.org/jabber/logs/iesg?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29486.ics" - } - }, - { - "id": 104174, - "sessionId": 29445, - "room": "Park Ensemble", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "secretariat", - "duration": 28800, - "name": "IETF Registration", - "startDateTime": "2022-03-22T08:30:00", - "status": "sched", - "type": "reg", - "isBoF": false, - "filterKeywords": [ - "admin", - "ietf-registration", - "secretariat", - "secretariat-sessc" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 3, - "short": "IETF Registration", - "sessionToken": "sessc", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29445.ics" - } - }, - { - "id": 104188, - "sessionId": 29462, - "room": "Restaurant Lenz Overflow Room", - "location": {}, - "acronym": "systers", - "duration": 3600, - "name": "Systers Networking Event", - "startDateTime": "2022-03-22T08:45:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "social", - "systers", - "systers-networking-event" - ], - "groupAcronym": "systers", - "groupName": "Systers", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 1, - "short": "Systers Networking Event", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/systers", - "chatArchive": "https://www.ietf.org/jabber/logs/systers?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29462.ics" - } - }, - { - "id": 104770, - "sessionId": 29498, - "room": "Park Ensemble", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "secretariat", - "duration": 27000, - "name": "RPC Office Hours", - "startDateTime": "2022-03-22T09:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "rpc-office-hours", - "secretariat", - "secretariat-sessbf" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 7, - "short": "RPC Office Hours", - "sessionToken": "sessbf", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29498.ics" - } - }, - { - "id": 104527, - "sessionId": 29472, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "ISE Office Hours", - "startDateTime": "2022-03-22T09:30:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "ise-office-hours", - "secretariat", - "secretariat-sessv" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 8, - "short": "ISE Office Hours", - "sessionToken": "sessv", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29472.ics" - } - }, - { - "id": 104078, - "sessionId": 29301, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "calext", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-22T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "calext", - "regular" - ], - "groupAcronym": "calext", - "groupName": "Calendaring Extensions", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-calext-01" - }, - "orderInMeeting": 1, - "short": "calext", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/calext", - "chatArchive": "https://www.ietf.org/jabber/logs/calext?C=M;O=D", - "recordings": [ - { - "id": 107468, - "name": "recording-113-calext-1", - "title": "Video recording for CALEXT on 2022-03-22 at 10:00:00", - "url": "https://www.youtube.com/watch?v=2s5jq8FG8F8" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29301.ics" - } - }, - { - "id": 104079, - "sessionId": 29282, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "6man", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-22T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "6man", - "int", - "regular" - ], - "groupAcronym": "6man", - "groupName": "IPv6 Maintenance", - "groupParent": { - "acronym": "int" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-6man-04" - }, - "orderInMeeting": 1, - "short": "6man", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/6man", - "chatArchive": "https://www.ietf.org/jabber/logs/6man?C=M;O=D", - "recordings": [ - { - "id": 107522, - "name": "recording-113-6man-1", - "title": "Video recording for 6MAN on 2022-03-22 at 10:00:00", - "url": "https://www.youtube.com/watch?v=PtJdmQb-ImM" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29282.ics" - } - }, - { - "id": 104080, - "sessionId": 29436, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "gaia", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-22T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "gaia", - "irtf", - "regular" - ], - "groupAcronym": "gaia", - "groupName": "Global Access to the Internet for All", - "groupParent": { - "acronym": "irtf" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-gaia-02" - }, - "orderInMeeting": 1, - "short": "gaia", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/gaia", - "chatArchive": "https://www.ietf.org/jabber/logs/gaia?C=M;O=D", - "recordings": [ - { - "id": 107475, - "name": "recording-113-gaia-1", - "title": "Video recording for GAIA on 2022-03-22 at 10:00:00", - "url": "https://www.youtube.com/watch?v=2FRUlormZEA" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29436.ics" - } - }, - { - "id": 104081, - "sessionId": 29286, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "dnsop", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-22T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "dnsop", - "ops", - "regular" - ], - "groupAcronym": "dnsop", - "groupName": "Domain Name System Operations", - "groupParent": { - "acronym": "ops" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-dnsop-04" - }, - "orderInMeeting": 1, - "short": "dnsop", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/dnsop", - "chatArchive": "https://www.ietf.org/jabber/logs/dnsop?C=M;O=D", - "recordings": [ - { - "id": 107473, - "name": "recording-113-dnsop-1", - "title": "Video recording for DNSOP on 2022-03-22 at 10:00:00", - "url": "https://www.youtube.com/watch?v=7HxcmvFOnlU" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29286.ics" - } - }, - { - "id": 104082, - "sessionId": 29323, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "netmod", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-22T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "netmod", - "ops", - "regular" - ], - "groupAcronym": "netmod", - "groupName": "Network Modeling", - "groupParent": { - "acronym": "ops" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-netmod-00" - }, - "orderInMeeting": 1, - "short": "netmod", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/netmod", - "chatArchive": "https://www.ietf.org/jabber/logs/netmod?C=M;O=D", - "recordings": [ - { - "id": 107481, - "name": "recording-113-netmod-1", - "title": "Video recording for NETMOD on 2022-03-22 at 10:00:00", - "url": "https://www.youtube.com/watch?v=AZgPzExPLTs" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29323.ics" - } - }, - { - "id": 104083, - "sessionId": 29432, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "can", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-22T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": true, - "filterKeywords": [ - "bof", - "can", - "regular", - "rtg" - ], - "groupAcronym": "can", - "groupName": "Computing-Aware Networking", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-can-01" - }, - "orderInMeeting": 1, - "short": "can", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/can", - "chatArchive": "https://www.ietf.org/jabber/logs/can?C=M;O=D", - "recordings": [ - { - "id": 107465, - "name": "recording-113-can-1", - "title": "Video recording for CAN on 2022-03-22 at 10:00:00", - "url": "https://www.youtube.com/watch?v=_0uanSBJz5c" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29432.ics" - } - }, - { - "id": 104084, - "sessionId": 29425, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "rats", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-22T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "rats", - "rats-sessa", - "regular", - "sec" - ], - "groupAcronym": "rats", - "groupName": "Remote ATtestation ProcedureS", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-rats-01" - }, - "orderInMeeting": 1, - "short": "rats", - "sessionToken": "sessa", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/rats", - "chatArchive": "https://www.ietf.org/jabber/logs/rats?C=M;O=D", - "recordings": [ - { - "id": 107521, - "name": "recording-113-rats-1", - "title": "Video recording for RATS on 2022-03-22 at 10:00:00", - "url": "https://www.youtube.com/watch?v=m6oSoJE1G1Q" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29425.ics" - } - }, - { - "id": 104085, - "sessionId": 29302, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "quic", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-22T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "quic", - "regular", - "tsv" - ], - "groupAcronym": "quic", - "groupName": "QUIC", - "groupParent": { - "acronym": "tsv" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-quic-01" - }, - "orderInMeeting": 1, - "short": "quic", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/quic", - "chatArchive": "https://www.ietf.org/jabber/logs/quic?C=M;O=D", - "recordings": [ - { - "id": 107520, - "name": "recording-113-quic-1", - "title": "Video recording for QUIC on 2022-03-22 at 10:00:00", - "url": "https://www.youtube.com/watch?v=yHyv7ay6mIk" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29302.ics" - } - }, - { - "id": 104164, - "sessionId": 29450, - "room": "Yard and Park Ensemble", - "location": {}, - "acronym": "secretariat", - "duration": 3600, - "name": "Lunch Break", - "startDateTime": "2022-03-22T12:00:00", - "status": "sched", - "type": "break", - "isBoF": false, - "filterKeywords": [ - "break", - "secretariat", - "secretariat-sessh", - "social" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 3, - "short": "Break", - "sessionToken": "sessh", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29450.ics" - } - }, - { - "id": 104539, - "sessionId": 29483, - "room": "Gather", - "location": {}, - "acronym": "emodir", - "duration": 1800, - "name": "Newcomers' Coffee Break", - "startDateTime": "2022-03-22T12:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "emodir", - "emodir-sessc", - "newcomers-coffee-break-in-gather", - "social" - ], - "groupAcronym": "emodir", - "groupName": "Education, Mentoring and Outreach Directorate", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 2, - "short": "Newcomers' Coffee Break (in Gather)", - "sessionToken": "sessc", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/emodir", - "chatArchive": "https://www.ietf.org/jabber/logs/emodir?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29483.ics" - } - }, - { - "id": 104086, - "sessionId": 29392, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "regext", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-22T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "regext", - "regular" - ], - "groupAcronym": "regext", - "groupName": "Registration Protocols Extensions", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-regext-01" - }, - "orderInMeeting": 1, - "short": "regext", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/regext", - "chatArchive": "https://www.ietf.org/jabber/logs/regext?C=M;O=D", - "recordings": [ - { - "id": 107477, - "name": "recording-113-regext-1", - "title": "Video recording for REGEXT on 2022-03-22 at 13:00:00", - "url": "https://www.youtube.com/watch?v=zs3oAPaKQ9I" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29392.ics" - } - }, - { - "id": 104087, - "sessionId": 29312, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "lpwan", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-22T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "int", - "lpwan", - "regular" - ], - "groupAcronym": "lpwan", - "groupName": "IPv6 over Low Power Wide-Area Networks", - "groupParent": { - "acronym": "int" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-lpwan-02" - }, - "orderInMeeting": 1, - "short": "lpwan", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/lpwan", - "chatArchive": "https://www.ietf.org/jabber/logs/lpwan?C=M;O=D", - "recordings": [ - { - "id": 107464, - "name": "recording-113-lpwan-1", - "title": "Video recording for LPWAN on 2022-03-22 at 13:00:00", - "url": "https://www.youtube.com/watch?v=a7MPB-hgk_E" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29312.ics" - } - }, - { - "id": 104088, - "sessionId": 29395, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "qirg", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-22T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "irtf", - "qirg", - "regular" - ], - "groupAcronym": "qirg", - "groupName": "Quantum Internet Research Group", - "groupParent": { - "acronym": "irtf" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-qirg-01" - }, - "orderInMeeting": 1, - "short": "qirg", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/qirg", - "chatArchive": "https://www.ietf.org/jabber/logs/qirg?C=M;O=D", - "recordings": [ - { - "id": 107467, - "name": "recording-113-qirg-1", - "title": "Video recording for QIRG on 2022-03-22 at 13:00:00", - "url": "https://www.youtube.com/watch?v=ugsZgqe1Wh0" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29395.ics" - } - }, - { - "id": 104089, - "sessionId": 29336, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "lisp", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-22T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "lisp", - "regular", - "rtg" - ], - "groupAcronym": "lisp", - "groupName": "Locator/ID Separation Protocol", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-lisp-03" - }, - "orderInMeeting": 1, - "short": "lisp", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/lisp", - "chatArchive": "https://www.ietf.org/jabber/logs/lisp?C=M;O=D", - "recordings": [ - { - "id": 107476, - "name": "recording-113-lisp-1", - "title": "Video recording for LISP on 2022-03-22 at 13:00:00", - "url": "https://www.youtube.com/watch?v=RzwTCgkoFmU" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29336.ics" - } - }, - { - "id": 104090, - "sessionId": 29281, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "pce", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-22T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "pce", - "pce-sessb", - "regular", - "rtg" - ], - "groupAcronym": "pce", - "groupName": "Path Computation Element", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-pce-08" - }, - "orderInMeeting": 2, - "short": "pce", - "sessionToken": "sessb", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/pce", - "chatArchive": "https://www.ietf.org/jabber/logs/pce?C=M;O=D", - "recordings": [ - { - "id": 107469, - "name": "recording-113-pce-2", - "title": "Video recording for PCE on 2022-03-22 at 13:00:00", - "url": "https://www.youtube.com/watch?v=bEvqcX1uPI4" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29281.ics" - } - }, - { - "id": 104091, - "sessionId": 29341, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "ace", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-22T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "ace", - "regular", - "sec" - ], - "groupAcronym": "ace", - "groupName": "Authentication and Authorization for Constrained Environments", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-ace-00" - }, - "orderInMeeting": 1, - "short": "ace", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/ace", - "chatArchive": "https://www.ietf.org/jabber/logs/ace?C=M;O=D", - "recordings": [ - { - "id": 107471, - "name": "recording-113-ace-1", - "title": "Video recording for ACE on 2022-03-22 at 13:00:00", - "url": "https://www.youtube.com/watch?v=klCxFok9p5w" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29341.ics" - } - }, - { - "id": 104092, - "sessionId": 29379, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "emu", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-22T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "emu", - "regular", - "sec" - ], - "groupAcronym": "emu", - "groupName": "EAP Method Update", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-emu-01" - }, - "orderInMeeting": 1, - "short": "emu", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/emu", - "chatArchive": "https://www.ietf.org/jabber/logs/emu?C=M;O=D", - "recordings": [ - { - "id": 107701, - "name": "recording-113-emu-1", - "title": "Video recording for EMU on 2022-03-22 at 13:00:00", - "url": "https://www.youtube.com/watch?v=oONzCclwNFw" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29379.ics" - } - }, - { - "id": 104093, - "sessionId": 29333, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "tsvarea", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-22T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "tsv", - "tsvarea" - ], - "groupAcronym": "tsvarea", - "groupName": "Transport Area Open Meeting", - "groupParent": { - "acronym": "tsv" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-tsvarea-00" - }, - "orderInMeeting": 1, - "short": "tsvarea", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/tsvarea", - "chatArchive": "https://www.ietf.org/jabber/logs/tsvarea?C=M;O=D", - "recordings": [ - { - "id": 107478, - "name": "recording-113-tsvarea-1", - "title": "Video recording for TSVAREA on 2022-03-22 at 13:00:00", - "url": "https://www.youtube.com/watch?v=MLVHdCTtsOE" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29333.ics" - } - }, - { - "id": 104168, - "sessionId": 29455, - "room": "Yard and Park Ensemble", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "Beverage and Snack Break", - "startDateTime": "2022-03-22T14:00:00", - "status": "sched", - "type": "break", - "isBoF": false, - "filterKeywords": [ - "beverage-and-snack-break", - "secretariat", - "secretariat-sessm", - "social" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 4, - "short": "Beverage and Snack Break", - "sessionToken": "sessm", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29455.ics" - } - }, - { - "id": 104123, - "sessionId": 29345, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "cdni", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-22T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "cdni", - "regular" - ], - "groupAcronym": "cdni", - "groupName": "Content Delivery Networks Interconnection", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-cdni-02" - }, - "orderInMeeting": 1, - "short": "cdni", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/cdni", - "chatArchive": "https://www.ietf.org/jabber/logs/cdni?C=M;O=D", - "recordings": [ - { - "id": 107470, - "name": "recording-113-cdni-1", - "title": "Video recording for CDNI on 2022-03-22 at 14:30:00", - "url": "https://www.youtube.com/watch?v=MAwNcv6Oe-g" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29345.ics" - } - }, - { - "id": 104095, - "sessionId": 29329, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "intarea", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-22T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "int", - "intarea", - "regular" - ], - "groupAcronym": "intarea", - "groupName": "Internet Area Working Group", - "groupParent": { - "acronym": "int" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-intarea-05" - }, - "orderInMeeting": 1, - "short": "intarea", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/intarea", - "chatArchive": "https://www.ietf.org/jabber/logs/intarea?C=M;O=D", - "recordings": [ - { - "id": 107480, - "name": "recording-113-intarea-1", - "title": "Video recording for INTAREA on 2022-03-22 at 14:30:00", - "url": "https://www.youtube.com/watch?v=jOPFejJeWeU" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29329.ics" - } - }, - { - "id": 104096, - "sessionId": 29347, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "irtfopen", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-22T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "irtf", - "irtfopen", - "regular" - ], - "groupAcronym": "irtfopen", - "groupName": "IRTF Open Meeting", - "groupParent": { - "acronym": "irtf" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-irtfopen-00" - }, - "orderInMeeting": 1, - "short": "irtfopen", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/irtfopen", - "chatArchive": "https://www.ietf.org/jabber/logs/irtfopen?C=M;O=D", - "recordings": [ - { - "id": 107472, - "name": "recording-113-irtfopen-1", - "title": "Video recording for IRTFOPEN on 2022-03-22 at 14:30:00", - "url": "https://www.youtube.com/watch?v=sJ3002ZMk58" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29347.ics" - } - }, - { - "id": 104097, - "sessionId": 29274, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "mboned", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-22T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "mboned", - "ops", - "regular" - ], - "groupAcronym": "mboned", - "groupName": "MBONE Deployment", - "groupParent": { - "acronym": "ops" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-mboned-03" - }, - "orderInMeeting": 1, - "short": "mboned", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/mboned", - "chatArchive": "https://www.ietf.org/jabber/logs/mboned?C=M;O=D", - "recordings": [ - { - "id": 107479, - "name": "recording-113-mboned-1", - "title": "Video recording for MBONED on 2022-03-22 at 14:30:00", - "url": "https://www.youtube.com/watch?v=ItCG-TN-TwQ" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29274.ics" - } - }, - { - "id": 104098, - "sessionId": 29322, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "detnet", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-22T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "detnet", - "regular", - "rtg" - ], - "groupAcronym": "detnet", - "groupName": "Deterministic Networking", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-detnet-05" - }, - "orderInMeeting": 1, - "short": "detnet", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/detnet", - "chatArchive": "https://www.ietf.org/jabber/logs/detnet?C=M;O=D", - "recordings": [ - { - "id": 107548, - "name": "recording-113-detnet-1", - "title": "Video recording for DETNET on 2022-03-22 at 14:30:00", - "url": "https://www.youtube.com/watch?v=7Uuo-_6ruqE" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29322.ics" - } - }, - { - "id": 104099, - "sessionId": 29324, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "idr", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-22T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "idr", - "idr-sessa", - "regular", - "rtg" - ], - "groupAcronym": "idr", - "groupName": "Inter-Domain Routing", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-idr-05" - }, - "orderInMeeting": 1, - "short": "idr", - "sessionToken": "sessa", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/idr", - "chatArchive": "https://www.ietf.org/jabber/logs/idr?C=M;O=D", - "recordings": [ - { - "id": 107549, - "name": "recording-113-idr-1", - "title": "Video recording for IDR on 2022-03-22 at 14:30:00", - "url": "https://www.youtube.com/watch?v=bRqTpPiQnX0" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29324.ics" - } - }, - { - "id": 104100, - "sessionId": 29378, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "secdispatch", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-22T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "sec", - "secdispatch" - ], - "groupAcronym": "secdispatch", - "groupName": "Security Dispatch", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-secdispatch-02" - }, - "orderInMeeting": 1, - "short": "secdispatch", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secdispatch", - "chatArchive": "https://www.ietf.org/jabber/logs/secdispatch?C=M;O=D", - "recordings": [ - { - "id": 107466, - "name": "recording-113-secdispatch-1", - "title": "Video recording for SECDISPATCH on 2022-03-22 at 14:30:00", - "url": "https://www.youtube.com/watch?v=tHbIaQG_UFs" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29378.ics" - } - }, - { - "id": 104101, - "sessionId": 29401, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "dtn", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-22T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "dtn", - "regular", - "tsv" - ], - "groupAcronym": "dtn", - "groupName": "Delay/Disruption Tolerant Networking", - "groupParent": { - "acronym": "tsv" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-dtn-03" - }, - "orderInMeeting": 1, - "short": "dtn", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/dtn", - "chatArchive": "https://www.ietf.org/jabber/logs/dtn?C=M;O=D", - "recordings": [ - { - "id": 107474, - "name": "recording-113-dtn-1", - "title": "Video recording for DTN on 2022-03-22 at 14:30:00", - "url": "https://www.youtube.com/watch?v=nOyL-Pz6zLI" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29401.ics" - } - }, - { - "id": 104778, - "sessionId": 29506, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 7200, - "name": "IANA Office Hours", - "startDateTime": "2022-03-22T15:30:00", - "status": "schedw", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "iana-office-hours", - "secretariat", - "secretariat-sessbl" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "https://gather.town/app/L4fNNdm1NJa1sE2v/ietf", - "flags": { - "agenda": false, - "showAgenda": true - }, - "agenda": { - "url": null - }, - "orderInMeeting": 9, - "short": "IANA Office Hours", - "sessionToken": "sessbl", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29506.ics" - } - }, - { - "id": 104536, - "sessionId": 29480, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "ietf", - "duration": 2700, - "name": "Host Speaker Series", - "startDateTime": "2022-03-22T16:45:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "host-speaker-series-ipv6-adoption-worldwide-momentum-challenges-and-next-steps", - "ietf", - "ietf-sessc", - "presentation" - ], - "groupAcronym": "ietf", - "groupName": "IETF", - "groupParent": {}, - "note": "", - "remoteInstructions": "https://meetings.conf.meetecho.com/ietf113/?group=hostspeaker", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-ietf-sessc-00" - }, - "orderInMeeting": 2, - "short": "Host Speaker Series: IPv6 Adoption Worldwide: Momentum, Challenges and Next Steps", - "sessionToken": "sessc", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/ietf", - "chatArchive": "https://www.ietf.org/jabber/logs/ietf?C=M;O=D", - "recordings": [ - { - "id": 107695, - "name": "recording-113-ietf-3", - "title": "Video recording for IETF on 2022-03-22 at 16:45:00", - "url": "https://www.youtube.com/watch?v=LRZJOnOHsY4" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf113/?group=hostspeaker", - "audioStream": null, - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite113/?group=hostspeaker", - "calendar": "/meeting/113/session/29480.ics" - } - }, - { - "id": 104528, - "sessionId": 29473, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "ISE Office Hours", - "startDateTime": "2022-03-22T17:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "ise-office-hours", - "secretariat", - "secretariat-sessw" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 10, - "short": "ISE Office Hours", - "sessionToken": "sessw", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29473.ics" - } - }, - { - "id": 104175, - "sessionId": 29446, - "room": "Park Ensemble", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "secretariat", - "duration": 30600, - "name": "IETF Registration", - "startDateTime": "2022-03-23T08:30:00", - "status": "sched", - "type": "reg", - "isBoF": false, - "filterKeywords": [ - "admin", - "ietf-registration", - "secretariat", - "secretariat-sessd" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 4, - "short": "IETF Registration", - "sessionToken": "sessd", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29446.ics" - } - }, - { - "id": 104776, - "sessionId": 29503, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 30600, - "name": "IANA Office Hours", - "startDateTime": "2022-03-23T09:00:00", - "status": "schedw", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "iana-office-hours", - "secretariat", - "secretariat-sessbi" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "https://gather.town/app/L4fNNdm1NJa1sE2v/ietf", - "flags": { - "agenda": false, - "showAgenda": true - }, - "agenda": { - "url": null - }, - "orderInMeeting": 12, - "short": "IANA Office Hours", - "sessionToken": "sessbi", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29503.ics" - } - }, - { - "id": 104771, - "sessionId": 29497, - "room": "Park Ensemble", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "secretariat", - "duration": 27000, - "name": "RPC Office Hours", - "startDateTime": "2022-03-23T09:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "rpc-office-hours", - "secretariat", - "secretariat-sessbe" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 11, - "short": "RPC Office Hours", - "sessionToken": "sessbe", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29497.ics" - } - }, - { - "id": 104529, - "sessionId": 29474, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "ISE Office Hours", - "startDateTime": "2022-03-23T09:30:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "ise-office-hours", - "secretariat", - "secretariat-sessx" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 13, - "short": "ISE Office Hours", - "sessionToken": "sessx", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29474.ics" - } - }, - { - "id": 104102, - "sessionId": 29431, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "moq", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-23T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": true, - "filterKeywords": [ - "art", - "bof", - "moq", - "regular" - ], - "groupAcronym": "moq", - "groupName": "Media Over QUIC", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-moq-06" - }, - "orderInMeeting": 1, - "short": "moq", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/moq", - "chatArchive": "https://www.ietf.org/jabber/logs/moq?C=M;O=D", - "recordings": [ - { - "id": 107596, - "name": "recording-113-moq-1", - "title": "Video recording for MOQ on 2022-03-23 at 10:00:00", - "url": "https://www.youtube.com/watch?v=qwL1tkM5D7A" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29431.ics" - } - }, - { - "id": 104103, - "sessionId": 29412, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "6lo", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-23T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "6lo", - "int", - "regular" - ], - "groupAcronym": "6lo", - "groupName": "IPv6 over Networks of Resource-constrained Nodes", - "groupParent": { - "acronym": "int" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-6lo-01" - }, - "orderInMeeting": 1, - "short": "6lo", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/6lo", - "chatArchive": "https://www.ietf.org/jabber/logs/6lo?C=M;O=D", - "recordings": [ - { - "id": 107599, - "name": "recording-113-6lo-1", - "title": "Video recording for 6LO on 2022-03-23 at 10:00:00", - "url": "https://www.youtube.com/watch?v=QL5hqBo8oHw" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29412.ics" - } - }, - { - "id": 104104, - "sessionId": 29316, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "hrpc", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-23T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "hrpc", - "irtf", - "regular" - ], - "groupAcronym": "hrpc", - "groupName": "Human Rights Protocol Considerations", - "groupParent": { - "acronym": "irtf" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-hrpc-01" - }, - "orderInMeeting": 1, - "short": "hrpc", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/hrpc", - "chatArchive": "https://www.ietf.org/jabber/logs/hrpc?C=M;O=D", - "recordings": [ - { - "id": 107597, - "name": "recording-113-hrpc-1", - "title": "Video recording for HRPC on 2022-03-23 at 10:00:00", - "url": "https://www.youtube.com/watch?v=SpVEC7P3o30" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29316.ics" - } - }, - { - "id": 104105, - "sessionId": 29375, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "maprg", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-23T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "irtf", - "maprg", - "regular" - ], - "groupAcronym": "maprg", - "groupName": "Measurement and Analysis for Protocols", - "groupParent": { - "acronym": "irtf" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-maprg-03" - }, - "orderInMeeting": 1, - "short": "maprg", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/maprg", - "chatArchive": "https://www.ietf.org/jabber/logs/maprg?C=M;O=D", - "recordings": [ - { - "id": 107605, - "name": "recording-113-maprg-1", - "title": "Video recording for MAPRG on 2022-03-23 at 10:00:00", - "url": "https://www.youtube.com/watch?v=vYOBBT69IfI" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29375.ics" - } - }, - { - "id": 104106, - "sessionId": 29297, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "bmwg", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-23T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "bmwg", - "ops", - "regular" - ], - "groupAcronym": "bmwg", - "groupName": "Benchmarking Methodology", - "groupParent": { - "acronym": "ops" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-bmwg-01" - }, - "orderInMeeting": 1, - "short": "bmwg", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/bmwg", - "chatArchive": "https://www.ietf.org/jabber/logs/bmwg?C=M;O=D", - "recordings": [ - { - "id": 107600, - "name": "recording-113-bmwg-1", - "title": "Video recording for BMWG on 2022-03-23 at 10:00:00", - "url": "https://www.youtube.com/watch?v=OKvXWuNrioQ" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29297.ics" - } - }, - { - "id": 104107, - "sessionId": 29327, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "rtgarea", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-23T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "rtg", - "rtgarea" - ], - "groupAcronym": "rtgarea", - "groupName": "Routing Area Open Meeting", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-rtgarea-00" - }, - "orderInMeeting": 1, - "short": "rtgarea", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/rtgarea", - "chatArchive": "https://www.ietf.org/jabber/logs/rtgarea?C=M;O=D", - "recordings": [ - { - "id": 107593, - "name": "recording-113-rtgarea-1", - "title": "Video recording for RTGAREA on 2022-03-23 at 10:00:00", - "url": "https://www.youtube.com/watch?v=ByYIBES8CBo" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29327.ics" - } - }, - { - "id": 104108, - "sessionId": 29355, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "tls", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-23T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "sec", - "tls" - ], - "groupAcronym": "tls", - "groupName": "Transport Layer Security", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-tls-03" - }, - "orderInMeeting": 1, - "short": "tls", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/tls", - "chatArchive": "https://www.ietf.org/jabber/logs/tls?C=M;O=D", - "recordings": [ - { - "id": 107592, - "name": "recording-113-tls-1", - "title": "Video recording for TLS on 2022-03-23 at 10:00:00", - "url": "https://www.youtube.com/watch?v=Ci3iMZbjohs" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29355.ics" - } - }, - { - "id": 104109, - "sessionId": 29317, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "alto", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-23T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "alto", - "regular", - "tsv" - ], - "groupAcronym": "alto", - "groupName": "Application-Layer Traffic Optimization", - "groupParent": { - "acronym": "tsv" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-alto-08" - }, - "orderInMeeting": 1, - "short": "alto", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/alto", - "chatArchive": "https://www.ietf.org/jabber/logs/alto?C=M;O=D", - "recordings": [ - { - "id": 107595, - "name": "recording-113-alto-1", - "title": "Video recording for ALTO on 2022-03-23 at 10:00:00", - "url": "https://www.youtube.com/watch?v=38dJ4cxY7IU" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29317.ics" - } - }, - { - "id": 104165, - "sessionId": 29451, - "room": "Yard and Park Ensemble", - "location": {}, - "acronym": "secretariat", - "duration": 3600, - "name": "Lunch Break", - "startDateTime": "2022-03-23T12:00:00", - "status": "sched", - "type": "break", - "isBoF": false, - "filterKeywords": [ - "break", - "secretariat", - "secretariat-sessi", - "social" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 5, - "short": "Break", - "sessionToken": "sessi", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29451.ics" - } - }, - { - "id": 104190, - "sessionId": 29463, - "room": "Lenz Restaurant", - "location": {}, - "acronym": "emodir", - "duration": 3600, - "name": "WG Chairs Lunch (For WG Chairs Only)", - "startDateTime": "2022-03-23T12:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "emodir", - "emodir-sessa", - "social", - "wg-chairs-lunch-for-wg-chairs-only" - ], - "groupAcronym": "emodir", - "groupName": "Education, Mentoring and Outreach Directorate", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 3, - "short": "WG Chairs Lunch (For WG Chairs Only)", - "sessionToken": "sessa", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/emodir", - "chatArchive": "https://www.ietf.org/jabber/logs/emodir?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29463.ics" - } - }, - { - "id": 104110, - "sessionId": 29437, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "mediaman", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-23T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "mediaman", - "regular" - ], - "groupAcronym": "mediaman", - "groupName": "Media Type Maintenance", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-mediaman-00" - }, - "orderInMeeting": 1, - "short": "mediaman", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/mediaman", - "chatArchive": "https://www.ietf.org/jabber/logs/mediaman?C=M;O=D", - "recordings": [ - { - "id": 107594, - "name": "recording-113-mediaman-1", - "title": "Video recording for MEDIAMAN on 2022-03-23 at 13:00:00", - "url": "https://www.youtube.com/watch?v=D4sNpseV9Cg" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29437.ics" - } - }, - { - "id": 104111, - "sessionId": 29342, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "drip", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-23T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "drip", - "int", - "regular" - ], - "groupAcronym": "drip", - "groupName": "Drone Remote ID Protocol", - "groupParent": { - "acronym": "int" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-drip-04" - }, - "orderInMeeting": 1, - "short": "drip", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/drip", - "chatArchive": "https://www.ietf.org/jabber/logs/drip?C=M;O=D", - "recordings": [ - { - "id": 107589, - "name": "recording-113-drip-1", - "title": "Video recording for DRIP on 2022-03-23 at 13:00:00", - "url": "https://www.youtube.com/watch?v=lAXRcQyJu6o" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29342.ics" - } - }, - { - "id": 104112, - "sessionId": 29402, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "grow", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-23T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "grow", - "ops", - "regular" - ], - "groupAcronym": "grow", - "groupName": "Global Routing Operations", - "groupParent": { - "acronym": "ops" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-grow-00" - }, - "orderInMeeting": 1, - "short": "grow", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/grow", - "chatArchive": "https://www.ietf.org/jabber/logs/grow?C=M;O=D", - "recordings": [ - { - "id": 107602, - "name": "recording-113-grow-1", - "title": "Video recording for GROW on 2022-03-23 at 13:00:00", - "url": "https://www.youtube.com/watch?v=5Pe1JTYMRXo" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29402.ics" - } - }, - { - "id": 104113, - "sessionId": 29414, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "roll", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-23T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "roll", - "rtg" - ], - "groupAcronym": "roll", - "groupName": "Routing Over Low power and Lossy networks", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-roll-02" - }, - "orderInMeeting": 1, - "short": "roll", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/roll", - "chatArchive": "https://www.ietf.org/jabber/logs/roll?C=M;O=D", - "recordings": [ - { - "id": 107607, - "name": "recording-113-roll-1", - "title": "Video recording for ROLL on 2022-03-23 at 13:00:00", - "url": "https://www.youtube.com/watch?v=P0V4s9Hoyd4" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29414.ics" - } - }, - { - "id": 104114, - "sessionId": 29353, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "teas", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-23T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "rtg", - "teas", - "teas-sessb" - ], - "groupAcronym": "teas", - "groupName": "Traffic Engineering Architecture and Signaling", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-teas-01" - }, - "orderInMeeting": 1, - "short": "teas", - "sessionToken": "sessb", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/teas", - "chatArchive": "https://www.ietf.org/jabber/logs/teas?C=M;O=D", - "recordings": [ - { - "id": 107604, - "name": "recording-113-teas-2", - "title": "Video recording for TEAS on 2022-03-23 at 13:00:00", - "url": "https://www.youtube.com/watch?v=XAyrNm4kf1c" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29353.ics" - } - }, - { - "id": 104115, - "sessionId": 29374, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "mls", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-23T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "mls", - "regular", - "sec" - ], - "groupAcronym": "mls", - "groupName": "Messaging Layer Security", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-mls-01" - }, - "orderInMeeting": 1, - "short": "mls", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/mls", - "chatArchive": "https://www.ietf.org/jabber/logs/mls?C=M;O=D", - "recordings": [ - { - "id": 107603, - "name": "recording-113-mls-1", - "title": "Video recording for MLS on 2022-03-23 at 13:00:00", - "url": "https://www.youtube.com/watch?v=LzyIc8-YHtQ" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29374.ics" - } - }, - { - "id": 104116, - "sessionId": 29426, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "rats", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-23T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "rats", - "rats-sessb", - "regular", - "sec" - ], - "groupAcronym": "rats", - "groupName": "Remote ATtestation ProcedureS", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-rats-01" - }, - "orderInMeeting": 2, - "short": "rats", - "sessionToken": "sessb", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/rats", - "chatArchive": "https://www.ietf.org/jabber/logs/rats?C=M;O=D", - "recordings": [ - { - "id": 107601, - "name": "recording-113-rats-2", - "title": "Video recording for RATS on 2022-03-23 at 13:00:00", - "url": "https://www.youtube.com/watch?v=sjSbl6dEzkQ" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29426.ics" - } - }, - { - "id": 104117, - "sessionId": 29409, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "taps", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-23T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "taps", - "tsv" - ], - "groupAcronym": "taps", - "groupName": "Transport Services", - "groupParent": { - "acronym": "tsv" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-taps-00" - }, - "orderInMeeting": 1, - "short": "taps", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/taps", - "chatArchive": "https://www.ietf.org/jabber/logs/taps?C=M;O=D", - "recordings": [ - { - "id": 107588, - "name": "recording-113-taps-1", - "title": "Video recording for TAPS on 2022-03-23 at 13:00:00", - "url": "https://www.youtube.com/watch?v=l433k1p4Zz4" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29409.ics" - } - }, - { - "id": 104171, - "sessionId": 29458, - "room": "Yard and Park Ensemble", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "Beverage Break", - "startDateTime": "2022-03-23T14:00:00", - "status": "sched", - "type": "break", - "isBoF": false, - "filterKeywords": [ - "beverage-break", - "secretariat", - "secretariat-sessp", - "social" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 6, - "short": "Beverage Break", - "sessionToken": "sessp", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29458.ics" - } - }, - { - "id": 104530, - "sessionId": 29475, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "ISE Office Hours", - "startDateTime": "2022-03-23T14:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "ise-office-hours", - "secretariat", - "secretariat-sessy" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 14, - "short": "ISE Office Hours", - "sessionToken": "sessy", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29475.ics" - } - }, - { - "id": 104118, - "sessionId": 29427, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "scim", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-23T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "regular", - "scim" - ], - "groupAcronym": "scim", - "groupName": "System for Cross-domain Identity Management", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-scim-03" - }, - "orderInMeeting": 1, - "short": "scim", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/scim", - "chatArchive": "https://www.ietf.org/jabber/logs/scim?C=M;O=D", - "recordings": [ - { - "id": 107598, - "name": "recording-113-scim-1", - "title": "Video recording for SCIM on 2022-03-23 at 14:30:00", - "url": "https://www.youtube.com/watch?v=L-vjdOzR4zg" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29427.ics" - } - }, - { - "id": 104119, - "sessionId": 29391, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "bier", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-23T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "bier", - "regular", - "rtg" - ], - "groupAcronym": "bier", - "groupName": "Bit Indexed Explicit Replication", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-bier-00" - }, - "orderInMeeting": 1, - "short": "bier", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/bier", - "chatArchive": "https://www.ietf.org/jabber/logs/bier?C=M;O=D", - "recordings": [ - { - "id": 107606, - "name": "recording-113-bier-1", - "title": "Video recording for BIER on 2022-03-23 at 14:30:00", - "url": "https://www.youtube.com/watch?v=bL0QKQbu11U" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29391.ics" - } - }, - { - "id": 104120, - "sessionId": 29352, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "teas", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-23T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "rtg", - "teas", - "teas-sessa" - ], - "groupAcronym": "teas", - "groupName": "Traffic Engineering Architecture and Signaling", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-teas-01" - }, - "orderInMeeting": 2, - "short": "teas", - "sessionToken": "sessa", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/teas", - "chatArchive": "https://www.ietf.org/jabber/logs/teas?C=M;O=D", - "recordings": [ - { - "id": 107591, - "name": "recording-113-teas-1", - "title": "Video recording for TEAS on 2022-03-23 at 14:30:00", - "url": "https://www.youtube.com/watch?v=yvnrigAdkpA" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29352.ics" - } - }, - { - "id": 104121, - "sessionId": 29421, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "ohai", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-23T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "ohai", - "regular", - "sec" - ], - "groupAcronym": "ohai", - "groupName": "Oblivious HTTP Application Intermediation", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-ohai-01" - }, - "orderInMeeting": 1, - "short": "ohai", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/ohai", - "chatArchive": "https://www.ietf.org/jabber/logs/ohai?C=M;O=D", - "recordings": [ - { - "id": 107590, - "name": "recording-113-ohai-1", - "title": "Video recording for OHAI on 2022-03-23 at 14:30:00", - "url": "https://www.youtube.com/watch?v=oriNEz2kkH8" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29421.ics" - } - }, - { - "id": 104060, - "sessionId": 29296, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "tcpm", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-23T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "tcpm", - "tsv" - ], - "groupAcronym": "tcpm", - "groupName": "TCP Maintenance and Minor Extensions", - "groupParent": { - "acronym": "tsv" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-tcpm-02" - }, - "orderInMeeting": 1, - "short": "tcpm", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/tcpm", - "chatArchive": "https://www.ietf.org/jabber/logs/tcpm?C=M;O=D", - "recordings": [ - { - "id": 107624, - "name": "recording-113-tcpm-1", - "title": "Video recording for TCPM on 2022-03-23 at 14:30:00", - "url": "https://www.youtube.com/watch?v=To8Jf634l_A" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29296.ics" - } - }, - { - "id": 104169, - "sessionId": 29456, - "room": "Yard and Park Ensemble", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "Beverage and Snack Break", - "startDateTime": "2022-03-23T16:30:00", - "status": "sched", - "type": "break", - "isBoF": false, - "filterKeywords": [ - "beverage-and-snack-break", - "secretariat", - "secretariat-sessn", - "social" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 7, - "short": "Beverage and Snack Break", - "sessionToken": "sessn", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29456.ics" - } - }, - { - "id": 104186, - "sessionId": 29460, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "ietf", - "duration": 7200, - "name": "Plenary", - "startDateTime": "2022-03-23T17:00:00", - "status": "sched", - "type": "plenary", - "isBoF": false, - "filterKeywords": [ - "ietf", - "ietf-plenary", - "ietf-sessa", - "plenary" - ], - "groupAcronym": "ietf", - "groupName": "IETF", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-ietf-sessa-03" - }, - "orderInMeeting": 1, - "short": "IETF Plenary", - "sessionToken": "sessa", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/plenary", - "chatArchive": "https://www.ietf.org/jabber/logs/plenary?C=M;O=D", - "recordings": [ - { - "id": 107625, - "name": "recording-113-ietf-1", - "title": "Video recording for IETF on 2022-03-23 at 17:00:00", - "url": "https://www.youtube.com/watch?v=V0-aTFE8YNw" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29460.ics" - } - }, - { - "id": 104522, - "sessionId": 29467, - "room": "Grand Klimt Hall 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "secretariat", - "duration": 3600, - "name": "Newcomers' Feedback Session", - "startDateTime": "2022-03-24T08:30:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "newcomers-feedback-session", - "secretariat", - "secretariat-sessr" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "https://meeting.conf.meetecho.com/ietf113/?group=newcomersfeedback", - "flags": { - "agenda": false, - "showAgenda": true - }, - "agenda": { - "url": null - }, - "orderInMeeting": 15, - "short": "Newcomers' Feedback Session", - "sessionToken": "sessr", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29467.ics" - } - }, - { - "id": 104176, - "sessionId": 29447, - "room": "Park Ensemble", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "secretariat", - "duration": 28800, - "name": "IETF Registration", - "startDateTime": "2022-03-24T08:30:00", - "status": "sched", - "type": "reg", - "isBoF": false, - "filterKeywords": [ - "admin", - "ietf-registration", - "secretariat", - "secretariat-sesse" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 5, - "short": "IETF Registration", - "sessionToken": "sesse", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29447.ics" - } - }, - { - "id": 104777, - "sessionId": 29505, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 30600, - "name": "IANA Office Hours", - "startDateTime": "2022-03-24T09:00:00", - "status": "schedw", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "iana-office-hours", - "secretariat", - "secretariat-sessbk" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "https://gather.town/app/L4fNNdm1NJa1sE2v/ietf", - "flags": { - "agenda": false, - "showAgenda": true - }, - "agenda": { - "url": null - }, - "orderInMeeting": 17, - "short": "IANA Office Hours", - "sessionToken": "sessbk", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29505.ics" - } - }, - { - "id": 104772, - "sessionId": 29496, - "room": "Park Ensemble", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "secretariat", - "duration": 27000, - "name": "RPC Office Hours", - "startDateTime": "2022-03-24T09:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "rpc-office-hours", - "secretariat", - "secretariat-sessbd" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 16, - "short": "RPC Office Hours", - "sessionToken": "sessbd", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29496.ics" - } - }, - { - "id": 104531, - "sessionId": 29476, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "ISE Office Hours", - "startDateTime": "2022-03-24T09:30:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "ise-office-hours", - "secretariat", - "secretariat-sessz" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 18, - "short": "ISE Office Hours", - "sessionToken": "sessz", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29476.ics" - } - }, - { - "id": 104094, - "sessionId": 29314, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "httpapi", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-24T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "httpapi", - "regular" - ], - "groupAcronym": "httpapi", - "groupName": "Building Blocks for HTTP APIs", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-httpapi-01" - }, - "orderInMeeting": 1, - "short": "httpapi", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/httpapi", - "chatArchive": "https://www.ietf.org/jabber/logs/httpapi?C=M;O=D", - "recordings": [ - { - "id": 107716, - "name": "recording-113-httpapi-1", - "title": "Video recording for HTTPAPI on 2022-03-24 at 10:00:00", - "url": "https://www.youtube.com/watch?v=Q2Awiz2xl5w" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29314.ics" - } - }, - { - "id": 104125, - "sessionId": 29348, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "coinrg", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-24T10:00:00", - "status": "canceled", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "coinrg", - "irtf", - "regular" - ], - "groupAcronym": "coinrg", - "groupName": "Computing in the Network Research Group", - "groupParent": { - "acronym": "irtf" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 1, - "short": "coinrg", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/coinrg", - "chatArchive": "https://www.ietf.org/jabber/logs/coinrg?C=M;O=D", - "recordings": [], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29348.ics" - } - }, - { - "id": 104126, - "sessionId": 29385, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "nmrg", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-24T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "irtf", - "nmrg", - "regular" - ], - "groupAcronym": "nmrg", - "groupName": "Network Management", - "groupParent": { - "acronym": "irtf" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-nmrg-04" - }, - "orderInMeeting": 1, - "short": "nmrg", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/nmrg", - "chatArchive": "https://www.ietf.org/jabber/logs/nmrg?C=M;O=D", - "recordings": [ - { - "id": 107699, - "name": "recording-113-nmrg-1", - "title": "Video recording for NMRG on 2022-03-24 at 10:00:00", - "url": "https://www.youtube.com/watch?v=nxaDakQppoE" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29385.ics" - } - }, - { - "id": 104127, - "sessionId": 29377, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "iotops", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-24T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "iotops", - "ops", - "regular" - ], - "groupAcronym": "iotops", - "groupName": "IOT Operations", - "groupParent": { - "acronym": "ops" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-iotops-02" - }, - "orderInMeeting": 1, - "short": "iotops", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/iotops", - "chatArchive": "https://www.ietf.org/jabber/logs/iotops?C=M;O=D", - "recordings": [ - { - "id": 107700, - "name": "recording-113-iotops-1", - "title": "Video recording for IOTOPS on 2022-03-24 at 10:00:00", - "url": "https://www.youtube.com/watch?v=3TdUUdOwX2k" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29377.ics" - } - }, - { - "id": 104128, - "sessionId": 29398, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "lsvr", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-24T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "lsvr", - "regular", - "rtg" - ], - "groupAcronym": "lsvr", - "groupName": "Link State Vector Routing", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-lsvr-00" - }, - "orderInMeeting": 1, - "short": "lsvr", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/lsvr", - "chatArchive": "https://www.ietf.org/jabber/logs/lsvr?C=M;O=D", - "recordings": [ - { - "id": 107752, - "name": "recording-113-lsvr-1", - "title": "Video recording for LSVR on 2022-03-24 at 10:00:00", - "url": "https://www.youtube.com/watch?v=6NqfQR6cMYI" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29398.ics" - } - }, - { - "id": 104129, - "sessionId": 29289, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "pals", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-24T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "pals", - "regular", - "rtg" - ], - "groupAcronym": "pals", - "groupName": "Pseudowire And LDP-enabled Services", - "groupParent": { - "acronym": "rtg" - }, - "note": "Joint PALS/MPLS/DETNET", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-pals-01" - }, - "orderInMeeting": 1, - "short": "pals", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/pals", - "chatArchive": "https://www.ietf.org/jabber/logs/pals?C=M;O=D", - "recordings": [ - { - "id": 107756, - "name": "recording-113-pals-1", - "title": "Video recording for PALS on 2022-03-24 at 10:00:00", - "url": "https://www.youtube.com/watch?v=V7DBF9K8cdQ" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29289.ics" - } - }, - { - "id": 104124, - "sessionId": 29433, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "savnet", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-24T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": true, - "filterKeywords": [ - "bof", - "int", - "regular", - "savnet" - ], - "groupAcronym": "savnet", - "groupName": "Source Address Validation in Intra-domain and Inter-domain Networks", - "groupParent": { - "acronym": "int" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-savnet-01" - }, - "orderInMeeting": 1, - "short": "savnet", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/savnet", - "chatArchive": "https://www.ietf.org/jabber/logs/savnet?C=M;O=D", - "recordings": [ - { - "id": 107717, - "name": "recording-113-savnet-1", - "title": "Video recording for SAVNET on 2022-03-24 at 10:00:00", - "url": "https://www.youtube.com/watch?v=dMw0rbunhSs" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29433.ics" - } - }, - { - "id": 104130, - "sessionId": 29364, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "saag", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-24T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "saag", - "sec" - ], - "groupAcronym": "saag", - "groupName": "Security Area Open Meeting", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-saag-00" - }, - "orderInMeeting": 1, - "short": "saag", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/saag", - "chatArchive": "https://www.ietf.org/jabber/logs/saag?C=M;O=D", - "recordings": [ - { - "id": 107754, - "name": "recording-113-saag-1", - "title": "Video recording for SAAG on 2022-03-24 at 10:00:00", - "url": "https://www.youtube.com/watch?v=eRjBgfPt3HE" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29364.ics" - } - }, - { - "id": 104166, - "sessionId": 29452, - "room": "Yard and Park Ensemble", - "location": {}, - "acronym": "secretariat", - "duration": 3600, - "name": "Lunch Break", - "startDateTime": "2022-03-24T12:00:00", - "status": "sched", - "type": "break", - "isBoF": false, - "filterKeywords": [ - "break", - "secretariat", - "secretariat-sessj", - "social" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 8, - "short": "Break", - "sessionToken": "sessj", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29452.ics" - } - }, - { - "id": 104131, - "sessionId": 29369, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "iabopen", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-24T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "iab", - "iabopen", - "regular" - ], - "groupAcronym": "iabopen", - "groupName": "IAB Open Meeting", - "groupParent": { - "acronym": "iab" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-iabopen-02" - }, - "orderInMeeting": 1, - "short": "iabopen", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/iabopen", - "chatArchive": "https://www.ietf.org/jabber/logs/iabopen?C=M;O=D", - "recordings": [ - { - "id": 107698, - "name": "recording-113-iabopen-1", - "title": "Video recording for IABOPEN on 2022-03-24 at 13:00:00", - "url": "https://www.youtube.com/watch?v=Qif5aZGPsEA" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29369.ics" - } - }, - { - "id": 104132, - "sessionId": 29368, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "madinas", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-24T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "int", - "madinas", - "regular" - ], - "groupAcronym": "madinas", - "groupName": "MAC Address Device Identification for Network and Application Services", - "groupParent": { - "acronym": "int" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-madinas-02" - }, - "orderInMeeting": 1, - "short": "madinas", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/madinas", - "chatArchive": "https://www.ietf.org/jabber/logs/madinas?C=M;O=D", - "recordings": [ - { - "id": 107702, - "name": "recording-113-madinas-1", - "title": "Video recording for MADINAS on 2022-03-24 at 13:00:00", - "url": "https://www.youtube.com/watch?v=NFijHo5BkR8" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29368.ics" - } - }, - { - "id": 104133, - "sessionId": 29350, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "panrg", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-24T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "irtf", - "panrg", - "regular" - ], - "groupAcronym": "panrg", - "groupName": "Path Aware Networking RG", - "groupParent": { - "acronym": "irtf" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-panrg-07" - }, - "orderInMeeting": 1, - "short": "panrg", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/panrg", - "chatArchive": "https://www.ietf.org/jabber/logs/panrg?C=M;O=D", - "recordings": [ - { - "id": 107704, - "name": "recording-113-panrg-1", - "title": "Video recording for PANRG on 2022-03-24 at 13:00:00", - "url": "https://www.youtube.com/watch?v=XboM9W8z5-c" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29350.ics" - } - }, - { - "id": 104134, - "sessionId": 29290, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "mpls", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-24T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "mpls", - "regular", - "rtg" - ], - "groupAcronym": "mpls", - "groupName": "Multiprotocol Label Switching", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-mpls-03" - }, - "orderInMeeting": 1, - "short": "mpls", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/mpls", - "chatArchive": "https://www.ietf.org/jabber/logs/mpls?C=M;O=D", - "recordings": [ - { - "id": 107714, - "name": "recording-113-mpls-1", - "title": "Video recording for MPLS on 2022-03-24 at 13:00:00", - "url": "https://www.youtube.com/watch?v=NU-HaB5aH5o" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29290.ics" - } - }, - { - "id": 104135, - "sessionId": 29366, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "rift", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-24T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "rift", - "rtg" - ], - "groupAcronym": "rift", - "groupName": "Routing In Fat Trees", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-rift-00" - }, - "orderInMeeting": 1, - "short": "rift", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/rift", - "chatArchive": "https://www.ietf.org/jabber/logs/rift?C=M;O=D", - "recordings": [ - { - "id": 107753, - "name": "recording-113-rift-1", - "title": "Video recording for RIFT on 2022-03-24 at 13:00:00", - "url": "https://www.youtube.com/watch?v=YYhAnqLgk-Y" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29366.ics" - } - }, - { - "id": 104136, - "sessionId": 29394, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "i2nsf", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-24T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "i2nsf", - "regular", - "sec" - ], - "groupAcronym": "i2nsf", - "groupName": "Interface to Network Security Functions", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-i2nsf-01" - }, - "orderInMeeting": 1, - "short": "i2nsf", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/i2nsf", - "chatArchive": "https://www.ietf.org/jabber/logs/i2nsf?C=M;O=D", - "recordings": [ - { - "id": 107703, - "name": "recording-113-i2nsf-1", - "title": "Video recording for I2NSF on 2022-03-24 at 13:00:00", - "url": "https://www.youtube.com/watch?v=nvPGyO8O_v8" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29394.ics" - } - }, - { - "id": 104137, - "sessionId": 29415, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "privacypass", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-24T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "privacypass", - "regular", - "sec" - ], - "groupAcronym": "privacypass", - "groupName": "Privacy Pass", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-privacypass-00" - }, - "orderInMeeting": 1, - "short": "privacypass", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/privacypass", - "chatArchive": "https://www.ietf.org/jabber/logs/privacypass?C=M;O=D", - "recordings": [ - { - "id": 107696, - "name": "recording-113-privacypass-1", - "title": "Video recording for PRIVACYPASS on 2022-03-24 at 13:00:00", - "url": "https://www.youtube.com/watch?v=wip30cWHRBI" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29415.ics" - } - }, - { - "id": 104138, - "sessionId": 29283, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "suit", - "duration": 3600, - "name": "Afternoon session I", - "startDateTime": "2022-03-24T13:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "sec", - "suit" - ], - "groupAcronym": "suit", - "groupName": "Software Updates for Internet of Things", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-suit-03" - }, - "orderInMeeting": 1, - "short": "suit", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/suit", - "chatArchive": "https://www.ietf.org/jabber/logs/suit?C=M;O=D", - "recordings": [ - { - "id": 107697, - "name": "recording-113-suit-1", - "title": "Video recording for SUIT on 2022-03-24 at 13:00:00", - "url": "https://www.youtube.com/watch?v=sO4dDnTdKmY" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29283.ics" - } - }, - { - "id": 104170, - "sessionId": 29453, - "room": "Yard and Park Ensemble", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "Beverage and Snack Break", - "startDateTime": "2022-03-24T14:00:00", - "status": "sched", - "type": "break", - "isBoF": false, - "filterKeywords": [ - "beverage-and-snack-break", - "secretariat", - "secretariat-sessk", - "social" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 9, - "short": "Beverage and Snack Break", - "sessionToken": "sessk", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29453.ics" - } - }, - { - "id": 104532, - "sessionId": 29477, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "ISE Office Hours", - "startDateTime": "2022-03-24T14:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "ise-office-hours", - "secretariat", - "secretariat-sessba" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 19, - "short": "ISE Office Hours", - "sessionToken": "sessba", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29477.ics" - } - }, - { - "id": 104540, - "sessionId": 29484, - "room": "Gather", - "location": {}, - "acronym": "emodir", - "duration": 1800, - "name": "Newcomers' Coffee Break", - "startDateTime": "2022-03-24T14:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "emodir", - "emodir-sessd", - "newcomers-coffee-break-in-gather", - "social" - ], - "groupAcronym": "emodir", - "groupName": "Education, Mentoring and Outreach Directorate", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 4, - "short": "Newcomers' Coffee Break (in Gather)", - "sessionToken": "sessd", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/emodir", - "chatArchive": "https://www.ietf.org/jabber/logs/emodir?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29484.ics" - } - }, - { - "id": 104139, - "sessionId": 29332, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "webtrans", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-24T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "regular", - "webtrans" - ], - "groupAcronym": "webtrans", - "groupName": "WebTransport", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-webtrans-02" - }, - "orderInMeeting": 1, - "short": "webtrans", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/webtrans", - "chatArchive": "https://www.ietf.org/jabber/logs/webtrans?C=M;O=D", - "recordings": [ - { - "id": 107719, - "name": "recording-113-webtrans-1", - "title": "Video recording for WEBTRANS on 2022-03-24 at 14:30:00", - "url": "https://www.youtube.com/watch?v=9ys7hwscwXM" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29332.ics" - } - }, - { - "id": 104140, - "sessionId": 29318, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "shmoo", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-24T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "gen", - "regular", - "shmoo" - ], - "groupAcronym": "shmoo", - "groupName": "Stay Home Meet Only Online", - "groupParent": { - "acronym": "gen" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-shmoo-01" - }, - "orderInMeeting": 1, - "short": "shmoo", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/shmoo", - "chatArchive": "https://www.ietf.org/jabber/logs/shmoo?C=M;O=D", - "recordings": [ - { - "id": 107715, - "name": "recording-113-shmoo-1", - "title": "Video recording for SHMOO on 2022-03-24 at 14:30:00", - "url": "https://www.youtube.com/watch?v=JnnPIBmSD28" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29318.ics" - } - }, - { - "id": 104149, - "sessionId": 29344, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "add", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-24T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "add", - "int", - "regular" - ], - "groupAcronym": "add", - "groupName": "Adaptive DNS Discovery", - "groupParent": { - "acronym": "int" - }, - "note": "Split session with DPRIVE", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-add-05" - }, - "orderInMeeting": 1, - "short": "add", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/add", - "chatArchive": "https://www.ietf.org/jabber/logs/add?C=M;O=D", - "recordings": [ - { - "id": 107726, - "name": "recording-113-add-1", - "title": "Video recording for ADD on 2022-03-24 at 14:30:00", - "url": "https://www.youtube.com/watch?v=yC9UucsXBOE" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29344.ics" - } - }, - { - "id": 104142, - "sessionId": 29275, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "cfrg", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-24T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "cfrg", - "irtf", - "regular" - ], - "groupAcronym": "cfrg", - "groupName": "Crypto Forum", - "groupParent": { - "acronym": "irtf" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-cfrg-03" - }, - "orderInMeeting": 1, - "short": "cfrg", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/cfrg", - "chatArchive": "https://www.ietf.org/jabber/logs/cfrg?C=M;O=D", - "recordings": [ - { - "id": 107730, - "name": "recording-113-cfrg-1", - "title": "Video recording for CFRG on 2022-03-24 at 14:30:00", - "url": "https://www.youtube.com/watch?v=gmk5JZmD2Hc" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29275.ics" - } - }, - { - "id": 104143, - "sessionId": 29351, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "opsawg", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-24T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "ops", - "opsawg", - "regular" - ], - "groupAcronym": "opsawg", - "groupName": "Operations and Management Area Working Group", - "groupParent": { - "acronym": "ops" - }, - "note": "Combined OpsAWG/OpsAREA", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-opsawg-03" - }, - "orderInMeeting": 1, - "short": "opsawg", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/opsawg", - "chatArchive": "https://www.ietf.org/jabber/logs/opsawg?C=M;O=D", - "recordings": [ - { - "id": 107718, - "name": "recording-113-opsawg-1", - "title": "Video recording for OPSAWG on 2022-03-24 at 14:30:00", - "url": "https://www.youtube.com/watch?v=EaA-Aeobubs" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29351.ics" - } - }, - { - "id": 104144, - "sessionId": 29288, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "lsr", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-24T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "lsr", - "regular", - "rtg" - ], - "groupAcronym": "lsr", - "groupName": "Link State Routing", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-lsr-03" - }, - "orderInMeeting": 1, - "short": "lsr", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/lsr", - "chatArchive": "https://www.ietf.org/jabber/logs/lsr?C=M;O=D", - "recordings": [ - { - "id": 107742, - "name": "recording-113-lsr-1", - "title": "Video recording for LSR on 2022-03-24 at 14:30:00", - "url": "https://www.youtube.com/watch?v=7Gfp24Q_h1g" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29288.ics" - } - }, - { - "id": 104145, - "sessionId": 29328, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "pim", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-24T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "pim", - "regular", - "rtg" - ], - "groupAcronym": "pim", - "groupName": "Protocols for IP Multicast", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-pim-00" - }, - "orderInMeeting": 1, - "short": "pim", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/pim", - "chatArchive": "https://www.ietf.org/jabber/logs/pim?C=M;O=D", - "recordings": [ - { - "id": 107731, - "name": "recording-113-pim-1", - "title": "Video recording for PIM on 2022-03-24 at 14:30:00", - "url": "https://www.youtube.com/watch?v=uJ5NR1ece1s" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29328.ics" - } - }, - { - "id": 104146, - "sessionId": 29292, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "oauth", - "duration": 7200, - "name": "Afternoon Session II", - "startDateTime": "2022-03-24T14:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "oauth", - "oauth-sessa", - "regular", - "sec" - ], - "groupAcronym": "oauth", - "groupName": "Web Authorization Protocol", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-oauth-00" - }, - "orderInMeeting": 2, - "short": "oauth", - "sessionToken": "sessa", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/oauth", - "chatArchive": "https://www.ietf.org/jabber/logs/oauth?C=M;O=D", - "recordings": [ - { - "id": 107720, - "name": "recording-113-oauth-2", - "title": "Video recording for OAUTH on 2022-03-24 at 14:30:00", - "url": "https://www.youtube.com/watch?v=GEVeFiY3H4w" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29292.ics" - } - }, - { - "id": 104177, - "sessionId": 29448, - "room": "Park Ensemble", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "secretariat", - "duration": 16200, - "name": "IETF Registration", - "startDateTime": "2022-03-25T08:30:00", - "status": "sched", - "type": "reg", - "isBoF": false, - "filterKeywords": [ - "admin", - "ietf-registration", - "secretariat", - "secretariat-sessf" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 6, - "short": "IETF Registration", - "sessionToken": "sessf", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29448.ics" - } - }, - { - "id": 104533, - "sessionId": 29478, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "ISE Office Hours", - "startDateTime": "2022-03-25T09:30:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "ise-office-hours", - "secretariat", - "secretariat-sessbb" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 20, - "short": "ISE Office Hours", - "sessionToken": "sessbb", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29478.ics" - } - }, - { - "id": 104147, - "sessionId": 29331, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "avtcore", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-25T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "avtcore", - "regular" - ], - "groupAcronym": "avtcore", - "groupName": "Audio/Video Transport Core Maintenance", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-avtcore-02" - }, - "orderInMeeting": 1, - "short": "avtcore", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/avtcore", - "chatArchive": "https://www.ietf.org/jabber/logs/avtcore?C=M;O=D", - "recordings": [ - { - "id": 107765, - "name": "recording-113-avtcore-1", - "title": "Video recording for AVTCORE on 2022-03-25 at 10:00:00", - "url": "https://www.youtube.com/watch?v=0GKzlYSBjM8" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29331.ics" - } - }, - { - "id": 104148, - "sessionId": 29408, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "core", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-25T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "core", - "regular" - ], - "groupAcronym": "core", - "groupName": "Constrained RESTful Environments", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-core-00" - }, - "orderInMeeting": 1, - "short": "core", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/core", - "chatArchive": "https://www.ietf.org/jabber/logs/core?C=M;O=D", - "recordings": [ - { - "id": 107758, - "name": "recording-113-core-1", - "title": "Video recording for CORE on 2022-03-25 at 10:00:00", - "url": "https://www.youtube.com/watch?v=MLGvEEJGtc8" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29408.ics" - } - }, - { - "id": 104520, - "sessionId": 29466, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "ccamp", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-25T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "ccamp", - "regular", - "rtg" - ], - "groupAcronym": "ccamp", - "groupName": "Common Control and Measurement Plane", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-ccamp-00" - }, - "orderInMeeting": 1, - "short": "ccamp", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/ccamp", - "chatArchive": "https://www.ietf.org/jabber/logs/ccamp?C=M;O=D", - "recordings": [ - { - "id": 107764, - "name": "recording-113-ccamp-1", - "title": "Video recording for CCAMP on 2022-03-25 at 10:00:00", - "url": "https://www.youtube.com/watch?v=UxRbfT52UF8" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29466.ics" - } - }, - { - "id": 104151, - "sessionId": 29325, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "idr", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-25T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "idr", - "idr-sessb", - "regular", - "rtg" - ], - "groupAcronym": "idr", - "groupName": "Inter-Domain Routing", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-idr-05" - }, - "orderInMeeting": 2, - "short": "idr", - "sessionToken": "sessb", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/idr", - "chatArchive": "https://www.ietf.org/jabber/logs/idr?C=M;O=D", - "recordings": [ - { - "id": 107757, - "name": "recording-113-idr-2", - "title": "Video recording for IDR on 2022-03-25 at 10:00:00", - "url": "https://www.youtube.com/watch?v=ciI302JHKNo" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29325.ics" - } - }, - { - "id": 104058, - "sessionId": 29435, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "dance", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-25T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "dance", - "regular", - "sec" - ], - "groupAcronym": "dance", - "groupName": "DANE Authentication for Network Clients Everywhere", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-dance-04" - }, - "orderInMeeting": 1, - "short": "dance", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/dance", - "chatArchive": "https://www.ietf.org/jabber/logs/dance?C=M;O=D", - "recordings": [ - { - "id": 107755, - "name": "recording-113-dance-1", - "title": "Video recording for DANCE on 2022-03-25 at 10:00:00", - "url": "https://www.youtube.com/watch?v=tWLNi_UkmS8" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29435.ics" - } - }, - { - "id": 104152, - "sessionId": 29277, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "gnap", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-25T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "gnap", - "regular", - "sec" - ], - "groupAcronym": "gnap", - "groupName": "Grant Negotiation and Authorization Protocol", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-gnap-00" - }, - "orderInMeeting": 1, - "short": "gnap", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/gnap", - "chatArchive": "https://www.ietf.org/jabber/logs/gnap?C=M;O=D", - "recordings": [ - { - "id": 107744, - "name": "recording-113-gnap-1", - "title": "Video recording for GNAP on 2022-03-25 at 10:00:00", - "url": "https://www.youtube.com/watch?v=uSwuZ9yk830" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29277.ics" - } - }, - { - "id": 104153, - "sessionId": 29271, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "lamps", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-25T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "lamps", - "regular", - "sec" - ], - "groupAcronym": "lamps", - "groupName": "Limited Additional Mechanisms for PKIX and SMIME", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-lamps-00" - }, - "orderInMeeting": 1, - "short": "lamps", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/lamps", - "chatArchive": "https://www.ietf.org/jabber/logs/lamps?C=M;O=D", - "recordings": [ - { - "id": 107751, - "name": "recording-113-lamps-1", - "title": "Video recording for LAMPS on 2022-03-25 at 10:00:00", - "url": "https://www.youtube.com/watch?v=CXYKM4XeAd0" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29271.ics" - } - }, - { - "id": 104162, - "sessionId": 29381, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "tsvwg", - "duration": 7200, - "name": "Morning Session I", - "startDateTime": "2022-03-25T10:00:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "tsv", - "tsvwg", - "tsvwg-sessb" - ], - "groupAcronym": "tsvwg", - "groupName": "Transport Area Working Group", - "groupParent": { - "acronym": "tsv" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-tsvwg-07" - }, - "orderInMeeting": 2, - "short": "tsvwg", - "sessionToken": "sessb", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/tsvwg", - "chatArchive": "https://www.ietf.org/jabber/logs/tsvwg?C=M;O=D", - "recordings": [ - { - "id": 107743, - "name": "recording-113-tsvwg-2", - "title": "Video recording for TSVWG on 2022-03-25 at 10:00:00", - "url": "https://www.youtube.com/watch?v=VSMrtdvPWHw" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29381.ics" - } - }, - { - "id": 104185, - "sessionId": 29457, - "room": "Yard and Park Ensemble", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "Beverage and Snack Break", - "startDateTime": "2022-03-25T12:00:00", - "status": "sched", - "type": "break", - "isBoF": false, - "filterKeywords": [ - "beverage-and-snack-break", - "secretariat", - "secretariat-sesso", - "social" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 10, - "short": "Beverage and Snack Break", - "sessionToken": "sesso", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29457.ics" - } - }, - { - "id": 104155, - "sessionId": 29376, - "room": "Park Suite 8", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "emailcore", - "duration": 7200, - "name": "Afternoon Session I", - "startDateTime": "2022-03-25T12:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "art", - "emailcore", - "regular" - ], - "groupAcronym": "emailcore", - "groupName": "Revision of core Email specifications", - "groupParent": { - "acronym": "art" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-emailcore-01" - }, - "orderInMeeting": 1, - "short": "emailcore", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/emailcore", - "chatArchive": "https://www.ietf.org/jabber/logs/emailcore?C=M;O=D", - "recordings": [ - { - "id": 107750, - "name": "recording-113-emailcore-1", - "title": "Video recording for EMAILCORE on 2022-03-25 at 12:30:00", - "url": "https://www.youtube.com/watch?v=9N8CQVAF_mM" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29376.ics" - } - }, - { - "id": 104141, - "sessionId": 29285, - "room": "Grand Park Hall 3", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "dprive", - "duration": 7200, - "name": "Afternoon Session I", - "startDateTime": "2022-03-25T12:30:00", - "status": "canceled", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "dprive", - "int", - "regular" - ], - "groupAcronym": "dprive", - "groupName": "DNS PRIVate Exchange", - "groupParent": { - "acronym": "int" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-dprive-06" - }, - "orderInMeeting": 1, - "short": "dprive", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/dprive", - "chatArchive": "https://www.ietf.org/jabber/logs/dprive?C=M;O=D", - "recordings": [], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29285.ics" - } - }, - { - "id": 104156, - "sessionId": 29343, - "room": "Park Suite 3", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "icnrg", - "duration": 7200, - "name": "Afternoon Session I", - "startDateTime": "2022-03-25T12:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "icnrg", - "irtf", - "regular" - ], - "groupAcronym": "icnrg", - "groupName": "Information-Centric Networking", - "groupParent": { - "acronym": "irtf" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-icnrg-03" - }, - "orderInMeeting": 1, - "short": "icnrg", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/icnrg", - "chatArchive": "https://www.ietf.org/jabber/logs/icnrg?C=M;O=D", - "recordings": [ - { - "id": 107762, - "name": "recording-113-icnrg-1", - "title": "Video recording for ICNRG on 2022-03-25 at 12:30:00", - "url": "https://www.youtube.com/watch?v=kMHAA5NUy1k" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29343.ics" - } - }, - { - "id": 104157, - "sessionId": 29363, - "room": "Grand Klimt Hall 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "anima", - "duration": 7200, - "name": "Afternoon Session I", - "startDateTime": "2022-03-25T12:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "anima", - "ops", - "regular" - ], - "groupAcronym": "anima", - "groupName": "Autonomic Networking Integrated Model and Approach", - "groupParent": { - "acronym": "ops" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-anima-00" - }, - "orderInMeeting": 1, - "short": "anima", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/anima", - "chatArchive": "https://www.ietf.org/jabber/logs/anima?C=M;O=D", - "recordings": [ - { - "id": 107759, - "name": "recording-113-anima-1", - "title": "Video recording for ANIMA on 2022-03-25 at 12:30:00", - "url": "https://www.youtube.com/watch?v=D7DAWKlCMU8" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29363.ics" - } - }, - { - "id": 104158, - "sessionId": 29287, - "room": "Park Suite 9", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "sidrops", - "duration": 7200, - "name": "Afternoon Session I", - "startDateTime": "2022-03-25T12:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "ops", - "regular", - "sidrops" - ], - "groupAcronym": "sidrops", - "groupName": "SIDR Operations", - "groupParent": { - "acronym": "ops" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-sidrops-03" - }, - "orderInMeeting": 1, - "short": "sidrops", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/sidrops", - "chatArchive": "https://www.ietf.org/jabber/logs/sidrops?C=M;O=D", - "recordings": [ - { - "id": 107761, - "name": "recording-113-sidrops-1", - "title": "Video recording for SIDROPS on 2022-03-25 at 12:30:00", - "url": "https://www.youtube.com/watch?v=5e211IkY_ic" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29287.ics" - } - }, - { - "id": 104159, - "sessionId": 29311, - "room": "Grand Park Hall 2", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "spring", - "duration": 7200, - "name": "Afternoon Session I", - "startDateTime": "2022-03-25T12:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "regular", - "rtg", - "spring" - ], - "groupAcronym": "spring", - "groupName": "Source Packet Routing in Networking", - "groupParent": { - "acronym": "rtg" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-spring-01" - }, - "orderInMeeting": 1, - "short": "spring", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/spring", - "chatArchive": "https://www.ietf.org/jabber/logs/spring?C=M;O=D", - "recordings": [ - { - "id": 107760, - "name": "recording-113-spring-1", - "title": "Video recording for SPRING on 2022-03-25 at 12:30:00", - "url": "https://www.youtube.com/watch?v=SQZpMneGUpU" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29311.ics" - } - }, - { - "id": 104160, - "sessionId": 29346, - "room": "Park Suite 2", - "location": { - "short": "M", - "name": "Mezzanine" - }, - "acronym": "ipsecme", - "duration": 7200, - "name": "Afternoon Session I", - "startDateTime": "2022-03-25T12:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "ipsecme", - "regular", - "sec" - ], - "groupAcronym": "ipsecme", - "groupName": "IP Security Maintenance and Extensions", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-ipsecme-00" - }, - "orderInMeeting": 1, - "short": "ipsecme", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/ipsecme", - "chatArchive": "https://www.ietf.org/jabber/logs/ipsecme?C=M;O=D", - "recordings": [ - { - "id": 107749, - "name": "recording-113-ipsecme-1", - "title": "Video recording for IPSECME on 2022-03-25 at 12:30:00", - "url": "https://www.youtube.com/watch?v=ubpSe_fiCuU" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29346.ics" - } - }, - { - "id": 104161, - "sessionId": 29397, - "room": "Grand Park Hall 1", - "location": { - "short": "G", - "name": "Ground Floor" - }, - "acronym": "ppm", - "duration": 7200, - "name": "Afternoon Session I", - "startDateTime": "2022-03-25T12:30:00", - "status": "sched", - "type": "regular", - "isBoF": false, - "filterKeywords": [ - "ppm", - "regular", - "sec" - ], - "groupAcronym": "ppm", - "groupName": "Privacy Preserving Measurement", - "groupParent": { - "acronym": "sec" - }, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": true, - "showAgenda": true - }, - "agenda": { - "url": "https://datatracker.ietf.org/meeting/113/materials/agenda-113-ppm-02" - }, - "orderInMeeting": 1, - "short": "ppm", - "sessionToken": null, - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/ppm", - "chatArchive": "https://www.ietf.org/jabber/logs/ppm?C=M;O=D", - "recordings": [ - { - "id": 107763, - "name": "recording-113-ppm-1", - "title": "Video recording for PPM on 2022-03-25 at 12:30:00", - "url": "https://www.youtube.com/watch?v=OKxpUofz9hQ" - } - ], - "videoStream": "https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream": "https://mp3.conf.meetecho.com/ietf113/{group.acronym}/{order_number}.m3u", - "webex": null, - "onsiteTool": "https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar": "/meeting/113/session/29397.ics" - } - }, - { - "id": 104534, - "sessionId": 29479, - "room": "Gather", - "location": {}, - "acronym": "secretariat", - "duration": 1800, - "name": "ISE Office Hours", - "startDateTime": "2022-03-25T14:00:00", - "status": "sched", - "type": "other", - "isBoF": false, - "filterKeywords": [ - "admin", - "ise-office-hours", - "secretariat", - "secretariat-sessbc" - ], - "groupAcronym": "secretariat", - "groupName": "Application Administrators", - "groupParent": {}, - "note": "", - "remoteInstructions": "", - "flags": { - "agenda": false, - "showAgenda": false - }, - "agenda": { - "url": null - }, - "orderInMeeting": 21, - "short": "ISE Office Hours", - "sessionToken": "sessbc", - "links": { - "chat": "https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive": "https://www.ietf.org/jabber/logs/secretariat?C=M;O=D", - "recordings": [], - "videoStream": null, - "audioStream": null, - "webex": null, - "onsiteTool": null, - "calendar": "/meeting/113/session/29479.ics" - } - } - ], - "floors": [ - { - "id": 43, - "image": "/media/floor/floorplan-113-ground-floor_Wa4jehl.png", - "name": "Ground Floor", - "short": "G", - "width": 4691, - "height": 3508, - "rooms": [ - { - "id": 812, - "name": "Green Room 1", - "functionalName": "Attendee Sign-Up (10)", - "slug": "green-room-1", - "left": 1810, - "right": 1980, - "top": 2280, - "bottom": 2450 - }, - { - "id": 807, - "name": "Grand Park Hall 1", - "functionalName": "Welcome Reception", - "slug": "grand-park-hall-1", - "left": 2530, - "right": 3600, - "top": 1980, - "bottom": 2400 - }, - { - "id": 803, - "name": "Park Ensemble", - "functionalName": "Registration", - "slug": "park-ensemble", - "left": 2030, - "right": 2450, - "top": 2450, - "bottom": 2840 - }, - { - "id": 801, - "name": "Grand Park Hall 3", - "functionalName": "Plenary", - "slug": "grand-park-hall-3", - "left": 2530, - "right": 3600, - "top": 2920, - "bottom": 3330 - }, - { - "id": 800, - "name": "Grand Park Hall 3", - "functionalName": "Breakout 8", - "slug": "grand-park-hall-3", - "left": 2530, - "right": 3600, - "top": 2920, - "bottom": 3330 - }, - { - "id": 799, - "name": "Grand Park Hall 2", - "functionalName": "Breakout 7", - "slug": "grand-park-hall-2", - "left": 2530, - "right": 3600, - "top": 2430, - "bottom": 2870 - }, - { - "id": 798, - "name": "Grand Park Hall 1", - "functionalName": "Breakout 6", - "slug": "grand-park-hall-1", - "left": 2530, - "right": 3600, - "top": 1980, - "bottom": 2400 - } - ] - }, - { - "id": 44, - "image": "/media/floor/floorplan-113-mezzanine_jUIzBAs.png", - "name": "Mezzanine", - "short": "M", - "width": 4691, - "height": 3133, - "rooms": [ - { - "id": 822, - "name": "Grand Klimt Hall 1/2", - "functionalName": "Hackathon Onsite", - "slug": "grand-klimt-hall-1-2", - "left": 1850, - "right": 2760, - "top": 440, - "bottom": 1300 - }, - { - "id": 821, - "name": "Park Suite 9", - "functionalName": "IEPG", - "slug": "park-suite-9", - "left": 240, - "right": 820, - "top": 590, - "bottom": 890 - }, - { - "id": 820, - "name": "Park Suite 9", - "functionalName": "Host Speaker Series", - "slug": "park-suite-9", - "left": 240, - "right": 820, - "top": 590, - "bottom": 890 - }, - { - "id": 819, - "name": "Park Suite 9", - "functionalName": "Tutorial", - "slug": "park-suite-9", - "left": 240, - "right": 820, - "top": 590, - "bottom": 890 - }, - { - "id": 817, - "name": "Park Suite 1", - "functionalName": "IAB", - "slug": "park-suite-1", - "left": 1540, - "right": 1810, - "top": 2310, - "bottom": 2640 - }, - { - "id": 816, - "name": "Park Suite 4", - "functionalName": "Secretariat", - "slug": "park-suite-4", - "left": 540, - "right": 860, - "top": 2310, - "bottom": 2640 - }, - { - "id": 815, - "name": "Park Suite 5", - "functionalName": "NOC", - "slug": "park-suite-5", - "left": 240, - "right": 540, - "top": 2200, - "bottom": 2640 - }, - { - "id": 814, - "name": "Park Suite 6", - "functionalName": "IESG", - "slug": "park-suite-6", - "left": 240, - "right": 540, - "top": 1530, - "bottom": 1820 - }, - { - "id": 813, - "name": "Park Suite 10", - "functionalName": "LLC", - "slug": "park-suite-10", - "left": 250, - "right": 800, - "top": 415, - "bottom": 560 - }, - { - "id": 809, - "name": "Grand Klimt Hall 3", - "functionalName": "Attendee Sign-Up (40)", - "slug": "grand-klimt-hall-3", - "left": 2770, - "right": 2980, - "top": 440, - "bottom": 1100 - }, - { - "id": 806, - "name": "Grand Klimt Hall 1", - "functionalName": "Lounge", - "slug": "grand-klimt-hall-1", - "left": 1850, - "right": 2170, - "top": 440, - "bottom": 1300 - }, - { - "id": 805, - "name": "Grand Klimt Hall 1/2", - "functionalName": "Hackathon", - "slug": "grand-klimt-hall-1-2", - "left": 1850, - "right": 2760, - "top": 440, - "bottom": 1300 - }, - { - "id": 802, - "name": "Park Suite 7", - "functionalName": "Terminal Room", - "slug": "park-suite-7", - "left": 240, - "right": 820, - "top": 1220, - "bottom": 1520 - }, - { - "id": 797, - "name": "Grand Klimt Hall 2", - "functionalName": "Breakout 5", - "slug": "grand-klimt-hall-2", - "left": 2180, - "right": 2760, - "top": 440, - "bottom": 1300 - }, - { - "id": 796, - "name": "Park Suite 9", - "functionalName": "Breakout 4", - "slug": "park-suite-9", - "left": 240, - "right": 820, - "top": 590, - "bottom": 890 - }, - { - "id": 795, - "name": "Park Suite 8", - "functionalName": "Breakout 3", - "slug": "park-suite-8", - "left": 240, - "right": 820, - "top": 890, - "bottom": 1220 - }, - { - "id": 794, - "name": "Park Suite 3", - "functionalName": "Breakout 2", - "slug": "park-suite-3", - "left": 880, - "right": 1160, - "top": 2320, - "bottom": 2640 - }, - { - "id": 793, - "name": "Park Suite 2", - "functionalName": "Breakout 1", - "slug": "park-suite-2", - "left": 1220, - "right": 1480, - "top": 2320, - "bottom": 2640 - } - ] - } - ] -} diff --git a/cypress/fixtures/agenda-114-data.json b/cypress/fixtures/agenda-114-data.json deleted file mode 100644 index eda394707..000000000 --- a/cypress/fixtures/agenda-114-data.json +++ /dev/null @@ -1,11660 +0,0 @@ -{ - "meeting":{ - "number":"114", - "city":"Philadelphia", - "startDate":"2022-07-23", - "endDate":"2022-07-29", - "updated":"2022-07-28T07:32:03-07:00", - "timezone":"America/New_York", - "infoNote":"Times on the text agenda are shown in Philadelphia local time, UTC -4.
\r\nPlease see our Meeting FAQ for information about COVID-19 preparations and more.
\r\nTo see information on public side meetings, visit the meeting wiki. \r\nGeneral meeting information is available on the meeting page of the IETF website.
\r\nFor our social/hallway space, please visit Gather. Password: notewell
\r\nFor more information on Meetecho, see our guides for Chairs and Participants.", - "warningNote":"" - }, - "categories":[ - [ - { - "label":"ART", - "keyword":"art", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"artart", - "keyword":"artart", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"avtcore", - "keyword":"avtcore", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"calext", - "keyword":"calext", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"cbor", - "keyword":"cbor", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"cdni", - "keyword":"cdni", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"core", - "keyword":"core", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"dispatch", - "keyword":"dispatch", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"dmarc", - "keyword":"dmarc", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"emailcore", - "keyword":"emailcore", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"httpapi", - "keyword":"httpapi", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"httpbis", - "keyword":"httpbis", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"jmap", - "keyword":"jmap", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"moq", - "keyword":"moq", - "toggled_by":[ - "bof", - "art" - ], - "is_bof":true - }, - { - "label":"regext", - "keyword":"regext", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"scim", - "keyword":"scim", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"sedate", - "keyword":"sedate", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"stir", - "keyword":"stir", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"tigress", - "keyword":"tigress", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"uta", - "keyword":"uta", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"webtrans", - "keyword":"webtrans", - "toggled_by":[ - "art" - ], - "is_bof":false - }, - { - "label":"wish", - "keyword":"wish", - "toggled_by":[ - "art" - ], - "is_bof":false - } - ] - }, - { - "label":"GEN", - "keyword":"gen", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"gendispatch", - "keyword":"gendispatch", - "toggled_by":[ - "gen" - ], - "is_bof":false - } - ] - }, - { - "label":"INT", - "keyword":"int", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"6lo", - "keyword":"6lo", - "toggled_by":[ - "int" - ], - "is_bof":false - }, - { - "label":"6man", - "keyword":"6man", - "toggled_by":[ - "int" - ], - "is_bof":false - }, - { - "label":"add", - "keyword":"add", - "toggled_by":[ - "int" - ], - "is_bof":false - }, - { - "label":"dhc", - "keyword":"dhc", - "toggled_by":[ - "int" - ], - "is_bof":false - }, - { - "label":"dmm", - "keyword":"dmm", - "toggled_by":[ - "int" - ], - "is_bof":false - }, - { - "label":"dnssd", - "keyword":"dnssd", - "toggled_by":[ - "int" - ], - "is_bof":false - }, - { - "label":"drip", - "keyword":"drip", - "toggled_by":[ - "int" - ], - "is_bof":false - }, - { - "label":"intarea", - "keyword":"intarea", - "toggled_by":[ - "int" - ], - "is_bof":false - }, - { - "label":"lpwan", - "keyword":"lpwan", - "toggled_by":[ - "int" - ], - "is_bof":false - }, - { - "label":"madinas", - "keyword":"madinas", - "toggled_by":[ - "int" - ], - "is_bof":false - }, - { - "label":"ntp", - "keyword":"ntp", - "toggled_by":[ - "int" - ], - "is_bof":false - }, - { - "label":"snac", - "keyword":"snac", - "toggled_by":[ - "bof", - "int" - ], - "is_bof":true - } - ] - }, - { - "label":"OPS", - "keyword":"ops", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"anima", - "keyword":"anima", - "toggled_by":[ - "ops" - ], - "is_bof":false - }, - { - "label":"bmwg", - "keyword":"bmwg", - "toggled_by":[ - "ops" - ], - "is_bof":false - }, - { - "label":"dnsop", - "keyword":"dnsop", - "toggled_by":[ - "ops" - ], - "is_bof":false - }, - { - "label":"grow", - "keyword":"grow", - "toggled_by":[ - "ops" - ], - "is_bof":false - }, - { - "label":"iotops", - "keyword":"iotops", - "toggled_by":[ - "ops" - ], - "is_bof":false - }, - { - "label":"mboned", - "keyword":"mboned", - "toggled_by":[ - "ops" - ], - "is_bof":false - }, - { - "label":"mops", - "keyword":"mops", - "toggled_by":[ - "ops" - ], - "is_bof":false - }, - { - "label":"netconf", - "keyword":"netconf", - "toggled_by":[ - "ops" - ], - "is_bof":false - }, - { - "label":"netmod", - "keyword":"netmod", - "toggled_by":[ - "ops" - ], - "is_bof":false - }, - { - "label":"opsawg", - "keyword":"opsawg", - "toggled_by":[ - "ops" - ], - "is_bof":false - }, - { - "label":"opsec", - "keyword":"opsec", - "toggled_by":[ - "ops" - ], - "is_bof":false - }, - { - "label":"sidrops", - "keyword":"sidrops", - "toggled_by":[ - "ops" - ], - "is_bof":false - }, - { - "label":"v6ops", - "keyword":"v6ops", - "toggled_by":[ - "ops" - ], - "is_bof":false - } - ] - }, - { - "label":"RTG", - "keyword":"rtg", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"bess", - "keyword":"bess", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"bier", - "keyword":"bier", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"ccamp", - "keyword":"ccamp", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"detnet", - "keyword":"detnet", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"idr", - "keyword":"idr", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"lisp", - "keyword":"lisp", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"lsr", - "keyword":"lsr", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"manet", - "keyword":"manet", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"mpls", - "keyword":"mpls", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"msr6", - "keyword":"msr6", - "toggled_by":[ - "bof", - "rtg" - ], - "is_bof":true - }, - { - "label":"pals", - "keyword":"pals", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"pce", - "keyword":"pce", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"pim", - "keyword":"pim", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"raw", - "keyword":"raw", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"rift", - "keyword":"rift", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"roll", - "keyword":"roll", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"rtgarea", - "keyword":"rtgarea", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"rtgwg", - "keyword":"rtgwg", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"savnet", - "keyword":"savnet", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"spring", - "keyword":"spring", - "toggled_by":[ - "rtg" - ], - "is_bof":false - }, - { - "label":"teas", - "keyword":"teas", - "toggled_by":[ - "rtg" - ], - "is_bof":false - } - ] - }, - { - "label":"SEC", - "keyword":"sec", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"acme", - "keyword":"acme", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"cose", - "keyword":"cose", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"dance", - "keyword":"dance", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"emu", - "keyword":"emu", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"gnap", - "keyword":"gnap", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"i2nsf", - "keyword":"i2nsf", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"ipsecme", - "keyword":"ipsecme", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"jwp", - "keyword":"jwp", - "toggled_by":[ - "bof", - "sec" - ], - "is_bof":true - }, - { - "label":"lake", - "keyword":"lake", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"lamps", - "keyword":"lamps", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"mls", - "keyword":"mls", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"oauth", - "keyword":"oauth", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"ohai", - "keyword":"ohai", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"openpgp", - "keyword":"openpgp", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"ppm", - "keyword":"ppm", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"privacypass", - "keyword":"privacypass", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"rats", - "keyword":"rats", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"satp", - "keyword":"satp", - "toggled_by":[ - "bof", - "sec" - ], - "is_bof":true - }, - { - "label":"scitt", - "keyword":"scitt", - "toggled_by":[ - "bof", - "sec" - ], - "is_bof":true - }, - { - "label":"secdispatch", - "keyword":"secdispatch", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"suit", - "keyword":"suit", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"teep", - "keyword":"teep", - "toggled_by":[ - "sec" - ], - "is_bof":false - }, - { - "label":"tls", - "keyword":"tls", - "toggled_by":[ - "sec" - ], - "is_bof":false - } - ] - }, - { - "label":"TSV", - "keyword":"tsv", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"alto", - "keyword":"alto", - "toggled_by":[ - "tsv" - ], - "is_bof":false - }, - { - "label":"dtn", - "keyword":"dtn", - "toggled_by":[ - "tsv" - ], - "is_bof":false - }, - { - "label":"ippm", - "keyword":"ippm", - "toggled_by":[ - "tsv" - ], - "is_bof":false - }, - { - "label":"masque", - "keyword":"masque", - "toggled_by":[ - "tsv" - ], - "is_bof":false - }, - { - "label":"nfsv4", - "keyword":"nfsv4", - "toggled_by":[ - "tsv" - ], - "is_bof":false - }, - { - "label":"quic", - "keyword":"quic", - "toggled_by":[ - "tsv" - ], - "is_bof":false - }, - { - "label":"tcpm", - "keyword":"tcpm", - "toggled_by":[ - "tsv" - ], - "is_bof":false - }, - { - "label":"tsvarea", - "keyword":"tsvarea", - "toggled_by":[ - "tsv" - ], - "is_bof":false - }, - { - "label":"tsvwg", - "keyword":"tsvwg", - "toggled_by":[ - "tsv" - ], - "is_bof":false - } - ] - } - ], - [ - { - "label":"IAB", - "keyword":"iab", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"edm", - "keyword":"edm", - "toggled_by":[ - "iab" - ], - "is_bof":false - }, - { - "label":"iabopen", - "keyword":"iabopen", - "toggled_by":[ - "iab" - ], - "is_bof":false - } - ] - }, - { - "label":"IRTF", - "keyword":"irtf", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"anrw", - "keyword":"anrw", - "toggled_by":[ - "irtf" - ], - "is_bof":false - }, - { - "label":"cfrg", - "keyword":"cfrg", - "toggled_by":[ - "irtf" - ], - "is_bof":false - }, - { - "label":"dinrg", - "keyword":"dinrg", - "toggled_by":[ - "irtf" - ], - "is_bof":false - }, - { - "label":"gaia", - "keyword":"gaia", - "toggled_by":[ - "irtf" - ], - "is_bof":false - }, - { - "label":"hrpc", - "keyword":"hrpc", - "toggled_by":[ - "irtf" - ], - "is_bof":false - }, - { - "label":"iccrg", - "keyword":"iccrg", - "toggled_by":[ - "irtf" - ], - "is_bof":false - }, - { - "label":"icnrg", - "keyword":"icnrg", - "toggled_by":[ - "irtf" - ], - "is_bof":false - }, - { - "label":"irtfopen", - "keyword":"irtfopen", - "toggled_by":[ - "irtf" - ], - "is_bof":false - }, - { - "label":"maprg", - "keyword":"maprg", - "toggled_by":[ - "irtf" - ], - "is_bof":false - }, - { - "label":"nmrg", - "keyword":"nmrg", - "toggled_by":[ - "irtf" - ], - "is_bof":false - }, - { - "label":"panrg", - "keyword":"panrg", - "toggled_by":[ - "irtf" - ], - "is_bof":false - }, - { - "label":"pearg", - "keyword":"pearg", - "toggled_by":[ - "irtf" - ], - "is_bof":false - } - ] - } - ], - [ - { - "label":"Administrative", - "keyword":"admin", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"IETF Registration", - "keyword":"ietf-registration", - "toggled_by":[ - "admin", - "secretariat" - ], - "is_bof":false - } - ] - }, - { - "label":"Coding", - "keyword":"coding", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"Hackathon", - "keyword":"hackathon", - "toggled_by":[ - "coding", - "hackathon" - ], - "is_bof":false - }, - { - "label":"Code Sprint", - "keyword":"code-sprint", - "toggled_by":[ - "coding", - "tools" - ], - "is_bof":false - } - ] - }, - { - "label":"Office hours", - "keyword":"officehours", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"Transport AD Office Hours", - "keyword":"transport-ad-office-hours", - "toggled_by":[ - "officehours", - "iesg" - ], - "is_bof":false - }, - { - "label":"Routing AD Office Hours", - "keyword":"routing-ad-office-hours", - "toggled_by":[ - "officehours", - "iesg" - ], - "is_bof":false - }, - { - "label":"RPC Office Hours", - "keyword":"rpc-office-hours", - "toggled_by":[ - "officehours", - "rpc" - ], - "is_bof":false - }, - { - "label":"IANA Office Hours", - "keyword":"iana-office-hours", - "toggled_by":[ - "officehours", - "secretariat" - ], - "is_bof":false - }, - { - "label":"ISE Office Hours", - "keyword":"ise-office-hours", - "toggled_by":[ - "officehours", - "secretariat" - ], - "is_bof":false - }, - { - "label":"IANA Office Hours Online", - "keyword":"iana-office-hours-online", - "toggled_by":[ - "officehours", - "secretariat" - ], - "is_bof":false - }, - { - "label":"Internet AD Office Hours", - "keyword":"internet-ad-office-hours", - "toggled_by":[ - "officehours", - "iesg" - ], - "is_bof":false - }, - { - "label":"Security AD Office Hours", - "keyword":"security-ad-office-hours", - "toggled_by":[ - "officehours", - "iesg" - ], - "is_bof":false - }, - { - "label":"IETF Chair Office Hours", - "keyword":"ietf-chair-office-hours", - "toggled_by":[ - "officehours", - "ietf" - ], - "is_bof":false - } - ] - }, - { - "label":"Open meeting", - "keyword":"open_meeting", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"IETF Wiki Content Sprint", - "keyword":"ietf-wiki-content-sprint", - "toggled_by":[ - "open_meeting", - "emodir" - ], - "is_bof":false - }, - { - "label":"EMODIR Meeting", - "keyword":"emodir-meeting", - "toggled_by":[ - "open_meeting", - "emodir" - ], - "is_bof":false - }, - { - "label":"WG Chairs Forum", - "keyword":"wg-chairs-forum", - "toggled_by":[ - "open_meeting", - "emodir" - ], - "is_bof":false - }, - { - "label":"Newcomers' Feedback Session", - "keyword":"newcomers-feedback-session", - "toggled_by":[ - "open_meeting", - "emodir" - ], - "is_bof":false - } - ] - }, - { - "label":"Plenary", - "keyword":"plenary", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"IETF Plenary", - "keyword":"ietf-plenary", - "toggled_by":[ - "plenary", - "ietf" - ], - "is_bof":false - } - ] - }, - { - "label":"Presentation", - "keyword":"presentation", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"Hackathon Kickoff", - "keyword":"hackathon-kickoff", - "toggled_by":[ - "presentation", - "hackathon" - ], - "is_bof":false - }, - { - "label":"IEPG", - "keyword":"iepg", - "toggled_by":[ - "presentation", - "iepg" - ], - "is_bof":false - }, - { - "label":"Hackathon Project Results Presentations", - "keyword":"hackathon-project-results-presentations", - "toggled_by":[ - "presentation", - "hackathon" - ], - "is_bof":false - }, - { - "label":"Hot RFC", - "keyword":"hot-rfc", - "toggled_by":[ - "presentation", - "hotrfc" - ], - "is_bof":false - }, - { - "label":"", - "keyword":null, - "toggled_by":[ - "presentation", - "tdd" - ], - "is_bof":false - }, - { - "label":"Host Speaker Series", - "keyword":"host-speaker-series", - "toggled_by":[ - "presentation", - "ietf" - ], - "is_bof":false - } - ] - }, - { - "label":"Social", - "keyword":"social", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"Newcomers' Quick Connections", - "keyword":"newcomers-quick-connections", - "toggled_by":[ - "social", - "emodir" - ], - "is_bof":false - }, - { - "label":"Welcome Reception", - "keyword":"welcome-reception", - "toggled_by":[ - "social", - "ietf" - ], - "is_bof":false - }, - { - "label":"Continental Breakfast", - "keyword":"continental-breakfast", - "toggled_by":[ - "social", - "secretariat" - ], - "is_bof":false - }, - { - "label":"Systers Networking Event", - "keyword":"systers-networking-event", - "toggled_by":[ - "social", - "systers" - ], - "is_bof":false - }, - { - "label":"Break", - "keyword":"break", - "toggled_by":[ - "social", - "secretariat" - ], - "is_bof":false - }, - { - "label":"Beverage and Snack Break", - "keyword":"beverage-and-snack-break", - "toggled_by":[ - "social", - "secretariat" - ], - "is_bof":false - }, - { - "label":"Hackdemo Happy Hour", - "keyword":"hackdemo-happy-hour", - "toggled_by":[ - "social", - "hackathon" - ], - "is_bof":false - }, - { - "label":"Newcomers' Dinner (Open to newcomers. Note that pre-registration is required and a $25USD fee will be charged.)", - "keyword":"newcomers-dinner-open-to-newcomers-note-that-pre-registration-is-required-and-a-25usd-fee-will-be-charged", - "toggled_by":[ - "social", - "secretariat" - ], - "is_bof":false - }, - { - "label":"Virtual Newcomers Coffee Break", - "keyword":"virtual-newcomers-coffee-break", - "toggled_by":[ - "social", - "emodir" - ], - "is_bof":false - }, - { - "label":"IETF 114 Social Event at the Barnes Foundation - Hosted by Comcast-NBCUniversal", - "keyword":"ietf-114-social-event-at-the-barnes-foundation-hosted-by-comcast-nbcuniversal", - "toggled_by":[ - "social", - "secretariat" - ], - "is_bof":false - }, - { - "label":"ART ART & i18ndir breakfast", - "keyword":"art-art-i18ndir-breakfast", - "toggled_by":[ - "social", - "artart" - ], - "is_bof":false - }, - { - "label":"Systers Lunch", - "keyword":"systers-lunch", - "toggled_by":[ - "social", - "systers" - ], - "is_bof":false - } - ] - }, - { - "label":"Tutorial", - "keyword":"tutorial", - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"Tutorial: Newcomers' Overview", - "keyword":"tutorial-newcomers-overview", - "toggled_by":[ - "tutorial", - "emodir" - ], - "is_bof":false - } - ] - }, - { - "label":null, - "keyword":null, - "toggled_by":[ - - ], - "is_bof":false, - "children":[ - { - "label":"BoF", - "keyword":"bof", - "toggled_by":[ - - ], - "is_bof":false - }, - { - "label":"emodir", - "keyword":"emodir", - "toggled_by":[ - "gen" - ], - "is_bof":false - }, - { - "label":"Hackathon", - "keyword":"hackathon", - "toggled_by":[ - "gen" - ], - "is_bof":false - }, - { - "label":"hotrfc", - "keyword":"hotrfc", - "toggled_by":[ - "ietf" - ], - "is_bof":false - }, - { - "label":"IEPG", - "keyword":"iepg", - "toggled_by":[ - - ], - "is_bof":false - }, - { - "label":"rpc", - "keyword":"rpc", - "toggled_by":[ - "rfceditor" - ], - "is_bof":false - }, - { - "label":"rsab", - "keyword":"rsab", - "toggled_by":[ - "rfceditor" - ], - "is_bof":false - }, - { - "label":"rswg", - "keyword":"rswg", - "toggled_by":[ - "rfceditor" - ], - "is_bof":false - }, - { - "label":"Systers", - "keyword":"systers", - "toggled_by":[ - "gen" - ], - "is_bof":false - }, - { - "label":"tdd", - "keyword":"tdd", - "toggled_by":[ - - ], - "is_bof":false - }, - { - "label":"Tools", - "keyword":"tools", - "toggled_by":[ - "gen" - ], - "is_bof":false - } - ] - } - ] - ], - "isCurrentMeeting":true, - "useHedgeDoc":true, - "schedule":[ - { - "id":105728, - "sessionId":29745, - "room":"Liberty A", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"hackathon", - "duration":41400, - "name":"Hackathon", - "startDateTime":"2022-07-23T09:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "coding", - "hackathon", - "hackathon-sessc" - ], - "groupAcronym":"hackathon", - "groupName":"Hackathon", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-hackathon-sessc-00" - }, - "orderInMeeting":1, - "short":"Hackathon", - "sessionToken":"sessc", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/hackathon", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/hackathon", - "recordings":[ - { - "id":109332, - "name":"recording-114-hackathon-2", - "title":"Video recording for HACKATHON on 2022-07-23 at 09:30:00", - "url":"https://www.youtube.com/watch?v=HrCOUeSGagU" - } - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29745.ics" - } - }, - { - "id":105729, - "sessionId":29744, - "room":"Liberty A", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"tools", - "duration":28800, - "name":"Code Sprint", - "startDateTime":"2022-07-23T10:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "code-sprint", - "coding", - "tools" - ], - "groupAcronym":"tools", - "groupName":"The Tools Team", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":1, - "short":"Code Sprint", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/tools", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/tools", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29744.ics" - } - }, - { - "id":105730, - "sessionId":29629, - "room":"Liberty A", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"hackathon", - "duration":1800, - "name":"Hackathon Kickoff", - "startDateTime":"2022-07-23T10:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "hackathon", - "hackathon-kickoff", - "hackathon-sessa", - "presentation" - ], - "groupAcronym":"hackathon", - "groupName":"Hackathon", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"https://meetings.conf.meetecho.com/ietf114/?group=hackathon&item=2", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-hackathon-sessa-00" - }, - "orderInMeeting":2, - "short":"Hackathon Kickoff", - "sessionToken":"sessa", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/hackathon", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/hackathon", - "recordings":[ - { - "id":109190, - "name":"recording-114-hackathon-1", - "title":"Video recording for HACKATHON on 2022-07-23 at 10:30:00", - "url":"https://www.youtube.com/watch?v=eQqwbQ0zqwI" - } - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29629.ics" - } - }, - { - "id":106079, - "sessionId":29784, - "room":"Salon 10", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"emodir", - "duration":14400, - "name":"IETF Wiki Content Sprint", - "startDateTime":"2022-07-23T14:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "emodir", - "emodir-sesse", - "ietf-wiki-content-sprint", - "open_meeting" - ], - "groupAcronym":"emodir", - "groupName":"Education, Mentoring and Outreach Directorate", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-emodir-sesse-00" - }, - "orderInMeeting":1, - "short":"IETF Wiki Content Sprint", - "sessionToken":"sesse", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/emodir", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/emodir", - "recordings":[ - { - "id":109331, - "name":"recording-114-emodir-1", - "title":"Video recording for EMODIR on 2022-07-23 at 14:00:00", - "url":"https://www.youtube.com/watch?v=u3Wd4xCEAu8" - } - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29784.ics" - } - }, - { - "id":105731, - "sessionId":29746, - "room":"Liberty A", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"hackathon", - "duration":23400, - "name":"Hackathon", - "startDateTime":"2022-07-24T09:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "coding", - "hackathon", - "hackathon-sessd" - ], - "groupAcronym":"hackathon", - "groupName":"Hackathon", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-hackathon-sessd-00" - }, - "orderInMeeting":3, - "short":"Hackathon", - "sessionToken":"sessd", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/hackathon", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/hackathon", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29746.ics" - } - }, - { - "id":105732, - "sessionId":29548, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"iepg", - "duration":7200, - "name":"IEPG Meeting", - "startDateTime":"2022-07-24T10:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iepg", - "presentation" - ], - "groupAcronym":"iepg", - "groupName":"IEPG - Internet Engineering and Planning Group", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"https://meetings.conf.meetecho.com/ietf114/?group=iepg", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-iepg-sessa-00" - }, - "orderInMeeting":1, - "short":"IEPG", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/iepg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/iepg", - "recordings":[ - { - "id":109290, - "name":"recording-114-iepg-1", - "title":"Video recording for IEPG on 2022-07-24 at 10:00:00", - "url":"https://www.youtube.com/watch?v=Pz6wIu1gaXE" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29548.ics" - } - }, - { - "id":105733, - "sessionId":29722, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":28800, - "name":"IETF Registration", - "startDateTime":"2022-07-24T10:00:00", - "status":"sched", - "type":"reg", - "isBoF":false, - "filterKeywords":[ - "admin", - "ietf-registration", - "secretariat", - "secretariat-sessa" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":1, - "short":"IETF Registration", - "sessionToken":"sessa", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29722.ics" - } - }, - { - "id":105734, - "sessionId":29741, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"emodir", - "duration":3600, - "name":"Tutorial: Newcomers", - "startDateTime":"2022-07-24T12:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "emodir", - "emodir-sessb", - "tutorial", - "tutorial-newcomers-overview" - ], - "groupAcronym":"emodir", - "groupName":"Education, Mentoring and Outreach Directorate", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"https://meetings.conf.meetecho.com/ietf114/?group=emodir&short=&item=2", - "flags":{ - "agenda":false, - "showAgenda":true - }, - "agenda":{ - "url":null - }, - "orderInMeeting":2, - "short":"Tutorial: Newcomers' Overview", - "sessionToken":"sessb", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/emodir", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/emodir", - "recordings":[ - { - "id":109349, - "name":"recording-114-emodir-2", - "title":"Video recording for EMODIR on 2022-07-24 at 12:30:00", - "url":"https://www.youtube.com/watch?v=c7F5mkuCNrk" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29741.ics" - } - }, - { - "id":105735, - "sessionId":29630, - "room":"Liberty A", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"hackathon", - "duration":7200, - "name":"Hackathon Results Presentations", - "startDateTime":"2022-07-24T14:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "hackathon", - "hackathon-project-results-presentations", - "hackathon-sessb", - "presentation" - ], - "groupAcronym":"hackathon", - "groupName":"Hackathon", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"https://meetings.conf.meetecho.com/ietf114/?group=hackathon&item=4", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-hackathon-sessb-00" - }, - "orderInMeeting":4, - "short":"Hackathon Project Results Presentations", - "sessionToken":"sessb", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/hackathon", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/hackathon", - "recordings":[ - { - "id":109348, - "name":"recording-114-hackathon-3", - "title":"Video recording for HACKATHON on 2022-07-24 at 14:00:00", - "url":"https://www.youtube.com/watch?v=eQqwbQ0zqwI" - } - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29630.ics" - } - }, - { - "id":105736, - "sessionId":29740, - "room":"Liberty C/D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"emodir", - "duration":3600, - "name":"Newcomers' Quick Connections (Note that pre-registration is required)", - "startDateTime":"2022-07-24T16:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "emodir", - "emodir-sessa", - "newcomers-quick-connections", - "social" - ], - "groupAcronym":"emodir", - "groupName":"Education, Mentoring and Outreach Directorate", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":3, - "short":"Newcomers' Quick Connections", - "sessionToken":"sessa", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/emodir", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/emodir", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29740.ics" - } - }, - { - "id":106069, - "sessionId":29774, - "room":"Salon 9", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"iesg", - "duration":3600, - "name":"TSV AD Office Hours", - "startDateTime":"2022-07-24T16:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iesg", - "iesg-sessc", - "officehours", - "transport-ad-office-hours" - ], - "groupAcronym":"iesg", - "groupName":"Internet Engineering Steering Group", - "groupParent":{ - "acronym":"ietf" - }, - "note":"", - "remoteInstructions":"https://ietf.webex.com/ietf/j.php?MTID=ma0a676b89c1f47cd4c5869df4a8eb3ce", - "flags":{ - "agenda":false, - "showAgenda":true - }, - "agenda":{ - "url":null - }, - "orderInMeeting":1, - "short":"Transport AD Office Hours", - "sessionToken":"sessc", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/iesg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/iesg", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29774.ics" - } - }, - { - "id":106063, - "sessionId":29768, - "room":"Salon 2", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"iesg", - "duration":2700, - "name":"Routing AD Office Hours", - "startDateTime":"2022-07-24T16:15:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iesg", - "iesg-sessa", - "officehours", - "routing-ad-office-hours" - ], - "groupAcronym":"iesg", - "groupName":"Internet Engineering Steering Group", - "groupParent":{ - "acronym":"ietf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":2, - "short":"Routing AD Office Hours", - "sessionToken":"sessa", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/iesg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/iesg", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29768.ics" - } - }, - { - "id":105737, - "sessionId":29729, - "room":"Liberty C/D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"ietf", - "duration":7200, - "name":"Welcome Reception", - "startDateTime":"2022-07-24T17:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "ietf", - "ietf-sessb", - "social", - "welcome-reception" - ], - "groupAcronym":"ietf", - "groupName":"IETF", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":1, - "short":"Welcome Reception", - "sessionToken":"sessb", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/ietf", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/ietf", - "recordings":[ - { - "id":109928, - "name":"recording-114-ietf-2", - "title":"Video recording for IETF on 2022-07-24 at 17:00:00", - "url":"https://www.youtube.com/watch?v=6SLR7lftORY" - } - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29729.ics" - } - }, - { - "id":106058, - "sessionId":29764, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"hotrfc", - "duration":7200, - "name":"Hot RFC Lightning Talks", - "startDateTime":"2022-07-24T18:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "hot-rfc", - "hotrfc", - "presentation" - ], - "groupAcronym":"hotrfc", - "groupName":"Hot RFC Lightning Talks", - "groupParent":{ - "acronym":"ietf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-hotrfc-sessa-18" - }, - "orderInMeeting":1, - "short":"Hot RFC", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/hotrfc", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/hotrfc", - "recordings":[ - { - "id":109375, - "name":"recording-114-hotrfc-1", - "title":"Video recording for HOTRFC on 2022-07-24 at 18:00:00", - "url":"https://www.youtube.com/watch?v=VdZ2h7vUecw" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29764.ics" - } - }, - { - "id":105738, - "sessionId":29747, - "room":"Liberty Ballroom Foyer & Independence Foyer", - "location":{ - - }, - "acronym":"secretariat", - "duration":5400, - "name":"Continental Breakfast", - "startDateTime":"2022-07-25T08:30:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "continental-breakfast", - "secretariat", - "secretariat-sessq", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":1, - "short":"Continental Breakfast", - "sessionToken":"sessq", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29747.ics" - } - }, - { - "id":105739, - "sessionId":29760, - "room":"Horizons Ballroom", - "location":{ - - }, - "acronym":"systers", - "duration":3600, - "name":"Systers Networking Event", - "startDateTime":"2022-07-25T08:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "social", - "systers", - "systers-networking-event", - "systers-sessa" - ], - "groupAcronym":"systers", - "groupName":"Systers", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":1, - "short":"Systers Networking Event", - "sessionToken":"sessa", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/systers", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/systers", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29760.ics" - } - }, - { - "id":106067, - "sessionId":29773, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"rpc", - "duration":30600, - "name":"RPC Office Hours", - "startDateTime":"2022-07-25T08:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "officehours", - "rpc", - "rpc-office-hours", - "rpc-sessd" - ], - "groupAcronym":"rpc", - "groupName":"RFC Production Center", - "groupParent":{ - "acronym":"rfceditor" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":1, - "short":"RPC Office Hours", - "sessionToken":"sessd", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/rpc", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/rpc", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29773.ics" - } - }, - { - "id":105740, - "sessionId":29723, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":28800, - "name":"IETF Registration", - "startDateTime":"2022-07-25T08:30:00", - "status":"sched", - "type":"reg", - "isBoF":false, - "filterKeywords":[ - "admin", - "ietf-registration", - "secretariat", - "secretariat-sessb" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":2, - "short":"IETF Registration", - "sessionToken":"sessb", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29723.ics" - } - }, - { - "id":106077, - "sessionId":29782, - "room":"Philadelphia South", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"rsab", - "duration":4800, - "name":"Session 0", - "startDateTime":"2022-07-25T08:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "rsab" - ], - "groupAcronym":"rsab", - "groupName":"RFC Series Approval Board", - "groupParent":{ - "acronym":"rfceditor" - }, - "note":"", - "remoteInstructions":"https://meetings.conf.meetecho.com/ietf114/?group=rsab", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-rsab-02" - }, - "orderInMeeting":1, - "short":"rsab", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/rsab", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/rsab", - "recordings":[ - { - "id":109878, - "name":"recording-114-rsab-1", - "title":"Video recording for RSAB on 2022-07-25 at 08:30:00", - "url":"https://www.youtube.com/watch?v=t1DxYS5Ky2c" - } - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29782.ics" - } - }, - { - "id":106081, - "sessionId":29786, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":30600, - "name":"IANA Office Hours", - "startDateTime":"2022-07-25T09:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iana-office-hours", - "officehours", - "secretariat", - "secretariat-sessbd" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":2, - "short":"IANA Office Hours", - "sessionToken":"sessbd", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29786.ics" - } - }, - { - "id":105741, - "sessionId":29754, - "room":"Gather", - "location":{ - - }, - "acronym":"secretariat", - "duration":1800, - "name":"ISE Office Hours", - "startDateTime":"2022-07-25T09:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "ise-office-hours", - "officehours", - "secretariat", - "secretariat-sessw" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":1, - "short":"ISE Office Hours", - "sessionToken":"sessw", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29754.ics" - } - }, - { - "id":106082, - "sessionId":29790, - "room":"Gather", - "location":{ - - }, - "acronym":"secretariat", - "duration":27000, - "name":"IANA Office Hours - Virtual", - "startDateTime":"2022-07-25T10:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iana-office-hours-online", - "officehours", - "secretariat", - "secretariat-sessbh" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":3, - "short":"IANA Office Hours Online", - "sessionToken":"sessbh", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29790.ics" - } - }, - { - "id":105742, - "sessionId":29616, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"dispatch", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-25T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "dispatch", - "regular" - ], - "groupAcronym":"dispatch", - "groupName":"Dispatch", - "groupParent":{ - "acronym":"art" - }, - "note":"Joint with ARTAREA", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-dispatch-00" - }, - "orderInMeeting":1, - "short":"dispatch", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/dispatch", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/dispatch", - "recordings":[ - { - "id":109679, - "name":"recording-114-dispatch-1", - "title":"Video recording for DISPATCH on 2022-07-25 at 10:00:00", - "url":"https://www.youtube.com/watch?v=YyykUxLQhrc" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29616.ics" - } - }, - { - "id":105743, - "sessionId":29718, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"snac", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-25T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":true, - "filterKeywords":[ - "bof", - "int", - "regular", - "snac" - ], - "groupAcronym":"snac", - "groupName":"Stub Network Auto Configuration for IPv6", - "groupParent":{ - "acronym":"int" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-snac-01" - }, - "orderInMeeting":1, - "short":"snac", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/snac", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/snac", - "recordings":[ - { - "id":109672, - "name":"recording-114-snac-1", - "title":"Video recording for SNAC on 2022-07-25 at 10:00:00", - "url":"https://www.youtube.com/watch?v=NOxCvFTEui8" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29718.ics" - } - }, - { - "id":105744, - "sessionId":29605, - "room":"Liberty D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"cfrg", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-25T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "cfrg", - "irtf", - "regular" - ], - "groupAcronym":"cfrg", - "groupName":"Crypto Forum", - "groupParent":{ - "acronym":"irtf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-cfrg-04" - }, - "orderInMeeting":1, - "short":"cfrg", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/cfrg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/cfrg", - "recordings":[ - { - "id":109675, - "name":"recording-114-cfrg-1", - "title":"Video recording for CFRG on 2022-07-25 at 10:00:00", - "url":"https://www.youtube.com/watch?v=j8_MowXG82U" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29605.ics" - } - }, - { - "id":105745, - "sessionId":29534, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"netconf", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-25T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "netconf", - "ops", - "regular" - ], - "groupAcronym":"netconf", - "groupName":"Network Configuration", - "groupParent":{ - "acronym":"ops" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-netconf-03" - }, - "orderInMeeting":1, - "short":"netconf", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/netconf", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/netconf", - "recordings":[ - { - "id":109673, - "name":"recording-114-netconf-1", - "title":"Video recording for NETCONF on 2022-07-25 at 10:00:00", - "url":"https://www.youtube.com/watch?v=a4ygZaoo7cw" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29534.ics" - } - }, - { - "id":105746, - "sessionId":29625, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"bier", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-25T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "bier", - "regular", - "rtg" - ], - "groupAcronym":"bier", - "groupName":"Bit Indexed Explicit Replication", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-bier-03" - }, - "orderInMeeting":1, - "short":"bier", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/bier", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/bier", - "recordings":[ - { - "id":109677, - "name":"recording-114-bier-1", - "title":"Video recording for BIER on 2022-07-25 at 10:00:00", - "url":"https://www.youtube.com/watch?v=idQKP2ue85U" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29625.ics" - } - }, - { - "id":105747, - "sessionId":29552, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"teas", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-25T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "rtg", - "teas" - ], - "groupAcronym":"teas", - "groupName":"Traffic Engineering Architecture and Signaling", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-teas-00" - }, - "orderInMeeting":1, - "short":"teas", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/teas", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/teas", - "recordings":[ - { - "id":109680, - "name":"recording-114-teas-1", - "title":"Video recording for TEAS on 2022-07-25 at 10:00:00", - "url":"https://www.youtube.com/watch?v=HyM36Y0rSik" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29552.ics" - } - }, - { - "id":105878, - "sessionId":29535, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"oauth", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-25T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "oauth", - "regular", - "sec" - ], - "groupAcronym":"oauth", - "groupName":"Web Authorization Protocol", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-oauth-01" - }, - "orderInMeeting":1, - "short":"oauth", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/oauth", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/oauth", - "recordings":[ - { - "id":109667, - "name":"recording-114-oauth-1", - "title":"Video recording for OAUTH on 2022-07-25 at 10:00:00", - "url":"https://www.youtube.com/watch?v=KAB1-pph7Ck" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29535.ics" - } - }, - { - "id":105749, - "sessionId":29562, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"rats", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-25T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "rats", - "regular", - "sec" - ], - "groupAcronym":"rats", - "groupName":"Remote ATtestation ProcedureS", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-rats-04" - }, - "orderInMeeting":1, - "short":"rats", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/rats", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/rats", - "recordings":[ - { - "id":109678, - "name":"recording-114-rats-1", - "title":"Video recording for RATS on 2022-07-25 at 10:00:00", - "url":"https://www.youtube.com/watch?v=Fgy20yeT4Eo" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29562.ics" - } - }, - { - "id":105750, - "sessionId":29730, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":5400, - "name":"Break", - "startDateTime":"2022-07-25T12:00:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "break", - "secretariat", - "secretariat-sessg", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":2, - "short":"Break", - "sessionToken":"sessg", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29730.ics" - } - }, - { - "id":106064, - "sessionId":29769, - "room":"Salon 2", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"iesg", - "duration":3600, - "name":"INT AD Office Hours", - "startDateTime":"2022-07-25T12:15:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iesg", - "iesg-sessb", - "internet-ad-office-hours", - "officehours" - ], - "groupAcronym":"iesg", - "groupName":"Internet Engineering Steering Group", - "groupParent":{ - "acronym":"ietf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":3, - "short":"Internet AD Office Hours", - "sessionToken":"sessb", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/iesg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/iesg", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29769.ics" - } - }, - { - "id":106078, - "sessionId":29783, - "room":"Liberty A", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"iesg", - "duration":3600, - "name":"SEC AD Office Hours", - "startDateTime":"2022-07-25T12:15:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iesg", - "iesg-sessd", - "officehours", - "security-ad-office-hours" - ], - "groupAcronym":"iesg", - "groupName":"Internet Engineering Steering Group", - "groupParent":{ - "acronym":"ietf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":4, - "short":"Security AD Office Hours", - "sessionToken":"sessd", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/iesg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/iesg", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29783.ics" - } - }, - { - "id":105862, - "sessionId":29554, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"sedate", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-25T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "regular", - "sedate" - ], - "groupAcronym":"sedate", - "groupName":"Serialising Extended Data About Times and Events", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-sedate-01" - }, - "orderInMeeting":1, - "short":"sedate", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/sedate", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/sedate", - "recordings":[ - { - "id":109682, - "name":"recording-114-sedate-1", - "title":"Video recording for SEDATE on 2022-07-25 at 13:30:00", - "url":"https://www.youtube.com/watch?v=2RuCoZpmPUM" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29554.ics" - } - }, - { - "id":105752, - "sessionId":29669, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"6lo", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-25T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "6lo", - "int", - "regular" - ], - "groupAcronym":"6lo", - "groupName":"IPv6 over Networks of Resource-constrained Nodes", - "groupParent":{ - "acronym":"int" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-6lo-01" - }, - "orderInMeeting":1, - "short":"6lo", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/6lo", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/6lo", - "recordings":[ - { - "id":109668, - "name":"recording-114-6lo-1", - "title":"Video recording for 6LO on 2022-07-25 at 13:30:00", - "url":"https://www.youtube.com/watch?v=bTULdS6iI0E" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29669.ics" - } - }, - { - "id":105753, - "sessionId":29585, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"drip", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-25T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "drip", - "int", - "regular" - ], - "groupAcronym":"drip", - "groupName":"Drone Remote ID Protocol", - "groupParent":{ - "acronym":"int" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-drip-01" - }, - "orderInMeeting":1, - "short":"drip", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/drip", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/drip", - "recordings":[ - { - "id":109669, - "name":"recording-114-drip-1", - "title":"Video recording for DRIP on 2022-07-25 at 13:30:00", - "url":"https://www.youtube.com/watch?v=QhcJMKR-rHY" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29585.ics" - } - }, - { - "id":105754, - "sessionId":29673, - "room":"Liberty D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"pearg", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-25T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "irtf", - "pearg", - "regular" - ], - "groupAcronym":"pearg", - "groupName":"Privacy Enhancements and Assessments Research Group", - "groupParent":{ - "acronym":"irtf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-pearg-00" - }, - "orderInMeeting":1, - "short":"pearg", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/pearg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/pearg", - "recordings":[ - { - "id":109681, - "name":"recording-114-pearg-1", - "title":"Video recording for PEARG on 2022-07-25 at 13:30:00", - "url":"https://www.youtube.com/watch?v=DiUkm9CcArA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29673.ics" - } - }, - { - "id":105755, - "sessionId":29713, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"rswg", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-25T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "rswg" - ], - "groupAcronym":"rswg", - "groupName":"RFC Series Working Group", - "groupParent":{ - "acronym":"rfceditor" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-rswg-00" - }, - "orderInMeeting":1, - "short":"RSWG", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/rswg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/rswg", - "recordings":[ - { - "id":109705, - "name":"recording-114-rswg-1", - "title":"Video recording for RSWG on 2022-07-25 at 13:30:00", - "url":"https://www.youtube.com/watch?v=VsIXGDMQGOI" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29713.ics" - } - }, - { - "id":105756, - "sessionId":29661, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"rtgarea", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-25T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "rtg", - "rtgarea" - ], - "groupAcronym":"rtgarea", - "groupName":"Routing Area Open Meeting", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-rtgarea-01" - }, - "orderInMeeting":1, - "short":"rtgarea", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/rtgarea", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/rtgarea", - "recordings":[ - { - "id":109683, - "name":"recording-114-rtgarea-1", - "title":"Video recording for RTGAREA on 2022-07-25 at 13:30:00", - "url":"https://www.youtube.com/watch?v=OGVrRQHaN3Y" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29661.ics" - } - }, - { - "id":105757, - "sessionId":29719, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"jwp", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-25T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":true, - "filterKeywords":[ - "bof", - "jwp", - "regular", - "sec" - ], - "groupAcronym":"jwp", - "groupName":"JSON Web Proofs", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-jwp-01" - }, - "orderInMeeting":1, - "short":"jwp", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/jwp", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/jwp", - "recordings":[ - { - "id":109684, - "name":"recording-114-jwp-1", - "title":"Video recording for JWP on 2022-07-25 at 13:30:00", - "url":"https://www.youtube.com/watch?v=cWS7ud6Br2Q" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29719.ics" - } - }, - { - "id":105758, - "sessionId":29641, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"tsvarea", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-25T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "tsv", - "tsvarea" - ], - "groupAcronym":"tsvarea", - "groupName":"Transport Area Open Meeting", - "groupParent":{ - "acronym":"tsv" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-tsvarea-00" - }, - "orderInMeeting":1, - "short":"tsvarea", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/tsvarea", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/tsvarea", - "recordings":[ - { - "id":109670, - "name":"recording-114-tsvarea-1", - "title":"Video recording for TSVAREA on 2022-07-25 at 13:30:00", - "url":"https://www.youtube.com/watch?v=TSpK8C0DqDc" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29641.ics" - } - }, - { - "id":105759, - "sessionId":29738, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":1800, - "name":"Beverage and Snack Break", - "startDateTime":"2022-07-25T14:30:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "beverage-and-snack-break", - "secretariat", - "secretariat-sesso", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":3, - "short":"Beverage and Snack Break", - "sessionToken":"sesso", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29738.ics" - } - }, - { - "id":105760, - "sessionId":29601, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"dmm", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-25T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "dmm", - "int", - "regular" - ], - "groupAcronym":"dmm", - "groupName":"Distributed Mobility Management", - "groupParent":{ - "acronym":"int" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-dmm-02" - }, - "orderInMeeting":1, - "short":"dmm", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/dmm", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/dmm", - "recordings":[ - { - "id":109674, - "name":"recording-114-dmm-1", - "title":"Video recording for DMM on 2022-07-25 at 15:00:00", - "url":"https://www.youtube.com/watch?v=pJeCObBzwPk" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29601.ics" - } - }, - { - "id":105761, - "sessionId":29688, - "room":"Liberty D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"irtfopen", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-25T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "irtf", - "irtfopen", - "regular" - ], - "groupAcronym":"irtfopen", - "groupName":"IRTF Open Meeting", - "groupParent":{ - "acronym":"irtf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-irtfopen-01" - }, - "orderInMeeting":1, - "short":"irtfopen", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/irtfopen", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/irtfopen", - "recordings":[ - { - "id":109709, - "name":"recording-114-irtfopen-1", - "title":"Video recording for IRTFOPEN on 2022-07-25 at 15:00:00", - "url":"https://www.youtube.com/watch?v=VRiQsqiRhHM" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29688.ics" - } - }, - { - "id":105762, - "sessionId":29597, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"anima", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-25T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "anima", - "ops", - "regular" - ], - "groupAcronym":"anima", - "groupName":"Autonomic Networking Integrated Model and Approach", - "groupParent":{ - "acronym":"ops" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-anima-00" - }, - "orderInMeeting":1, - "short":"anima", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/anima", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/anima", - "recordings":[ - { - "id":109707, - "name":"recording-114-anima-1", - "title":"Video recording for ANIMA on 2022-07-25 at 15:00:00", - "url":"https://www.youtube.com/watch?v=UIsxhY73QrA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29597.ics" - } - }, - { - "id":105763, - "sessionId":29527, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"bess", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-25T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "bess", - "regular", - "rtg" - ], - "groupAcronym":"bess", - "groupName":"BGP Enabled ServiceS", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-bess-01" - }, - "orderInMeeting":1, - "short":"bess", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/bess", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/bess", - "recordings":[ - { - "id":109706, - "name":"recording-114-bess-1", - "title":"Video recording for BESS on 2022-07-25 at 15:00:00", - "url":"https://www.youtube.com/watch?v=V2r68JhrQag" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29527.ics" - } - }, - { - "id":105764, - "sessionId":29662, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"savnet", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-25T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "rtg", - "savnet" - ], - "groupAcronym":"savnet", - "groupName":"Source Address Validation in Intra-domain and Inter-domain Networks", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-savnet-00" - }, - "orderInMeeting":1, - "short":"savnet", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/savnet", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/savnet", - "recordings":[ - { - "id":109676, - "name":"recording-114-savnet-1", - "title":"Video recording for SAVNET on 2022-07-25 at 15:00:00", - "url":"https://www.youtube.com/watch?v=399OSM6L6wE" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29662.ics" - } - }, - { - "id":105765, - "sessionId":29568, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"ipsecme", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-25T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "ipsecme", - "regular", - "sec" - ], - "groupAcronym":"ipsecme", - "groupName":"IP Security Maintenance and Extensions", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-ipsecme-02" - }, - "orderInMeeting":1, - "short":"ipsecme", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/ipsecme", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/ipsecme", - "recordings":[ - { - "id":109671, - "name":"recording-114-ipsecme-1", - "title":"Video recording for IPSECME on 2022-07-25 at 15:00:00", - "url":"https://www.youtube.com/watch?v=vWrNIr0yyqI" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29568.ics" - } - }, - { - "id":105766, - "sessionId":29542, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"tls", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-25T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "sec", - "tls" - ], - "groupAcronym":"tls", - "groupName":"Transport Layer Security", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-tls-03" - }, - "orderInMeeting":1, - "short":"tls", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/tls", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/tls", - "recordings":[ - { - "id":109710, - "name":"recording-114-tls-1", - "title":"Video recording for TLS on 2022-07-25 at 15:00:00", - "url":"https://www.youtube.com/watch?v=AlCwHCvhyuo" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29542.ics" - } - }, - { - "id":106057, - "sessionId":29577, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"tsvwg", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-25T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "tsv", - "tsvwg" - ], - "groupAcronym":"tsvwg", - "groupName":"Transport Area Working Group", - "groupParent":{ - "acronym":"tsv" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-tsvwg-03" - }, - "orderInMeeting":1, - "short":"tsvwg", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/tsvwg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/tsvwg", - "recordings":[ - { - "id":109708, - "name":"recording-114-tsvwg-1", - "title":"Video recording for TSVWG on 2022-07-25 at 15:00:00", - "url":"https://www.youtube.com/watch?v=n7P3Ky_czp0" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29577.ics" - } - }, - { - "id":105768, - "sessionId":29753, - "room":"Liberty A", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"hackathon", - "duration":3600, - "name":"Hackdemo Happy Hour", - "startDateTime":"2022-07-25T17:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "hackathon", - "hackathon-sesse", - "hackdemo-happy-hour", - "social" - ], - "groupAcronym":"hackathon", - "groupName":"Hackathon", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-hackathon-sesse-00" - }, - "orderInMeeting":5, - "short":"Hackdemo Happy Hour", - "sessionToken":"sesse", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/hackathon", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/hackathon", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29753.ics" - } - }, - { - "id":105769, - "sessionId":29739, - "room":"Horizons Ballroom", - "location":{ - - }, - "acronym":"secretariat", - "duration":5400, - "name":"Newcomers' Dinner (Open to newcomers. Note that pre-registration is required and a $25USD fee will be charged.)", - "startDateTime":"2022-07-25T19:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "newcomers-dinner-open-to-newcomers-note-that-pre-registration-is-required-and-a-25usd-fee-will-be-charged", - "secretariat", - "secretariat-sessp", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":4, - "short":"Newcomers' Dinner (Open to newcomers. Note that pre-registration is required and a $25USD fee will be charged.)", - "sessionToken":"sessp", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29739.ics" - } - }, - { - "id":105770, - "sessionId":29748, - "room":"Liberty Ballroom Foyer & Independence Foyer", - "location":{ - - }, - "acronym":"secretariat", - "duration":5400, - "name":"Continental Breakfast", - "startDateTime":"2022-07-26T08:30:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "continental-breakfast", - "secretariat", - "secretariat-sessr", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":4, - "short":"Continental Breakfast", - "sessionToken":"sessr", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29748.ics" - } - }, - { - "id":106059, - "sessionId":29599, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"tdd", - "duration":4500, - "name":"Technology Deep Dive", - "startDateTime":"2022-07-26T08:30:00", - "status":"canceled", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "presentation", - "tdd" - ], - "groupAcronym":"tdd", - "groupName":"Technology Deep Dive", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"https://meetings.conf.meetecho.com/ietf114/?group=tdd", - "flags":{ - "agenda":false, - "showAgenda":true - }, - "agenda":{ - "url":null - }, - "orderInMeeting":1, - "short":"tdd", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/tdd", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/tdd", - "recordings":[ - - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29599.ics" - } - }, - { - "id":106068, - "sessionId":29772, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"rpc", - "duration":30600, - "name":"RPC Office Hours", - "startDateTime":"2022-07-26T08:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "officehours", - "rpc", - "rpc-office-hours", - "rpc-sessc" - ], - "groupAcronym":"rpc", - "groupName":"RFC Production Center", - "groupParent":{ - "acronym":"rfceditor" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":2, - "short":"RPC Office Hours", - "sessionToken":"sessc", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/rpc", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/rpc", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29772.ics" - } - }, - { - "id":105771, - "sessionId":29724, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":28800, - "name":"IETF Registration", - "startDateTime":"2022-07-26T08:30:00", - "status":"sched", - "type":"reg", - "isBoF":false, - "filterKeywords":[ - "admin", - "ietf-registration", - "secretariat", - "secretariat-sessc" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":3, - "short":"IETF Registration", - "sessionToken":"sessc", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29724.ics" - } - }, - { - "id":106083, - "sessionId":29789, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":30600, - "name":"IANA Office Hours", - "startDateTime":"2022-07-26T09:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iana-office-hours", - "officehours", - "secretariat", - "secretariat-sessbg" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":6, - "short":"IANA Office Hours", - "sessionToken":"sessbg", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29789.ics" - } - }, - { - "id":105772, - "sessionId":29755, - "room":"Gather", - "location":{ - - }, - "acronym":"secretariat", - "duration":1800, - "name":"ISE Office Hours", - "startDateTime":"2022-07-26T09:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "ise-office-hours", - "officehours", - "secretariat", - "secretariat-sessx" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":5, - "short":"ISE Office Hours", - "sessionToken":"sessx", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29755.ics" - } - }, - { - "id":106085, - "sessionId":29792, - "room":"Gather", - "location":{ - - }, - "acronym":"secretariat", - "duration":27000, - "name":"IANA Office Hours - Virtual", - "startDateTime":"2022-07-26T10:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iana-office-hours-online", - "officehours", - "secretariat", - "secretariat-sessbj" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":7, - "short":"IANA Office Hours Online", - "sessionToken":"sessbj", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29792.ics" - } - }, - { - "id":105773, - "sessionId":29531, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"webtrans", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-26T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "regular", - "webtrans" - ], - "groupAcronym":"webtrans", - "groupName":"WebTransport", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-webtrans-03" - }, - "orderInMeeting":1, - "short":"webtrans", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/webtrans", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/webtrans", - "recordings":[ - { - "id":109713, - "name":"recording-114-webtrans-1", - "title":"Video recording for WEBTRANS on 2022-07-26 at 10:00:00", - "url":"https://www.youtube.com/watch?v=uh65xHVYCEE" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29531.ics" - } - }, - { - "id":105774, - "sessionId":29689, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"anrw", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-26T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "anrw", - "anrw-sessa", - "irtf", - "regular" - ], - "groupAcronym":"anrw", - "groupName":"ACM/IRTF Applied Networking Research Workshop", - "groupParent":{ - "acronym":"irtf" - }, - "note":"Keynote and Research Papers", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-anrw-03" - }, - "orderInMeeting":1, - "short":"anrw", - "sessionToken":"sessa", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/anrw", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/anrw", - "recordings":[ - { - "id":109741, - "name":"recording-114-anrw-1", - "title":"Video recording for ANRW on 2022-07-26 at 10:00:00", - "url":"https://www.youtube.com/watch?v=pJUbDZ78Lus" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29689.ics" - } - }, - { - "id":105775, - "sessionId":29573, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"v6ops", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-26T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "ops", - "regular", - "v6ops" - ], - "groupAcronym":"v6ops", - "groupName":"IPv6 Operations", - "groupParent":{ - "acronym":"ops" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-v6ops-01" - }, - "orderInMeeting":1, - "short":"v6ops", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/v6ops", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/v6ops", - "recordings":[ - { - "id":109717, - "name":"recording-114-v6ops-1", - "title":"Video recording for V6OPS on 2022-07-26 at 10:00:00", - "url":"https://www.youtube.com/watch?v=iUwcoNpioIA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29573.ics" - } - }, - { - "id":105877, - "sessionId":29555, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"pals", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-26T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "pals", - "regular", - "rtg" - ], - "groupAcronym":"pals", - "groupName":"Pseudowire And LDP-enabled Services", - "groupParent":{ - "acronym":"rtg" - }, - "note":"Joint PALS/MPLS/DETNET", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-pals-02" - }, - "orderInMeeting":1, - "short":"pals", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/pals", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/pals", - "recordings":[ - { - "id":109715, - "name":"recording-114-pals-1", - "title":"Video recording for PALS on 2022-07-26 at 10:00:00", - "url":"https://www.youtube.com/watch?v=klSclu8-Bt0" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29555.ics" - } - }, - { - "id":105777, - "sessionId":29550, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"pim", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-26T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "pim", - "regular", - "rtg" - ], - "groupAcronym":"pim", - "groupName":"Protocols for IP Multicast", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-pim-04" - }, - "orderInMeeting":1, - "short":"pim", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/pim", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/pim", - "recordings":[ - { - "id":109712, - "name":"recording-114-pim-1", - "title":"Video recording for PIM on 2022-07-26 at 10:00:00", - "url":"https://www.youtube.com/watch?v=LzHqPYBdauY" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29550.ics" - } - }, - { - "id":105779, - "sessionId":29626, - "room":"Liberty D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secdispatch", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-26T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "sec", - "secdispatch" - ], - "groupAcronym":"secdispatch", - "groupName":"Security Dispatch", - "groupParent":{ - "acronym":"sec" - }, - "note":"Shared SAAG / SECDISPATCH", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-secdispatch-04" - }, - "orderInMeeting":1, - "short":"secdispatch", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secdispatch", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secdispatch", - "recordings":[ - { - "id":109711, - "name":"recording-114-secdispatch-1", - "title":"Video recording for SECDISPATCH on 2022-07-26 at 10:00:00", - "url":"https://www.youtube.com/watch?v=TUI87z3k_gQ" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29626.ics" - } - }, - { - "id":105780, - "sessionId":29560, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"alto", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-26T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "alto", - "regular", - "tsv" - ], - "groupAcronym":"alto", - "groupName":"Application-Layer Traffic Optimization", - "groupParent":{ - "acronym":"tsv" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-alto-01" - }, - "orderInMeeting":1, - "short":"alto", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/alto", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/alto", - "recordings":[ - { - "id":109714, - "name":"recording-114-alto-1", - "title":"Video recording for ALTO on 2022-07-26 at 10:00:00", - "url":"https://www.youtube.com/watch?v=2Kcm24Tm4Yg" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29560.ics" - } - }, - { - "id":105781, - "sessionId":29657, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"dtn", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-26T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "dtn", - "regular", - "tsv" - ], - "groupAcronym":"dtn", - "groupName":"Delay/Disruption Tolerant Networking", - "groupParent":{ - "acronym":"tsv" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-dtn-01" - }, - "orderInMeeting":1, - "short":"dtn", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/dtn", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/dtn", - "recordings":[ - { - "id":109716, - "name":"recording-114-dtn-1", - "title":"Video recording for DTN on 2022-07-26 at 10:00:00", - "url":"https://www.youtube.com/watch?v=VF2vB5QTx9c" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29657.ics" - } - }, - { - "id":105782, - "sessionId":29731, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":5400, - "name":"Break", - "startDateTime":"2022-07-26T12:00:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "break", - "secretariat", - "secretariat-sessh", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":5, - "short":"Break", - "sessionToken":"sessh", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29731.ics" - } - }, - { - "id":106080, - "sessionId":29785, - "room":"Gather", - "location":{ - - }, - "acronym":"emodir", - "duration":1800, - "name":"Virtual Newcomers' Coffee Break", - "startDateTime":"2022-07-26T12:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "emodir", - "emodir-sessf", - "social", - "virtual-newcomers-coffee-break" - ], - "groupAcronym":"emodir", - "groupName":"Education, Mentoring and Outreach Directorate", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":4, - "short":"Virtual Newcomers Coffee Break", - "sessionToken":"sessf", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/emodir", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/emodir", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29785.ics" - } - }, - { - "id":106055, - "sessionId":29762, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"ietf", - "duration":2700, - "name":"Host Speaker Series", - "startDateTime":"2022-07-26T12:20:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "host-speaker-series", - "ietf", - "ietf-sessc", - "presentation" - ], - "groupAcronym":"ietf", - "groupName":"IETF", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-ietf-sessc-00" - }, - "orderInMeeting":2, - "short":"Host Speaker Series", - "sessionToken":"sessc", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/ietf", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/ietf", - "recordings":[ - { - "id":109737, - "name":"recording-114-ietf-1", - "title":"Video recording for IETF on 2022-07-26 at 12:20:00", - "url":"https://www.youtube.com/watch?v=RoMv5r14Oqc" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29762.ics" - } - }, - { - "id":105783, - "sessionId":29604, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"emailcore", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-26T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "emailcore", - "regular" - ], - "groupAcronym":"emailcore", - "groupName":"Revision of core Email specifications", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-emailcore-01" - }, - "orderInMeeting":1, - "short":"emailcore", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/emailcore", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/emailcore", - "recordings":[ - { - "id":109730, - "name":"recording-114-emailcore-1", - "title":"Video recording for EMAILCORE on 2022-07-26 at 13:30:00", - "url":"https://www.youtube.com/watch?v=Amf2WegmkgA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29604.ics" - } - }, - { - "id":105784, - "sessionId":29668, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"iabopen", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-26T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "iab", - "iabopen", - "regular" - ], - "groupAcronym":"iabopen", - "groupName":"IAB Open Meeting", - "groupParent":{ - "acronym":"iab" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-iabopen-00" - }, - "orderInMeeting":1, - "short":"iabopen", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/iabopen", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/iabopen", - "recordings":[ - { - "id":109728, - "name":"recording-114-iabopen-1", - "title":"Video recording for IABOPEN on 2022-07-26 at 13:30:00", - "url":"https://www.youtube.com/watch?v=a7MKfow7DNQ" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29668.ics" - } - }, - { - "id":105786, - "sessionId":29647, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"opsec", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-26T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "ops", - "opsec", - "regular" - ], - "groupAcronym":"opsec", - "groupName":"Operational Security Capabilities for IP Network Infrastructure", - "groupParent":{ - "acronym":"ops" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-opsec-02" - }, - "orderInMeeting":1, - "short":"opsec", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/opsec", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/opsec", - "recordings":[ - { - "id":109723, - "name":"recording-114-opsec-1", - "title":"Video recording for OPSEC on 2022-07-26 at 13:30:00", - "url":"https://www.youtube.com/watch?v=OCi9_fZ_DCM" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29647.ics" - } - }, - { - "id":105855, - "sessionId":29565, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"mpls", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-26T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "mpls", - "regular", - "rtg" - ], - "groupAcronym":"mpls", - "groupName":"Multiprotocol Label Switching", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-mpls-02" - }, - "orderInMeeting":1, - "short":"mpls", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/mpls", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/mpls", - "recordings":[ - { - "id":109727, - "name":"recording-114-mpls-1", - "title":"Video recording for MPLS on 2022-07-26 at 13:30:00", - "url":"https://www.youtube.com/watch?v=1eq_5xvacl0" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29565.ics" - } - }, - { - "id":105856, - "sessionId":29671, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"roll", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-26T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "roll", - "rtg" - ], - "groupAcronym":"roll", - "groupName":"Routing Over Low power and Lossy networks", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-roll-00" - }, - "orderInMeeting":1, - "short":"roll", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/roll", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/roll", - "recordings":[ - { - "id":109729, - "name":"recording-114-roll-1", - "title":"Video recording for ROLL on 2022-07-26 at 13:30:00", - "url":"https://www.youtube.com/watch?v=ChhlXBPgbr4" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29671.ics" - } - }, - { - "id":105788, - "sessionId":29649, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"cose", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-26T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "cose", - "regular", - "sec" - ], - "groupAcronym":"cose", - "groupName":"CBOR Object Signing and Encryption", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-cose-02" - }, - "orderInMeeting":1, - "short":"cose", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/cose", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/cose", - "recordings":[ - { - "id":109724, - "name":"recording-114-cose-1", - "title":"Video recording for COSE on 2022-07-26 at 13:30:00", - "url":"https://www.youtube.com/watch?v=d0zOUQ26qt0" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29649.ics" - } - }, - { - "id":105789, - "sessionId":29615, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"i2nsf", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-26T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "i2nsf", - "regular", - "sec" - ], - "groupAcronym":"i2nsf", - "groupName":"Interface to Network Security Functions", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-i2nsf-01" - }, - "orderInMeeting":1, - "short":"i2nsf", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/i2nsf", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/i2nsf", - "recordings":[ - { - "id":109726, - "name":"recording-114-i2nsf-1", - "title":"Video recording for I2NSF on 2022-07-26 at 13:30:00", - "url":"https://www.youtube.com/watch?v=uirAclRgfJQ" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29615.ics" - } - }, - { - "id":105790, - "sessionId":29672, - "room":"Liberty D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"ohai", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-26T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "ohai", - "regular", - "sec" - ], - "groupAcronym":"ohai", - "groupName":"Oblivious HTTP Application Intermediation", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-ohai-01" - }, - "orderInMeeting":1, - "short":"ohai", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/ohai", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/ohai", - "recordings":[ - { - "id":109725, - "name":"recording-114-ohai-1", - "title":"Video recording for OHAI on 2022-07-26 at 13:30:00", - "url":"https://www.youtube.com/watch?v=1CRDVGyTfCg" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29672.ics" - } - }, - { - "id":105791, - "sessionId":29737, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":1800, - "name":"Beverage and Snack Break", - "startDateTime":"2022-07-26T14:30:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "beverage-and-snack-break", - "secretariat", - "secretariat-sessn", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":6, - "short":"Beverage and Snack Break", - "sessionToken":"sessn", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29737.ics" - } - }, - { - "id":105792, - "sessionId":29650, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"core", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-26T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "core", - "regular" - ], - "groupAcronym":"core", - "groupName":"Constrained RESTful Environments", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-core-00" - }, - "orderInMeeting":1, - "short":"core", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/core", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/core", - "recordings":[ - { - "id":109763, - "name":"recording-114-core-1", - "title":"Video recording for CORE on 2022-07-26 at 15:00:00", - "url":"https://www.youtube.com/watch?v=rr1LXhbrs7Y" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29650.ics" - } - }, - { - "id":105793, - "sessionId":29526, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"stir", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-26T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "regular", - "stir" - ], - "groupAcronym":"stir", - "groupName":"Secure Telephone Identity Revisited", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-stir-00" - }, - "orderInMeeting":1, - "short":"stir", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/stir", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/stir", - "recordings":[ - { - "id":109739, - "name":"recording-114-stir-1", - "title":"Video recording for STIR on 2022-07-26 at 15:00:00", - "url":"https://www.youtube.com/watch?v=q_HefRdDVe8" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29526.ics" - } - }, - { - "id":105794, - "sessionId":29566, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"add", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-26T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "add", - "int", - "regular" - ], - "groupAcronym":"add", - "groupName":"Adaptive DNS Discovery", - "groupParent":{ - "acronym":"int" - }, - "note":"Split session with DPRIVE", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-add-00" - }, - "orderInMeeting":1, - "short":"add", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/add", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/add", - "recordings":[ - { - "id":109740, - "name":"recording-114-add-1", - "title":"Video recording for ADD on 2022-07-26 at 15:00:00", - "url":"https://www.youtube.com/watch?v=OeuIbnPyx9g" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29566.ics" - } - }, - { - "id":105795, - "sessionId":29690, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"anrw", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-26T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "anrw", - "anrw-sessb", - "irtf", - "regular" - ], - "groupAcronym":"anrw", - "groupName":"ACM/IRTF Applied Networking Research Workshop", - "groupParent":{ - "acronym":"irtf" - }, - "note":"Protocol Specification Techniques", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-anrw-03" - }, - "orderInMeeting":2, - "short":"anrw", - "sessionToken":"sessb", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/anrw", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/anrw", - "recordings":[ - { - "id":109762, - "name":"recording-114-anrw-2", - "title":"Video recording for ANRW on 2022-07-26 at 15:00:00", - "url":"https://www.youtube.com/watch?v=tCsiB87s-f4" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29690.ics" - } - }, - { - "id":105796, - "sessionId":29556, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"bmwg", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-26T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "bmwg", - "ops", - "regular" - ], - "groupAcronym":"bmwg", - "groupName":"Benchmarking Methodology", - "groupParent":{ - "acronym":"ops" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-bmwg-03" - }, - "orderInMeeting":1, - "short":"bmwg", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/bmwg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/bmwg", - "recordings":[ - { - "id":109770, - "name":"recording-114-bmwg-1", - "title":"Video recording for BMWG on 2022-07-26 at 15:00:00", - "url":"https://www.youtube.com/watch?v=hgWHsCmJrP8" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29556.ics" - } - }, - { - "id":105797, - "sessionId":29716, - "room":"Liberty D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"msr6", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-26T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":true, - "filterKeywords":[ - "bof", - "msr6", - "regular", - "rtg" - ], - "groupAcronym":"msr6", - "groupName":"Multicast Source Routing over IPv6", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-msr6-06" - }, - "orderInMeeting":1, - "short":"msr6", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/msr6", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/msr6", - "recordings":[ - { - "id":109771, - "name":"recording-114-msr6-1", - "title":"Video recording for MSR6 on 2022-07-26 at 15:00:00", - "url":"https://www.youtube.com/watch?v=9tIlS7Rukhk" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29716.ics" - } - }, - { - "id":105798, - "sessionId":29717, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"satp", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-26T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":true, - "filterKeywords":[ - "bof", - "regular", - "satp", - "sec" - ], - "groupAcronym":"satp", - "groupName":"Secure Asset Transfer Protocol", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-satp-02" - }, - "orderInMeeting":1, - "short":"satp", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/satp", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/satp", - "recordings":[ - { - "id":109772, - "name":"recording-114-satp-1", - "title":"Video recording for SATP on 2022-07-26 at 15:00:00", - "url":"https://www.youtube.com/watch?v=lgPvjhUsERo" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29717.ics" - } - }, - { - "id":105799, - "sessionId":29644, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"nfsv4", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-26T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "nfsv4", - "regular", - "tsv" - ], - "groupAcronym":"nfsv4", - "groupName":"Network File System Version 4", - "groupParent":{ - "acronym":"tsv" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-nfsv4-00" - }, - "orderInMeeting":1, - "short":"nfsv4", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/nfsv4", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/nfsv4", - "recordings":[ - { - "id":109773, - "name":"recording-114-nfsv4-1", - "title":"Video recording for NFSV4 on 2022-07-26 at 15:00:00", - "url":"https://www.youtube.com/watch?v=lN8Ta8iWLQA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29644.ics" - } - }, - { - "id":106062, - "sessionId":29767, - "room":"Salon 2", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"ietf", - "duration":3600, - "name":"IETF Chair Office Hours", - "startDateTime":"2022-07-26T17:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "ietf", - "ietf-chair-office-hours", - "ietf-sessd", - "officehours" - ], - "groupAcronym":"ietf", - "groupName":"IETF", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":3, - "short":"IETF Chair Office Hours", - "sessionToken":"sessd", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/ietf", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/ietf", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29767.ics" - } - }, - { - "id":106090, - "sessionId":29794, - "room":"Independence D", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"emodir", - "duration":3600, - "name":"EMODIR Meeting", - "startDateTime":"2022-07-26T17:15:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "emodir", - "emodir-meeting", - "emodir-sessg", - "open_meeting" - ], - "groupAcronym":"emodir", - "groupName":"Education, Mentoring and Outreach Directorate", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"https://meetings.conf.meetecho.com/ietf114/?group=emodir", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-emodir-sessg-00" - }, - "orderInMeeting":1, - "short":"EMODIR Meeting", - "sessionToken":"sessg", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/emodir", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/emodir", - "recordings":[ - { - "id":109775, - "name":"recording-114-emodir-3", - "title":"Video recording for EMODIR on 2022-07-26 at 17:15:00", - "url":"https://www.youtube.com/watch?v=TOL28ydmadA" - } - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29794.ics" - } - }, - { - "id":105800, - "sessionId":29752, - "room":"Barnes Foundation", - "location":{ - - }, - "acronym":"secretariat", - "duration":14400, - "name":"IETF 114 Social Event at the Barnes Foundation - Hosted by Comcast-NBCUniversal", - "startDateTime":"2022-07-26T18:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "ietf-114-social-event-at-the-barnes-foundation-hosted-by-comcast-nbcuniversal", - "secretariat", - "secretariat-sessv", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":8, - "short":"IETF 114 Social Event at the Barnes Foundation - Hosted by Comcast-NBCUniversal", - "sessionToken":"sessv", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29752.ics" - } - }, - { - "id":105801, - "sessionId":29749, - "room":"Liberty Ballroom Foyer & Independence Foyer", - "location":{ - - }, - "acronym":"secretariat", - "duration":5400, - "name":"Continental Breakfast", - "startDateTime":"2022-07-27T08:30:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "continental-breakfast", - "secretariat", - "secretariat-sesss", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":7, - "short":"Continental Breakfast", - "sessionToken":"sesss", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29749.ics" - } - }, - { - "id":106089, - "sessionId":29631, - "room":"Horizons Ballroom", - "location":{ - - }, - "acronym":"artart", - "duration":5400, - "name":"ART ART & i18ndir breakfast", - "startDateTime":"2022-07-27T08:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "art", - "art-art-i18ndir-breakfast", - "artart", - "social" - ], - "groupAcronym":"artart", - "groupName":"ART Area Review Team", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":1, - "short":"ART ART & i18ndir breakfast", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/artart", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/artart", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29631.ics" - } - }, - { - "id":106065, - "sessionId":29770, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"rpc", - "duration":28800, - "name":"RPC Office Hours", - "startDateTime":"2022-07-27T08:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "officehours", - "rpc", - "rpc-office-hours", - "rpc-sessa" - ], - "groupAcronym":"rpc", - "groupName":"RFC Production Center", - "groupParent":{ - "acronym":"rfceditor" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":3, - "short":"RPC Office Hours", - "sessionToken":"sessa", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/rpc", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/rpc", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29770.ics" - } - }, - { - "id":105802, - "sessionId":29725, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":32400, - "name":"IETF Registration", - "startDateTime":"2022-07-27T08:30:00", - "status":"sched", - "type":"reg", - "isBoF":false, - "filterKeywords":[ - "admin", - "ietf-registration", - "secretariat", - "secretariat-sessd" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":4, - "short":"IETF Registration", - "sessionToken":"sessd", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29725.ics" - } - }, - { - "id":106084, - "sessionId":29788, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":30600, - "name":"IANA Office Hours", - "startDateTime":"2022-07-27T09:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iana-office-hours", - "officehours", - "secretariat", - "secretariat-sessbf" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":10, - "short":"IANA Office Hours", - "sessionToken":"sessbf", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29788.ics" - } - }, - { - "id":105803, - "sessionId":29756, - "room":"Gather", - "location":{ - - }, - "acronym":"secretariat", - "duration":1800, - "name":"ISE Office Hours", - "startDateTime":"2022-07-27T09:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "ise-office-hours", - "officehours", - "secretariat", - "secretariat-sessy" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":9, - "short":"ISE Office Hours", - "sessionToken":"sessy", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29756.ics" - } - }, - { - "id":106086, - "sessionId":29793, - "room":"Gather", - "location":{ - - }, - "acronym":"secretariat", - "duration":27000, - "name":"IANA Office Hours - Virtual", - "startDateTime":"2022-07-27T10:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iana-office-hours-online", - "officehours", - "secretariat", - "secretariat-sessbk" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":11, - "short":"IANA Office Hours Online", - "sessionToken":"sessbk", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29793.ics" - } - }, - { - "id":105804, - "sessionId":29714, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"moq", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-27T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":true, - "filterKeywords":[ - "art", - "bof", - "moq", - "regular" - ], - "groupAcronym":"moq", - "groupName":"Media Over QUIC", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-moq-00" - }, - "orderInMeeting":1, - "short":"moq", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/moq", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/moq", - "recordings":[ - { - "id":109821, - "name":"recording-114-moq-1", - "title":"Video recording for MOQ on 2022-07-27 at 10:00:00", - "url":"https://www.youtube.com/watch?v=-ZsbbUjvzTY" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29714.ics" - } - }, - { - "id":105805, - "sessionId":29665, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"ntp", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-27T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "int", - "ntp", - "regular" - ], - "groupAcronym":"ntp", - "groupName":"Network Time Protocols", - "groupParent":{ - "acronym":"int" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-ntp-00" - }, - "orderInMeeting":1, - "short":"ntp", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/ntp", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/ntp", - "recordings":[ - { - "id":109820, - "name":"recording-114-ntp-1", - "title":"Video recording for NTP on 2022-07-27 at 10:00:00", - "url":"https://www.youtube.com/watch?v=NIR6NPUBNgw" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29665.ics" - } - }, - { - "id":105806, - "sessionId":29638, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"gaia", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-27T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "gaia", - "irtf", - "regular" - ], - "groupAcronym":"gaia", - "groupName":"Global Access to the Internet for All", - "groupParent":{ - "acronym":"irtf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-gaia-02" - }, - "orderInMeeting":1, - "short":"gaia", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/gaia", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/gaia", - "recordings":[ - { - "id":109879, - "name":"recording-114-gaia-1", - "title":"Video recording for GAIA on 2022-07-27 at 10:00:00", - "url":"https://www.youtube.com/watch?v=bHBrFOqLWBI" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29638.ics" - } - }, - { - "id":105807, - "sessionId":29606, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"nmrg", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-27T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "irtf", - "nmrg", - "regular" - ], - "groupAcronym":"nmrg", - "groupName":"Network Management", - "groupParent":{ - "acronym":"irtf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-nmrg-00" - }, - "orderInMeeting":1, - "short":"nmrg", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/nmrg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/nmrg", - "recordings":[ - { - "id":109882, - "name":"recording-114-nmrg-1", - "title":"Video recording for NMRG on 2022-07-27 at 10:00:00", - "url":"https://www.youtube.com/watch?v=kbpAuzRAj9o" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29606.ics" - } - }, - { - "id":105808, - "sessionId":29551, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"sidrops", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-27T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "ops", - "regular", - "sidrops" - ], - "groupAcronym":"sidrops", - "groupName":"SIDR Operations", - "groupParent":{ - "acronym":"ops" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-sidrops-01" - }, - "orderInMeeting":1, - "short":"sidrops", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/sidrops", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/sidrops", - "recordings":[ - { - "id":109880, - "name":"recording-114-sidrops-1", - "title":"Video recording for SIDROPS on 2022-07-27 at 10:00:00", - "url":"https://www.youtube.com/watch?v=FVYH7O0jN4Q" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29551.ics" - } - }, - { - "id":105809, - "sessionId":29653, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"raw", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-27T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "raw", - "regular", - "rtg" - ], - "groupAcronym":"raw", - "groupName":"Reliable and Available Wireless", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-raw-02" - }, - "orderInMeeting":1, - "short":"raw", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/raw", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/raw", - "recordings":[ - { - "id":109925, - "name":"recording-114-raw-1", - "title":"Video recording for RAW on 2022-07-27 at 10:00:00", - "url":"https://www.youtube.com/watch?v=gG7fVTd95yM" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29653.ics" - } - }, - { - "id":105810, - "sessionId":29622, - "room":"Liberty D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"spring", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-27T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "rtg", - "spring" - ], - "groupAcronym":"spring", - "groupName":"Source Packet Routing in Networking", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-spring-01" - }, - "orderInMeeting":1, - "short":"spring", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/spring", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/spring", - "recordings":[ - { - "id":109926, - "name":"recording-114-spring-1", - "title":"Video recording for SPRING on 2022-07-27 at 10:00:00", - "url":"https://www.youtube.com/watch?v=4sUdl-KtlUQ" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29622.ics" - } - }, - { - "id":105811, - "sessionId":29532, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"lamps", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-27T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "lamps", - "regular", - "sec" - ], - "groupAcronym":"lamps", - "groupName":"Limited Additional Mechanisms for PKIX and SMIME", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-lamps-02" - }, - "orderInMeeting":1, - "short":"lamps", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/lamps", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/lamps", - "recordings":[ - { - "id":109881, - "name":"recording-114-lamps-1", - "title":"Video recording for LAMPS on 2022-07-27 at 10:00:00", - "url":"https://www.youtube.com/watch?v=T7vj35Qua8g" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29532.ics" - } - }, - { - "id":105812, - "sessionId":29732, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":5400, - "name":"Break", - "startDateTime":"2022-07-27T12:00:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "break", - "secretariat", - "secretariat-sessi", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":8, - "short":"Break", - "sessionToken":"sessi", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29732.ics" - } - }, - { - "id":105888, - "sessionId":29743, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"emodir", - "duration":3600, - "name":"WG Chairs Forum (For WG Chairs Only)", - "startDateTime":"2022-07-27T12:15:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "emodir", - "emodir-sessd", - "open_meeting", - "wg-chairs-forum" - ], - "groupAcronym":"emodir", - "groupName":"Education, Mentoring and Outreach Directorate", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"https://meetings.conf.meetecho.com/ietf114/?group=emodir&short=&item=5", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-emodir-sessd-00" - }, - "orderInMeeting":5, - "short":"WG Chairs Forum", - "sessionToken":"sessd", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/emodir", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/emodir", - "recordings":[ - { - "id":109934, - "name":"recording-114-emodir-4", - "title":"Video recording for EMODIR on 2022-07-27 at 12:15:00", - "url":"https://www.youtube.com/watch?v=c7F5mkuCNrk" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29743.ics" - } - }, - { - "id":105814, - "sessionId":29587, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"calext", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-27T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "calext", - "regular" - ], - "groupAcronym":"calext", - "groupName":"Calendaring Extensions", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-calext-00" - }, - "orderInMeeting":1, - "short":"calext", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/calext", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/calext", - "recordings":[ - { - "id":109920, - "name":"recording-114-calext-1", - "title":"Video recording for CALEXT on 2022-07-27 at 13:30:00", - "url":"https://www.youtube.com/watch?v=veBEmw-pJrA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29587.ics" - } - }, - { - "id":105815, - "sessionId":29610, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"uta", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-27T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "regular", - "uta" - ], - "groupAcronym":"uta", - "groupName":"Using TLS in Applications", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-uta-02" - }, - "orderInMeeting":1, - "short":"uta", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/uta", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/uta", - "recordings":[ - { - "id":109927, - "name":"recording-114-uta-1", - "title":"Video recording for UTA on 2022-07-27 at 13:30:00", - "url":"https://www.youtube.com/watch?v=UylbMNuVZP4" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29610.ics" - } - }, - { - "id":105816, - "sessionId":29543, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"wish", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-27T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "regular", - "wish" - ], - "groupAcronym":"wish", - "groupName":"WebRTC Ingest Signaling over HTTPS", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-wish-00" - }, - "orderInMeeting":1, - "short":"wish", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/wish", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/wish", - "recordings":[ - { - "id":109918, - "name":"recording-114-wish-1", - "title":"Video recording for WISH on 2022-07-27 at 13:30:00", - "url":"https://www.youtube.com/watch?v=9REk4gUtz54" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29543.ics" - } - }, - { - "id":105817, - "sessionId":29654, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"gendispatch", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-27T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "gen", - "gendispatch", - "regular" - ], - "groupAcronym":"gendispatch", - "groupName":"General Area Dispatch", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-gendispatch-00" - }, - "orderInMeeting":1, - "short":"gendispatch", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/gendispatch", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/gendispatch", - "recordings":[ - { - "id":109924, - "name":"recording-114-gendispatch-1", - "title":"Video recording for GENDISPATCH on 2022-07-27 at 13:30:00", - "url":"https://www.youtube.com/watch?v=mGsoCkym478" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29654.ics" - } - }, - { - "id":105819, - "sessionId":29561, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"lpwan", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-27T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "int", - "lpwan", - "regular" - ], - "groupAcronym":"lpwan", - "groupName":"IPv6 over Low Power Wide-Area Networks", - "groupParent":{ - "acronym":"int" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-lpwan-07" - }, - "orderInMeeting":1, - "short":"lpwan", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/lpwan", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/lpwan", - "recordings":[ - { - "id":109922, - "name":"recording-114-lpwan-1", - "title":"Video recording for LPWAN on 2022-07-27 at 13:30:00", - "url":"https://www.youtube.com/watch?v=UTwGyKOTdlk" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29561.ics" - } - }, - { - "id":105820, - "sessionId":29608, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"lisp", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-27T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "lisp", - "regular", - "rtg" - ], - "groupAcronym":"lisp", - "groupName":"Locator/ID Separation Protocol", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-lisp-02" - }, - "orderInMeeting":1, - "short":"lisp", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/lisp", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/lisp", - "recordings":[ - { - "id":109923, - "name":"recording-114-lisp-1", - "title":"Video recording for LISP on 2022-07-27 at 13:30:00", - "url":"https://www.youtube.com/watch?v=LzYcho9QffA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29608.ics" - } - }, - { - "id":105889, - "sessionId":29576, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"pce", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-27T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "pce", - "pce-sessb", - "regular", - "rtg" - ], - "groupAcronym":"pce", - "groupName":"Path Computation Element", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-pce-01" - }, - "orderInMeeting":1, - "short":"pce", - "sessionToken":"sessb", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/pce", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/pce", - "recordings":[ - { - "id":109921, - "name":"recording-114-pce-1", - "title":"Video recording for PCE on 2022-07-27 at 13:30:00", - "url":"https://www.youtube.com/watch?v=8CJNyGNFjC4" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29576.ics" - } - }, - { - "id":105867, - "sessionId":29620, - "room":"Liberty D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"lake", - "duration":3600, - "name":"Session II", - "startDateTime":"2022-07-27T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "lake", - "regular", - "sec" - ], - "groupAcronym":"lake", - "groupName":"Lightweight Authenticated Key Exchange", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-lake-02" - }, - "orderInMeeting":1, - "short":"lake", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/lake", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/lake", - "recordings":[ - { - "id":109919, - "name":"recording-114-lake-1", - "title":"Video recording for LAKE on 2022-07-27 at 13:30:00", - "url":"https://www.youtube.com/watch?v=Oq7O5-ODfqc" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29620.ics" - } - }, - { - "id":106060, - "sessionId":29766, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":1800, - "name":"Break", - "startDateTime":"2022-07-27T14:30:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "break", - "secretariat", - "secretariat-sessbc", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":9, - "short":"Break", - "sessionToken":"sessbc", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29766.ics" - } - }, - { - "id":105821, - "sessionId":29720, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"tigress", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-27T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "regular", - "tigress" - ], - "groupAcronym":"tigress", - "groupName":"Transfer dIGital cREdentialS Securely", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-tigress-00" - }, - "orderInMeeting":1, - "short":"tigress", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/tigress", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/tigress", - "recordings":[ - { - "id":109915, - "name":"recording-114-tigress-1", - "title":"Video recording for TIGRESS on 2022-07-27 at 15:00:00", - "url":"https://www.youtube.com/watch?v=XwZtma6eDUA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29720.ics" - } - }, - { - "id":105822, - "sessionId":29607, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"6man", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-27T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "6man", - "int", - "regular" - ], - "groupAcronym":"6man", - "groupName":"IPv6 Maintenance", - "groupParent":{ - "acronym":"int" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-6man-04" - }, - "orderInMeeting":1, - "short":"6man", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/6man", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/6man", - "recordings":[ - { - "id":109912, - "name":"recording-114-6man-1", - "title":"Video recording for 6MAN on 2022-07-27 at 15:00:00", - "url":"https://www.youtube.com/watch?v=eKEizC8xhhM" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29607.ics" - } - }, - { - "id":105823, - "sessionId":29557, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"netmod", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-27T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "netmod", - "ops", - "regular" - ], - "groupAcronym":"netmod", - "groupName":"Network Modeling", - "groupParent":{ - "acronym":"ops" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-netmod-02" - }, - "orderInMeeting":1, - "short":"netmod", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/netmod", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/netmod", - "recordings":[ - { - "id":109914, - "name":"recording-114-netmod-1", - "title":"Video recording for NETMOD on 2022-07-27 at 15:00:00", - "url":"https://www.youtube.com/watch?v=qIIQwK3qNgc" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29557.ics" - } - }, - { - "id":105824, - "sessionId":29642, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"idr", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-27T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "idr", - "regular", - "rtg" - ], - "groupAcronym":"idr", - "groupName":"Inter-Domain Routing", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-idr-03" - }, - "orderInMeeting":1, - "short":"idr", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/idr", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/idr", - "recordings":[ - { - "id":109913, - "name":"recording-114-idr-1", - "title":"Video recording for IDR on 2022-07-27 at 15:00:00", - "url":"https://www.youtube.com/watch?v=SO031yLY0G0" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29642.ics" - } - }, - { - "id":105825, - "sessionId":29640, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"emu", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-27T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "emu", - "regular", - "sec" - ], - "groupAcronym":"emu", - "groupName":"EAP Method Update", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-emu-01" - }, - "orderInMeeting":1, - "short":"emu", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/emu", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/emu", - "recordings":[ - { - "id":109917, - "name":"recording-114-emu-1", - "title":"Video recording for EMU on 2022-07-27 at 15:00:00", - "url":"https://www.youtube.com/watch?v=tH-eJNIrJmU" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29640.ics" - } - }, - { - "id":105826, - "sessionId":29627, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"masque", - "duration":7200, - "name":"Session III", - "startDateTime":"2022-07-27T15:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "masque", - "regular", - "tsv" - ], - "groupAcronym":"masque", - "groupName":"Multiplexed Application Substrate over QUIC Encryption", - "groupParent":{ - "acronym":"tsv" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-masque-00" - }, - "orderInMeeting":1, - "short":"masque", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/masque", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/masque", - "recordings":[ - { - "id":109916, - "name":"recording-114-masque-1", - "title":"Video recording for MASQUE on 2022-07-27 at 15:00:00", - "url":"https://www.youtube.com/watch?v=0dZpdabM93g" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29627.ics" - } - }, - { - "id":105827, - "sessionId":29736, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":1800, - "name":"Beverage and Snack Break", - "startDateTime":"2022-07-27T17:00:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "beverage-and-snack-break", - "secretariat", - "secretariat-sessm", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":10, - "short":"Beverage and Snack Break", - "sessionToken":"sessm", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29736.ics" - } - }, - { - "id":105828, - "sessionId":29728, - "room":"Liberty C/D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"ietf", - "duration":7200, - "name":"IETF Plenary", - "startDateTime":"2022-07-27T17:30:00", - "status":"sched", - "type":"plenary", - "isBoF":false, - "filterKeywords":[ - "ietf", - "ietf-plenary", - "ietf-sessa", - "plenary" - ], - "groupAcronym":"ietf", - "groupName":"IETF", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-ietf-sessa-01" - }, - "orderInMeeting":1, - "short":"IETF Plenary", - "sessionToken":"sessa", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/plenary", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/plenary", - "recordings":[ - { - "id":109932, - "name":"recording-114-ietf-3", - "title":"Video recording for IETF on 2022-07-27 at 17:30:00", - "url":"https://www.youtube.com/watch?v=6SLR7lftORY" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29728.ics" - } - }, - { - "id":105829, - "sessionId":29750, - "room":"Liberty Ballroom Foyer & Independence Foyer", - "location":{ - - }, - "acronym":"secretariat", - "duration":5400, - "name":"Continental Breakfast", - "startDateTime":"2022-07-28T08:30:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "continental-breakfast", - "secretariat", - "secretariat-sesst", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":11, - "short":"Continental Breakfast", - "sessionToken":"sesst", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29750.ics" - } - }, - { - "id":106054, - "sessionId":29742, - "room":"Philadelphia South", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"emodir", - "duration":3600, - "name":"Newcomers' Feedback Session", - "startDateTime":"2022-07-28T08:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "emodir", - "emodir-sessc", - "newcomers-feedback-session", - "open_meeting" - ], - "groupAcronym":"emodir", - "groupName":"Education, Mentoring and Outreach Directorate", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":6, - "short":"Newcomers' Feedback Session", - "sessionToken":"sessc", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/emodir", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/emodir", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29742.ics" - } - }, - { - "id":106066, - "sessionId":29771, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"rpc", - "duration":30600, - "name":"RPC Office Hours", - "startDateTime":"2022-07-28T08:30:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "officehours", - "rpc", - "rpc-office-hours", - "rpc-sessb" - ], - "groupAcronym":"rpc", - "groupName":"RFC Production Center", - "groupParent":{ - "acronym":"rfceditor" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":4, - "short":"RPC Office Hours", - "sessionToken":"sessb", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/rpc", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/rpc", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29771.ics" - } - }, - { - "id":105831, - "sessionId":29726, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":34200, - "name":"IETF Registration", - "startDateTime":"2022-07-28T08:30:00", - "status":"sched", - "type":"reg", - "isBoF":false, - "filterKeywords":[ - "admin", - "ietf-registration", - "secretariat", - "secretariat-sesse" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":5, - "short":"IETF Registration", - "sessionToken":"sesse", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29726.ics" - } - }, - { - "id":106087, - "sessionId":29787, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":30600, - "name":"IANA Office Hours", - "startDateTime":"2022-07-28T09:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iana-office-hours", - "officehours", - "secretariat", - "secretariat-sessbe" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":13, - "short":"IANA Office Hours", - "sessionToken":"sessbe", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29787.ics" - } - }, - { - "id":105832, - "sessionId":29757, - "room":"Gather", - "location":{ - - }, - "acronym":"secretariat", - "duration":1800, - "name":"ISE Office Hours", - "startDateTime":"2022-07-28T09:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "ise-office-hours", - "officehours", - "secretariat", - "secretariat-sessz" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":12, - "short":"ISE Office Hours", - "sessionToken":"sessz", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29757.ics" - } - }, - { - "id":106076, - "sessionId":29781, - "room":"Independence D", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"edm", - "duration":3000, - "name":"Session 0", - "startDateTime":"2022-07-28T09:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "edm", - "iab", - "regular" - ], - "groupAcronym":"edm", - "groupName":"Evolvability, Deployability, & Maintainability", - "groupParent":{ - "acronym":"iab" - }, - "note":"", - "remoteInstructions":"https://meetings.conf.meetecho.com/ietf114/?group=edm", - "flags":{ - "agenda":false, - "showAgenda":true - }, - "agenda":{ - "url":null - }, - "orderInMeeting":1, - "short":"edm", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/edm", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/edm", - "recordings":[ - { - "id":109988, - "name":"recording-114-edm-1", - "title":"Video recording for EDM on 2022-07-28 at 09:00:00", - "url":"https://www.youtube.com/watch?v=LTRVjihEzHk" - } - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29781.ics" - } - }, - { - "id":106088, - "sessionId":29791, - "room":"Gather", - "location":{ - - }, - "acronym":"secretariat", - "duration":27000, - "name":"IANA Office Hours - Virtual", - "startDateTime":"2022-07-28T10:00:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "iana-office-hours-online", - "officehours", - "secretariat", - "secretariat-sessbi" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":14, - "short":"IANA Office Hours Online", - "sessionToken":"sessbi", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29791.ics" - } - }, - { - "id":105833, - "sessionId":29592, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"jmap", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-28T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "jmap", - "regular" - ], - "groupAcronym":"jmap", - "groupName":"JSON Mail Access Protocol", - "groupParent":{ - "acronym":"art" - }, - "note":"Joint with EXTRA", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-jmap-01" - }, - "orderInMeeting":1, - "short":"jmap", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/jmap", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/jmap", - "recordings":[ - { - "id":110030, - "name":"recording-114-jmap-1", - "title":"Video recording for JMAP on 2022-07-28 at 10:00:00", - "url":"https://www.youtube.com/watch?v=FIdC4DiS_1c" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29592.ics" - } - }, - { - "id":105834, - "sessionId":29591, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"intarea", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-28T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "int", - "intarea", - "regular" - ], - "groupAcronym":"intarea", - "groupName":"Internet Area Working Group", - "groupParent":{ - "acronym":"int" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-intarea-01" - }, - "orderInMeeting":1, - "short":"intarea", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/intarea", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/intarea", - "recordings":[ - { - "id":109986, - "name":"recording-114-intarea-1", - "title":"Video recording for INTAREA on 2022-07-28 at 10:00:00", - "url":"https://www.youtube.com/watch?v=cOBdx7tYxzc" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29591.ics" - } - }, - { - "id":105835, - "sessionId":29537, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"icnrg", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-28T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "icnrg", - "irtf", - "regular" - ], - "groupAcronym":"icnrg", - "groupName":"Information-Centric Networking", - "groupParent":{ - "acronym":"irtf" - }, - "note":"Shared ICNRG / COINRG", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-icnrg-03" - }, - "orderInMeeting":1, - "short":"icnrg", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/icnrg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/icnrg", - "recordings":[ - { - "id":110063, - "name":"recording-114-icnrg-1", - "title":"Video recording for ICNRG on 2022-07-28 at 10:00:00", - "url":"https://www.youtube.com/watch?v=wMoSi7iVEzU" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29537.ics" - } - }, - { - "id":105836, - "sessionId":29582, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"rtgwg", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-28T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "rtg", - "rtgwg" - ], - "groupAcronym":"rtgwg", - "groupName":"Routing Area Working Group", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-rtgwg-02" - }, - "orderInMeeting":1, - "short":"rtgwg", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/rtgwg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/rtgwg", - "recordings":[ - { - "id":110034, - "name":"recording-114-rtgwg-1", - "title":"Video recording for RTGWG on 2022-07-28 at 10:00:00", - "url":"https://www.youtube.com/watch?v=FfjdqP8eKW8" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29582.ics" - } - }, - { - "id":105837, - "sessionId":29547, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"gnap", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-28T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "gnap", - "regular", - "sec" - ], - "groupAcronym":"gnap", - "groupName":"Grant Negotiation and Authorization Protocol", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-gnap-00" - }, - "orderInMeeting":1, - "short":"gnap", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/gnap", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/gnap", - "recordings":[ - { - "id":109987, - "name":"recording-114-gnap-1", - "title":"Video recording for GNAP on 2022-07-28 at 10:00:00", - "url":"https://www.youtube.com/watch?v=ezMYbZ1MVXM" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29547.ics" - } - }, - { - "id":105838, - "sessionId":29645, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"ppm", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-28T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "ppm", - "regular", - "sec" - ], - "groupAcronym":"ppm", - "groupName":"Privacy Preserving Measurement", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-ppm-02" - }, - "orderInMeeting":1, - "short":"ppm", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/ppm", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/ppm", - "recordings":[ - { - "id":110031, - "name":"recording-114-ppm-1", - "title":"Video recording for PPM on 2022-07-28 at 10:00:00", - "url":"https://www.youtube.com/watch?v=UKA9oA9Ogdw" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29645.ics" - } - }, - { - "id":105839, - "sessionId":29570, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"teep", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-28T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "sec", - "teep" - ], - "groupAcronym":"teep", - "groupName":"Trusted Execution Environment Provisioning", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-teep-00" - }, - "orderInMeeting":1, - "short":"teep", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/teep", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/teep", - "recordings":[ - { - "id":110032, - "name":"recording-114-teep-1", - "title":"Video recording for TEEP on 2022-07-28 at 10:00:00", - "url":"https://www.youtube.com/watch?v=L3wbcPM6C-Q" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29570.ics" - } - }, - { - "id":105840, - "sessionId":29549, - "room":"Liberty D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"quic", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-28T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "quic", - "regular", - "tsv" - ], - "groupAcronym":"quic", - "groupName":"QUIC", - "groupParent":{ - "acronym":"tsv" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-quic-02" - }, - "orderInMeeting":1, - "short":"quic", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/quic", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/quic", - "recordings":[ - { - "id":110033, - "name":"recording-114-quic-1", - "title":"Video recording for QUIC on 2022-07-28 at 10:00:00", - "url":"https://www.youtube.com/watch?v=Lcfk7jate_s" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29549.ics" - } - }, - { - "id":105841, - "sessionId":29733, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":5400, - "name":"Break", - "startDateTime":"2022-07-28T12:00:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "break", - "secretariat", - "secretariat-sessj", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":12, - "short":"Break", - "sessionToken":"sessj", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29733.ics" - } - }, - { - "id":105842, - "sessionId":29761, - "room":"Philadelphia South", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"systers", - "duration":3600, - "name":"Systers Lunch", - "startDateTime":"2022-07-28T12:15:00", - "status":"sched", - "type":"other", - "isBoF":false, - "filterKeywords":[ - "social", - "systers", - "systers-lunch", - "systers-sessb" - ], - "groupAcronym":"systers", - "groupName":"Systers", - "groupParent":{ - "acronym":"gen" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":2, - "short":"Systers Lunch", - "sessionToken":"sessb", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/systers", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/systers", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29761.ics" - } - }, - { - "id":105843, - "sessionId":29530, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"avtcore", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-28T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "avtcore", - "regular" - ], - "groupAcronym":"avtcore", - "groupName":"Audio/Video Transport Core Maintenance", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-avtcore-05" - }, - "orderInMeeting":1, - "short":"avtcore", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/avtcore", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/avtcore", - "recordings":[ - { - "id":110043, - "name":"recording-114-avtcore-1", - "title":"Video recording for AVTCORE on 2022-07-28 at 13:30:00", - "url":"https://www.youtube.com/watch?v=ZhE1-8jRhNc" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29530.ics" - } - }, - { - "id":105844, - "sessionId":29538, - "room":"Liberty D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"httpbis", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-28T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "httpbis", - "regular" - ], - "groupAcronym":"httpbis", - "groupName":"HTTP", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-httpbis-03" - }, - "orderInMeeting":1, - "short":"httpbis", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/httpbis", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/httpbis", - "recordings":[ - { - "id":110040, - "name":"recording-114-httpbis-1", - "title":"Video recording for HTTPBIS on 2022-07-28 at 13:30:00", - "url":"https://www.youtube.com/watch?v=7l36GOHCE4s" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29538.ics" - } - }, - { - "id":105845, - "sessionId":29637, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"hrpc", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-28T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "hrpc", - "irtf", - "regular" - ], - "groupAcronym":"hrpc", - "groupName":"Human Rights Protocol Considerations", - "groupParent":{ - "acronym":"irtf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-hrpc-03" - }, - "orderInMeeting":1, - "short":"hrpc", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/hrpc", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/hrpc", - "recordings":[ - { - "id":110053, - "name":"recording-114-hrpc-1", - "title":"Video recording for HRPC on 2022-07-28 at 13:30:00", - "url":"https://www.youtube.com/watch?v=dwvUc80aZ8E" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29637.ics" - } - }, - { - "id":105872, - "sessionId":29617, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"panrg", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-28T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "irtf", - "panrg", - "regular" - ], - "groupAcronym":"panrg", - "groupName":"Path Aware Networking RG", - "groupParent":{ - "acronym":"irtf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-panrg-01" - }, - "orderInMeeting":1, - "short":"panrg", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/panrg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/panrg", - "recordings":[ - { - "id":110028, - "name":"recording-114-panrg-1", - "title":"Video recording for PANRG on 2022-07-28 at 13:30:00", - "url":"https://www.youtube.com/watch?v=uU9mTKhcnmw" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29617.ics" - } - }, - { - "id":105846, - "sessionId":29529, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"dnsop", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-28T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "dnsop", - "ops", - "regular" - ], - "groupAcronym":"dnsop", - "groupName":"Domain Name System Operations", - "groupParent":{ - "acronym":"ops" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-dnsop-04" - }, - "orderInMeeting":1, - "short":"dnsop", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/dnsop", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/dnsop", - "recordings":[ - { - "id":110044, - "name":"recording-114-dnsop-1", - "title":"Video recording for DNSOP on 2022-07-28 at 13:30:00", - "url":"https://www.youtube.com/watch?v=yuQh48xf87U" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29529.ics" - } - }, - { - "id":105847, - "sessionId":29545, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"mboned", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-28T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "mboned", - "ops", - "regular" - ], - "groupAcronym":"mboned", - "groupName":"MBONE Deployment", - "groupParent":{ - "acronym":"ops" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-mboned-01" - }, - "orderInMeeting":1, - "short":"mboned", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/mboned", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/mboned", - "recordings":[ - { - "id":110035, - "name":"recording-114-mboned-1", - "title":"Video recording for MBONED on 2022-07-28 at 13:30:00", - "url":"https://www.youtube.com/watch?v=ApUGFb9EDUc" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29545.ics" - } - }, - { - "id":105848, - "sessionId":29558, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"detnet", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-28T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "detnet", - "regular", - "rtg" - ], - "groupAcronym":"detnet", - "groupName":"Deterministic Networking", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-detnet-04" - }, - "orderInMeeting":1, - "short":"detnet", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/detnet", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/detnet", - "recordings":[ - { - "id":110041, - "name":"recording-114-detnet-1", - "title":"Video recording for DETNET on 2022-07-28 at 13:30:00", - "url":"https://www.youtube.com/watch?v=UZnJVwT4tbI" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29558.ics" - } - }, - { - "id":105849, - "sessionId":29715, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"scitt", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-28T13:30:00", - "status":"sched", - "type":"regular", - "isBoF":true, - "filterKeywords":[ - "bof", - "regular", - "scitt", - "sec" - ], - "groupAcronym":"scitt", - "groupName":"Supply Chain Integrity, Transparency, and Trust", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-scitt-01" - }, - "orderInMeeting":1, - "short":"scitt", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/scitt", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/scitt", - "recordings":[ - { - "id":110027, - "name":"recording-114-scitt-1", - "title":"Video recording for SCITT on 2022-07-28 at 13:30:00", - "url":"https://www.youtube.com/watch?v=6B8Bv0naAIA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29715.ics" - } - }, - { - "id":105851, - "sessionId":29735, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":1800, - "name":"Beverage and Snack Break", - "startDateTime":"2022-07-28T15:30:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "beverage-and-snack-break", - "secretariat", - "secretariat-sessl", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":13, - "short":"Beverage and Snack Break", - "sessionToken":"sessl", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29735.ics" - } - }, - { - "id":105751, - "sessionId":29632, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"dmarc", - "duration":3600, - "name":"Session III", - "startDateTime":"2022-07-28T16:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "dmarc", - "regular" - ], - "groupAcronym":"dmarc", - "groupName":"Domain-based Message Authentication, Reporting & Conformance", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-dmarc-00" - }, - "orderInMeeting":1, - "short":"dmarc", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/dmarc", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/dmarc", - "recordings":[ - { - "id":110049, - "name":"recording-114-dmarc-1", - "title":"Video recording for DMARC on 2022-07-28 at 16:00:00", - "url":"https://www.youtube.com/watch?v=b42JFaHxuZA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29632.ics" - } - }, - { - "id":105854, - "sessionId":29559, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"madinas", - "duration":3600, - "name":"Session III", - "startDateTime":"2022-07-28T16:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "int", - "madinas", - "regular" - ], - "groupAcronym":"madinas", - "groupName":"MAC Address Device Identification for Network and Application Services", - "groupParent":{ - "acronym":"int" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-madinas-02" - }, - "orderInMeeting":1, - "short":"madinas", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/madinas", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/madinas", - "recordings":[ - { - "id":110046, - "name":"recording-114-madinas-1", - "title":"Video recording for MADINAS on 2022-07-28 at 16:00:00", - "url":"https://www.youtube.com/watch?v=S7J09AlbMao" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29559.ics" - } - }, - { - "id":105785, - "sessionId":29721, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"dinrg", - "duration":3600, - "name":"Session III", - "startDateTime":"2022-07-28T16:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "dinrg", - "irtf", - "regular" - ], - "groupAcronym":"dinrg", - "groupName":"Decentralized Internet Infrastructure", - "groupParent":{ - "acronym":"irtf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-dinrg-03" - }, - "orderInMeeting":1, - "short":"dinrg", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/dinrg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/dinrg", - "recordings":[ - { - "id":110050, - "name":"recording-114-dinrg-1", - "title":"Video recording for DINRG on 2022-07-28 at 16:00:00", - "url":"https://www.youtube.com/watch?v=8jEcX2y6YXc" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29721.ics" - } - }, - { - "id":106056, - "sessionId":29763, - "room":"Liberty D", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"iccrg", - "duration":3600, - "name":"Session III", - "startDateTime":"2022-07-28T16:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "iccrg", - "irtf", - "regular" - ], - "groupAcronym":"iccrg", - "groupName":"Internet Congestion Control", - "groupParent":{ - "acronym":"irtf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-iccrg-00" - }, - "orderInMeeting":1, - "short":"iccrg", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/iccrg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/iccrg", - "recordings":[ - { - "id":110042, - "name":"recording-114-iccrg-1", - "title":"Video recording for ICCRG on 2022-07-28 at 16:00:00", - "url":"https://www.youtube.com/watch?v=gr3gsTCaqTE" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29763.ics" - } - }, - { - "id":105787, - "sessionId":29628, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"rift", - "duration":3600, - "name":"Session III", - "startDateTime":"2022-07-28T16:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "rift", - "rtg" - ], - "groupAcronym":"rift", - "groupName":"Routing In Fat Trees", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-rift-00" - }, - "orderInMeeting":1, - "short":"rift", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/rift", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/rift", - "recordings":[ - { - "id":110019, - "name":"recording-114-rift-1", - "title":"Video recording for RIFT on 2022-07-28 at 16:00:00", - "url":"https://www.youtube.com/watch?v=QECqH9QDSxw" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29628.ics" - } - }, - { - "id":105857, - "sessionId":29600, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"acme", - "duration":3600, - "name":"Session III", - "startDateTime":"2022-07-28T16:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "acme", - "regular", - "sec" - ], - "groupAcronym":"acme", - "groupName":"Automated Certificate Management Environment", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-acme-02" - }, - "orderInMeeting":1, - "short":"acme", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/acme", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/acme", - "recordings":[ - { - "id":110051, - "name":"recording-114-acme-1", - "title":"Video recording for ACME on 2022-07-28 at 16:00:00", - "url":"https://www.youtube.com/watch?v=-8S6Pewifwc" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29600.ics" - } - }, - { - "id":105858, - "sessionId":29646, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"privacypass", - "duration":3600, - "name":"Session III", - "startDateTime":"2022-07-28T16:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "privacypass", - "regular", - "sec" - ], - "groupAcronym":"privacypass", - "groupName":"Privacy Pass", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-privacypass-02" - }, - "orderInMeeting":1, - "short":"privacypass", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/privacypass", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/privacypass", - "recordings":[ - { - "id":110045, - "name":"recording-114-privacypass-1", - "title":"Video recording for PRIVACYPASS on 2022-07-28 at 16:00:00", - "url":"https://www.youtube.com/watch?v=Z37Vn9W21Rg" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29646.ics" - } - }, - { - "id":105859, - "sessionId":29533, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"suit", - "duration":3600, - "name":"Session III", - "startDateTime":"2022-07-28T16:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "sec", - "suit" - ], - "groupAcronym":"suit", - "groupName":"Software Updates for Internet of Things", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-suit-00" - }, - "orderInMeeting":1, - "short":"suit", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/suit", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/suit", - "recordings":[ - { - "id":110036, - "name":"recording-114-suit-1", - "title":"Video recording for SUIT on 2022-07-28 at 16:00:00", - "url":"https://www.youtube.com/watch?v=r1IbESe3WLA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29533.ics" - } - }, - { - "id":106061, - "sessionId":29765, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":1800, - "name":"Break", - "startDateTime":"2022-07-28T17:00:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "break", - "secretariat", - "secretariat-sessbb", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":14, - "short":"Break", - "sessionToken":"sessbb", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29765.ics" - } - }, - { - "id":105860, - "sessionId":29639, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"cbor", - "duration":3600, - "name":"Session IV", - "startDateTime":"2022-07-28T17:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "cbor", - "regular" - ], - "groupAcronym":"cbor", - "groupName":"Concise Binary Object Representation Maintenance and Extensions", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-cbor-03" - }, - "orderInMeeting":1, - "short":"cbor", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/cbor", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/cbor", - "recordings":[ - { - "id":110061, - "name":"recording-114-cbor-1", - "title":"Video recording for CBOR on 2022-07-28 at 17:30:00", - "url":"https://www.youtube.com/watch?v=ofRQx4KhIK0" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29639.ics" - } - }, - { - "id":105861, - "sessionId":29612, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"regext", - "duration":3600, - "name":"Session IV", - "startDateTime":"2022-07-28T17:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "regext", - "regular" - ], - "groupAcronym":"regext", - "groupName":"Registration Protocols Extensions", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-regext-01" - }, - "orderInMeeting":1, - "short":"regext", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/regext", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/regext", - "recordings":[ - { - "id":110062, - "name":"recording-114-regext-1", - "title":"Video recording for REGEXT on 2022-07-28 at 17:30:00", - "url":"https://www.youtube.com/watch?v=tZiFRpi04Ao" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29612.ics" - } - }, - { - "id":105863, - "sessionId":29656, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"dhc", - "duration":3600, - "name":"Session IV", - "startDateTime":"2022-07-28T17:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "dhc", - "int", - "regular" - ], - "groupAcronym":"dhc", - "groupName":"Dynamic Host Configuration", - "groupParent":{ - "acronym":"int" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-dhc-02" - }, - "orderInMeeting":1, - "short":"dhc", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/dhc", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/dhc", - "recordings":[ - { - "id":110064, - "name":"recording-114-dhc-1", - "title":"Video recording for DHC on 2022-07-28 at 17:30:00", - "url":"https://www.youtube.com/watch?v=GeEEcVt8sZw" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29656.ics" - } - }, - { - "id":105864, - "sessionId":29659, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"dnssd", - "duration":3600, - "name":"Session IV", - "startDateTime":"2022-07-28T17:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "dnssd", - "int", - "regular" - ], - "groupAcronym":"dnssd", - "groupName":"Extensions for Scalable DNS Service Discovery", - "groupParent":{ - "acronym":"int" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-dnssd-05" - }, - "orderInMeeting":1, - "short":"dnssd", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/dnssd", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/dnssd", - "recordings":[ - { - "id":110048, - "name":"recording-114-dnssd-1", - "title":"Video recording for DNSSD on 2022-07-28 at 17:30:00", - "url":"https://www.youtube.com/watch?v=Ot3AhRjStzY" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29659.ics" - } - }, - { - "id":105865, - "sessionId":29571, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"grow", - "duration":3600, - "name":"Session IV", - "startDateTime":"2022-07-28T17:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "grow", - "ops", - "regular" - ], - "groupAcronym":"grow", - "groupName":"Global Routing Operations", - "groupParent":{ - "acronym":"ops" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-grow-01" - }, - "orderInMeeting":1, - "short":"grow", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/grow", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/grow", - "recordings":[ - { - "id":110039, - "name":"recording-114-grow-1", - "title":"Video recording for GROW on 2022-07-28 at 17:30:00", - "url":"https://www.youtube.com/watch?v=aApiWc4CO6Y" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29571.ics" - } - }, - { - "id":105776, - "sessionId":29575, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"pce", - "duration":3600, - "name":"Session IV", - "startDateTime":"2022-07-28T17:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "pce", - "pce-sessa", - "regular", - "rtg" - ], - "groupAcronym":"pce", - "groupName":"Path Computation Element", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-pce-01" - }, - "orderInMeeting":2, - "short":"pce", - "sessionToken":"sessa", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/pce", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/pce", - "recordings":[ - { - "id":110065, - "name":"recording-114-pce-2", - "title":"Video recording for PCE on 2022-07-28 at 17:30:00", - "url":"https://www.youtube.com/watch?v=nU78N-uebIc" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29575.ics" - } - }, - { - "id":105866, - "sessionId":29635, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"dance", - "duration":3600, - "name":"Session IV", - "startDateTime":"2022-07-28T17:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "dance", - "regular", - "sec" - ], - "groupAcronym":"dance", - "groupName":"DANE Authentication for Network Clients Everywhere", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-dance-00" - }, - "orderInMeeting":1, - "short":"dance", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/dance", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/dance", - "recordings":[ - { - "id":110052, - "name":"recording-114-dance-1", - "title":"Video recording for DANCE on 2022-07-28 at 17:30:00", - "url":"https://www.youtube.com/watch?v=e6r-kIEYQ5U" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29635.ics" - } - }, - { - "id":105868, - "sessionId":29751, - "room":"Liberty Ballroom Foyer & Independence Foyer", - "location":{ - - }, - "acronym":"secretariat", - "duration":5400, - "name":"Continental Breakfast", - "startDateTime":"2022-07-29T08:30:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "continental-breakfast", - "secretariat", - "secretariat-sessu", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":15, - "short":"Continental Breakfast", - "sessionToken":"sessu", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29751.ics" - } - }, - { - "id":105869, - "sessionId":29727, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":16200, - "name":"IETF Registration", - "startDateTime":"2022-07-29T08:30:00", - "status":"sched", - "type":"reg", - "isBoF":false, - "filterKeywords":[ - "admin", - "ietf-registration", - "secretariat", - "secretariat-sessf" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":6, - "short":"IETF Registration", - "sessionToken":"sessf", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29727.ics" - } - }, - { - "id":105871, - "sessionId":29567, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"httpapi", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-29T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "httpapi", - "regular" - ], - "groupAcronym":"httpapi", - "groupName":"Building Blocks for HTTP APIs", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-httpapi-02" - }, - "orderInMeeting":1, - "short":"httpapi", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/httpapi", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/httpapi", - "recordings":[ - { - "id":110079, - "name":"recording-114-httpapi-1", - "title":"Video recording for HTTPAPI on 2022-07-29 at 10:00:00", - "url":"https://www.youtube.com/watch?v=ov14iZJxP_w" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29567.ics" - } - }, - { - "id":105873, - "sessionId":29590, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"mops", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-29T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "mops", - "ops", - "regular" - ], - "groupAcronym":"mops", - "groupName":"Media OPerationS", - "groupParent":{ - "acronym":"ops" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-mops-04" - }, - "orderInMeeting":1, - "short":"mops", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/mops", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/mops", - "recordings":[ - { - "id":110078, - "name":"recording-114-mops-1", - "title":"Video recording for MOPS on 2022-07-29 at 10:00:00", - "url":"https://www.youtube.com/watch?v=64MCGa242BM" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29590.ics" - } - }, - { - "id":105874, - "sessionId":29572, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"opsawg", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-29T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "ops", - "opsawg", - "regular" - ], - "groupAcronym":"opsawg", - "groupName":"Operations and Management Area Working Group", - "groupParent":{ - "acronym":"ops" - }, - "note":"Combined OpsAWG/OpsAREA", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-opsawg-01" - }, - "orderInMeeting":1, - "short":"opsawg", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/opsawg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/opsawg", - "recordings":[ - { - "id":110077, - "name":"recording-114-opsawg-1", - "title":"Video recording for OPSAWG on 2022-07-29 at 10:00:00", - "url":"https://www.youtube.com/watch?v=UuS2YRwc0WI" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29572.ics" - } - }, - { - "id":105885, - "sessionId":29540, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"lsr", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-29T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "lsr", - "regular", - "rtg" - ], - "groupAcronym":"lsr", - "groupName":"Link State Routing", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-lsr-03" - }, - "orderInMeeting":1, - "short":"lsr", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/lsr", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/lsr", - "recordings":[ - { - "id":110080, - "name":"recording-114-lsr-1", - "title":"Video recording for LSR on 2022-07-29 at 10:00:00", - "url":"https://www.youtube.com/watch?v=C8IW2aqXOyA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29540.ics" - } - }, - { - "id":105876, - "sessionId":29687, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"manet", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-29T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "manet", - "regular", - "rtg" - ], - "groupAcronym":"manet", - "groupName":"Mobile Ad-hoc Networks", - "groupParent":{ - "acronym":"rtg" - }, - "note":"Joint MANET/BABEL/ROLL", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-manet-02" - }, - "orderInMeeting":1, - "short":"manet", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/manet", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/manet", - "recordings":[ - { - "id":110091, - "name":"recording-114-manet-1", - "title":"Video recording for MANET on 2022-07-29 at 10:00:00", - "url":"https://www.youtube.com/watch?v=UQazU4yO5Ao" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29687.ics" - } - }, - { - "id":105748, - "sessionId":29618, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"openpgp", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-29T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "openpgp", - "regular", - "sec" - ], - "groupAcronym":"openpgp", - "groupName":"Open Specification for Pretty Good Privacy", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-openpgp-00" - }, - "orderInMeeting":1, - "short":"openpgp", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/openpgp", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/openpgp", - "recordings":[ - { - "id":110092, - "name":"recording-114-openpgp-1", - "title":"Video recording for OPENPGP on 2022-07-29 at 10:00:00", - "url":"https://www.youtube.com/watch?v=HJF5V3Glu9c" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29618.ics" - } - }, - { - "id":105850, - "sessionId":29666, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"tcpm", - "duration":7200, - "name":"Session I", - "startDateTime":"2022-07-29T10:00:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "regular", - "tcpm", - "tsv" - ], - "groupAcronym":"tcpm", - "groupName":"TCP Maintenance and Minor Extensions", - "groupParent":{ - "acronym":"tsv" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-tcpm-03" - }, - "orderInMeeting":1, - "short":"tcpm", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/tcpm", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/tcpm", - "recordings":[ - { - "id":110087, - "name":"recording-114-tcpm-1", - "title":"Video recording for TCPM on 2022-07-29 at 10:00:00", - "url":"https://www.youtube.com/watch?v=nhNtIXoDM50" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29666.ics" - } - }, - { - "id":105879, - "sessionId":29734, - "room":"Liberty Ballroom Foyer", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"secretariat", - "duration":1800, - "name":"Beverage and Snack Break", - "startDateTime":"2022-07-29T12:00:00", - "status":"sched", - "type":"break", - "isBoF":false, - "filterKeywords":[ - "beverage-and-snack-break", - "secretariat", - "secretariat-sessk", - "social" - ], - "groupAcronym":"secretariat", - "groupName":"Application Administrators", - "groupParent":{ - - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":false, - "showAgenda":false - }, - "agenda":{ - "url":null - }, - "orderInMeeting":16, - "short":"Beverage and Snack Break", - "sessionToken":"sessk", - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/secretariat", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/secretariat", - "recordings":[ - - ], - "videoStream":null, - "audioStream":null, - "webex":null, - "onsiteTool":null, - "calendar":"/meeting/114/session/29734.ics" - } - }, - { - "id":105880, - "sessionId":29593, - "room":"Freedom G", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"cdni", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-29T12:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "cdni", - "regular" - ], - "groupAcronym":"cdni", - "groupName":"Content Delivery Networks Interconnection", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-cdni-01" - }, - "orderInMeeting":1, - "short":"cdni", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/cdni", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/cdni", - "recordings":[ - { - "id":110090, - "name":"recording-114-cdni-1", - "title":"Video recording for CDNI on 2022-07-29 at 12:30:00", - "url":"https://www.youtube.com/watch?v=LS7PrjEsAgA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29593.ics" - } - }, - { - "id":105881, - "sessionId":29569, - "room":"Independence A/B", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"scim", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-29T12:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "art", - "regular", - "scim" - ], - "groupAcronym":"scim", - "groupName":"System for Cross-domain Identity Management", - "groupParent":{ - "acronym":"art" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-scim-02" - }, - "orderInMeeting":1, - "short":"scim", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/scim", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/scim", - "recordings":[ - { - "id":110093, - "name":"recording-114-scim-1", - "title":"Video recording for SCIM on 2022-07-29 at 12:30:00", - "url":"https://www.youtube.com/watch?v=WVn9iLLkfrE" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29569.ics" - } - }, - { - "id":105883, - "sessionId":29667, - "room":"Liberty C", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"maprg", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-29T12:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "irtf", - "maprg", - "regular" - ], - "groupAcronym":"maprg", - "groupName":"Measurement and Analysis for Protocols", - "groupParent":{ - "acronym":"irtf" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-maprg-06" - }, - "orderInMeeting":1, - "short":"maprg", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/maprg", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/maprg", - "recordings":[ - { - "id":110088, - "name":"recording-114-maprg-1", - "title":"Video recording for MAPRG on 2022-07-29 at 12:30:00", - "url":"https://www.youtube.com/watch?v=Yo5_HWHu_oA" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29667.ics" - } - }, - { - "id":105884, - "sessionId":29544, - "room":"Freedom E/F", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"iotops", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-29T12:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "iotops", - "ops", - "regular" - ], - "groupAcronym":"iotops", - "groupName":"IOT Operations", - "groupParent":{ - "acronym":"ops" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-iotops-02" - }, - "orderInMeeting":1, - "short":"iotops", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/iotops", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/iotops", - "recordings":[ - { - "id":110085, - "name":"recording-114-iotops-1", - "title":"Video recording for IOTOPS on 2022-07-29 at 12:30:00", - "url":"https://www.youtube.com/watch?v=YSmxis1puuE" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29544.ics" - } - }, - { - "id":105875, - "sessionId":29541, - "room":"Liberty B", - "location":{ - "short":"B", - "name":"Ballroom" - }, - "acronym":"ccamp", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-29T12:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "ccamp", - "regular", - "rtg" - ], - "groupAcronym":"ccamp", - "groupName":"Common Control and Measurement Plane", - "groupParent":{ - "acronym":"rtg" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-ccamp-02" - }, - "orderInMeeting":1, - "short":"ccamp", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/ccamp", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/ccamp", - "recordings":[ - { - "id":110089, - "name":"recording-114-ccamp-1", - "title":"Video recording for CCAMP on 2022-07-29 at 12:30:00", - "url":"https://www.youtube.com/watch?v=sUHF-Sf_rCE" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29541.ics" - } - }, - { - "id":105886, - "sessionId":29564, - "room":"Independence C", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"mls", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-29T12:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "mls", - "regular", - "sec" - ], - "groupAcronym":"mls", - "groupName":"Messaging Layer Security", - "groupParent":{ - "acronym":"sec" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-mls-02" - }, - "orderInMeeting":1, - "short":"mls", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/mls", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/mls", - "recordings":[ - { - "id":110086, - "name":"recording-114-mls-1", - "title":"Video recording for MLS on 2022-07-29 at 12:30:00", - "url":"https://www.youtube.com/watch?v=_eky6T6O1KY" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29564.ics" - } - }, - { - "id":105887, - "sessionId":29670, - "room":"Philadelphia North", - "location":{ - "short":"M", - "name":"Mezzanine" - }, - "acronym":"ippm", - "duration":7200, - "name":"Session II", - "startDateTime":"2022-07-29T12:30:00", - "status":"sched", - "type":"regular", - "isBoF":false, - "filterKeywords":[ - "ippm", - "regular", - "tsv" - ], - "groupAcronym":"ippm", - "groupName":"IP Performance Measurement", - "groupParent":{ - "acronym":"tsv" - }, - "note":"", - "remoteInstructions":"", - "flags":{ - "agenda":true, - "showAgenda":true - }, - "agenda":{ - "url":"https://datatracker.ietf.org/meeting/114/materials/agenda-114-ippm-02" - }, - "orderInMeeting":1, - "short":"ippm", - "sessionToken":null, - "links":{ - "chat":"https://zulip.ietf.org/#narrow/stream/ippm", - "chatArchive":"https://zulip.ietf.org/#narrow/stream/ippm", - "recordings":[ - { - "id":110094, - "name":"recording-114-ippm-1", - "title":"Video recording for IPPM on 2022-07-29 at 12:30:00", - "url":"https://www.youtube.com/watch?v=wRhzhBrH-KY" - } - ], - "videoStream":"https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "audioStream":"https://mp3.conf.meetecho.com/ietf114/{group.acronym}/{order_number}.m3u", - "webex":null, - "onsiteTool":"https://meetings.conf.meetecho.com/onsite{meeting.number}/?group={group.acronym}&short={short}&item={order_number}", - "calendar":"/meeting/114/session/29670.ics" - } - } - ], - "floors":[ - { - "id":90, - "image":"https://www.ietf.org/lib/dt/media/floor/floorplan-114-mezzanine_rLWTiOi.png", - "name":"Mezzanine", - "short":"M", - "width":2094, - "height":1650, - "rooms":[ - { - "id":849, - "name":"Freedom G", - "functionalName":"Breakout 2", - "slug":"freedom-g", - "left":805, - "right":1225, - "top":1245, - "bottom":1425 - }, - { - "id":848, - "name":"Independence D", - "functionalName":"IAB Office", - "slug":"independence-d", - "left":530, - "right":830, - "top":820, - "bottom":910 - }, - { - "id":847, - "name":"Salon 1", - "functionalName":"LLC Office", - "slug":"salon-1", - "left":915, - "right":1035, - "top":170, - "bottom":225 - }, - { - "id":846, - "name":"Salon 7", - "functionalName":"NomCom Office", - "slug":"salon-7", - "left":1390, - "right":1470, - "top":170, - "bottom":200 - }, - { - "id":845, - "name":"Salon 5/6", - "functionalName":"Secretariat Office", - "slug":"salon-5-6", - "left":1200, - "right":1320, - "top":170, - "bottom":350 - }, - { - "id":844, - "name":"Salon 2", - "functionalName":"IESG Office", - "slug":"salon-2", - "left":900, - "right":980, - "top":290, - "bottom":360 - }, - { - "id":843, - "name":"Salon 10", - "functionalName":"Terminal Room", - "slug":"salon-10", - "left":1750, - "right":1910, - "top":140, - "bottom":250 - }, - { - "id":842, - "name":"Salon 3/4", - "functionalName":"NOC", - "slug":"salon-3-4", - "left":1050, - "right":1180, - "top":170, - "bottom":350 - }, - { - "id":841, - "name":"Salon 9", - "functionalName":"Attendee Sign-Up (16)", - "slug":"salon-9", - "left":1580, - "right":1750, - "top":170, - "bottom":195 - }, - { - "id":828, - "name":"Freedom E/F", - "functionalName":"Breakout 5", - "slug":"freedom-e-f", - "left":500, - "right":1040, - "top":950, - "bottom":1200 - }, - { - "id":827, - "name":"Independence A/B", - "functionalName":"Breakout 4", - "slug":"independence-a-b", - "left":590, - "right":1060, - "top":550, - "bottom":780 - }, - { - "id":826, - "name":"Philadelphia North", - "functionalName":"Breakout 3", - "slug":"philadelphia-north", - "left":870, - "right":1180, - "top":430, - "bottom":510 - }, - { - "id":825, - "name":"Philadelphia South", - "functionalName":"Attendee Sign-Up (40)", - "slug":"philadelphia-south", - "left":660, - "right":850, - "top":430, - "bottom":510 - }, - { - "id":824, - "name":"Independence C", - "functionalName":"Breakout 1", - "slug":"independence-c", - "left":840, - "right":1050, - "top":820, - "bottom":910 - } - ] - }, - { - "id":91, - "image":"https://www.ietf.org/lib/dt/media/floor/floorplan-114-ballroom.png", - "name":"Ballroom", - "short":"B", - "width":2496, - "height":1142, - "rooms":[ - { - "id":835, - "name":"Liberty A", - "functionalName":"Hackathon", - "slug":"liberty-a", - "left":770, - "right":1440, - "top":160, - "bottom":290 - }, - { - "id":834, - "name":"Liberty C/D", - "functionalName":"Welcome Reception", - "slug":"liberty-c-d", - "left":630, - "right":1440, - "top":520, - "bottom":670 - }, - { - "id":833, - "name":"Liberty Ballroom Foyer", - "functionalName":"Registration", - "slug":"liberty-ballroom-foyer", - "left":1580, - "right":1790, - "top":260, - "bottom":400 - }, - { - "id":832, - "name":"Liberty C/D", - "functionalName":"Plenary", - "slug":"liberty-c-d", - "left":630, - "right":1440, - "top":520, - "bottom":670 - }, - { - "id":831, - "name":"Liberty D", - "functionalName":"Breakout 8", - "slug":"liberty-d", - "left":550, - "right":1440, - "top":730, - "bottom":930 - }, - { - "id":830, - "name":"Liberty C", - "functionalName":"Breakout 7", - "slug":"liberty-c", - "left":630, - "right":1440, - "top":520, - "bottom":670 - }, - { - "id":829, - "name":"Liberty B", - "functionalName":"Breakout 6", - "slug":"liberty-b", - "left":700, - "right":1440, - "top":340, - "bottom":470 - } - ] - } - ] -} diff --git a/dev/vite-plugins/serve-preview-assets.js b/dev/vite-plugins/serve-preview-assets.js index 95c6dc3de..3d7b13327 100644 --- a/dev/vite-plugins/serve-preview-assets.js +++ b/dev/vite-plugins/serve-preview-assets.js @@ -7,7 +7,7 @@ export default function servePreviewAssets () { name: 'serve-preview-assets', configurePreviewServer(server) { server.middlewares.use('/media/floor', (req, res, next) => { - send(req, url.parse(req.url).pathname, { root: path.join(process.cwd(), 'cypress/fixtures/floor-plan-images') }).pipe(res) + send(req, url.parse(req.url).pathname, { root: path.join(process.cwd(), 'playwright/data/floor-plan-images') }).pipe(res) }) } } diff --git a/package.json b/package.json index bee9732e8..5056c9579 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "eslint-config-standard": "17.0.0", "eslint-plugin-cypress": "2.12.1", "eslint-plugin-import": "2.26.0", + "eslint-plugin-n": "15.2.5", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "6.0.1", "eslint-plugin-vue": "9.4.0", diff --git a/playwright/.editorconfig b/playwright/.editorconfig new file mode 100644 index 000000000..bf1dfba38 --- /dev/null +++ b/playwright/.editorconfig @@ -0,0 +1,6 @@ +[*.js] +indent_size = 2 +indent_style = space +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/playwright/.eslintrc.js b/playwright/.eslintrc.js new file mode 100644 index 000000000..09c5cd33c --- /dev/null +++ b/playwright/.eslintrc.js @@ -0,0 +1,16 @@ +module.exports = { + "env": { + "browser": true, + "commonjs": true, + "es2021": true, + "node": true + }, + "extends": "standard", + "overrides": [ + ], + "parserOptions": { + "ecmaVersion": "latest" + }, + "rules": { + } +} diff --git a/playwright/.gitignore b/playwright/.gitignore new file mode 100644 index 000000000..75e854d8d --- /dev/null +++ b/playwright/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +/test-results/ +/playwright-report/ +/playwright/.cache/ diff --git a/playwright/README.md b/playwright/README.md new file mode 100644 index 000000000..78580f21e --- /dev/null +++ b/playwright/README.md @@ -0,0 +1,57 @@ +# Playwright +##### Frontend testing automation tool + +- [Playwright Website](https://playwright.dev/) +- [Playwright Docs](https://playwright.dev/docs/intro) +- [Playwright API Reference](https://playwright.dev/docs/api/class-test) +- [Online Trace Viewer](https://trace.playwright.dev/) + +## Install + +Make sure you run all commands from the `/playwright` directory, not the project root. + +``` +npm install +npx playwright install --with-deps +``` + +## Usage + +Running all tests headless: +``` +npm test +``` + +Running all tests serially in visual mode (headed): +``` +npm run test:visual +``` + +Running all tests in debug mode: +``` +npm run test:debug +``` + +## Advanced Usage + +> Refer to the [CLI Reference](https://playwright.dev/docs/test-cli#reference) for all possible options. + +Running a single test file: +``` +npx playwright test foo.spec.ts +``` + +Running test files that have `foo` or `bar` in the filename: +``` +npx playwright test foo bar +``` + +Running tests in a specific browser *(e.g. chromium)*: +``` +npx playwright test --project=chromium +``` + +Running tests in headed mode: +``` +npx playwright test --headed +``` diff --git a/cypress/fixtures/agenda-settings.json b/playwright/data/agenda-settings.json similarity index 100% rename from cypress/fixtures/agenda-settings.json rename to playwright/data/agenda-settings.json diff --git a/cypress/fixtures/floor-plan-images/meeting-floor-1.png b/playwright/data/floor-plan-images/meeting-floor-1.png similarity index 100% rename from cypress/fixtures/floor-plan-images/meeting-floor-1.png rename to playwright/data/floor-plan-images/meeting-floor-1.png diff --git a/cypress/fixtures/floor-plan-images/meeting-floor-2.png b/playwright/data/floor-plan-images/meeting-floor-2.png similarity index 100% rename from cypress/fixtures/floor-plan-images/meeting-floor-2.png rename to playwright/data/floor-plan-images/meeting-floor-2.png diff --git a/cypress/fixtures/floor-plan-images/meeting-floor-3.png b/playwright/data/floor-plan-images/meeting-floor-3.png similarity index 100% rename from cypress/fixtures/floor-plan-images/meeting-floor-3.png rename to playwright/data/floor-plan-images/meeting-floor-3.png diff --git a/cypress/fixtures/floor-plan-images/meeting-floor-4.jpg b/playwright/data/floor-plan-images/meeting-floor-4.jpg similarity index 100% rename from cypress/fixtures/floor-plan-images/meeting-floor-4.jpg rename to playwright/data/floor-plan-images/meeting-floor-4.jpg diff --git a/cypress/fixtures/floor-plan-images/meeting-floor-5.jpg b/playwright/data/floor-plan-images/meeting-floor-5.jpg similarity index 100% rename from cypress/fixtures/floor-plan-images/meeting-floor-5.jpg rename to playwright/data/floor-plan-images/meeting-floor-5.jpg diff --git a/cypress/fixtures/floor-plan-images/meeting-floor-6.jpg b/playwright/data/floor-plan-images/meeting-floor-6.jpg similarity index 100% rename from cypress/fixtures/floor-plan-images/meeting-floor-6.jpg rename to playwright/data/floor-plan-images/meeting-floor-6.jpg diff --git a/cypress/fixtures/meeting-floors.json b/playwright/data/meeting-floors.json similarity index 100% rename from cypress/fixtures/meeting-floors.json rename to playwright/data/meeting-floors.json diff --git a/playwright/helpers/common.js b/playwright/helpers/common.js new file mode 100644 index 000000000..5ba39ba02 --- /dev/null +++ b/playwright/helpers/common.js @@ -0,0 +1,17 @@ +module.exports = { + /** + * Validate whether a selector is visible in viewport + * + * @param {Object} page Page object + * @param {String} selector Selector to validate + * @returns Boolean + */ + isIntersectingViewport: async (page, selector) => { + return page.$eval(selector, async el => { + const bottom = window.innerHeight + const rect = el.getBoundingClientRect() + + return rect.top < bottom && rect.top > 0 - rect.height + }) + } +} diff --git a/cypress/generators/meeting.js b/playwright/helpers/meeting.js similarity index 85% rename from cypress/generators/meeting.js rename to playwright/helpers/meeting.js index 88f0bc2fd..bb5c19da8 100644 --- a/cypress/generators/meeting.js +++ b/playwright/helpers/meeting.js @@ -1,12 +1,14 @@ -import { DateTime } from 'luxon' -import { faker } from '@faker-js/faker' -import seedrandom from 'seedrandom' -import _lodash from 'lodash' // Cannot use lodash-es as we need to runInContext for constant randomness -import { startCase, times } from 'lodash-es' -import slugify from 'slugify' -import ms from 'ms' +const { DateTime } = require('luxon') +const { faker } = require('@faker-js/faker') +const seedrandom = require('seedrandom') +const _ = require('lodash') +const slugify = require('slugify') +const ms = require('ms') -import floorsMeta from '../fixtures/meeting-floors.json' +const floorsMeta = require('../data/meeting-floors') + +const urlRe = /http[s]?:\/\/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*(),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+/ +const conferenceDomains = ['webex.com', 'zoom.us', 'jitsi.org', 'meetecho.com', 'gather.town'] const xslugify = (str) => slugify(str.replace('/', '-'), { lower: true, strict: true }) @@ -20,7 +22,7 @@ const sessionsWithWebex = [3, 4] // Use constant randomness seed seedrandom(TEST_SEED.toString(), { global: true }) faker.seed(TEST_SEED) -const { sample, sampleSize } = _lodash.runInContext() +const { sample, sampleSize } = _.runInContext() /** * Generate area response from label + children @@ -85,7 +87,6 @@ function findAreaGroup (slug, areas) { throw new Error('Requested group does not exist!') } - /** * Reverse areas and groups mapping */ @@ -142,10 +143,12 @@ function createEvent ({ id: ++lastEventId, sessionId: ++lastSessionId, room: room.name, - location: hasLocation ? { - short: floor.short, - name: floor.name - } : {}, + location: hasLocation + ? { + short: floor.short, + name: floor.name + } + : {}, acronym: group.keyword, duration: typeof duration === 'string' ? ms(duration) / 1000 : duration, name: eventName, @@ -154,9 +157,9 @@ function createEvent ({ type, isBoF, filterKeywords: [ - "coding", - "hackathon", - "hackathon-sessc" + 'coding', + 'hackathon', + 'hackathon-sessc' ], groupAcronym: group.keyword, groupName: faker.lorem.sentence(faker.mersenne.rand(5, 2)), @@ -170,22 +173,24 @@ function createEvent ({ showAgenda }, agenda: { - url: hasAgenda ? `https://datatracker.ietf.org/meeting/123/materials/agenda-123-ietf-sessa-00` : null + url: hasAgenda ? 'https://datatracker.ietf.org/meeting/123/materials/agenda-123-ietf-sessa-00' : null }, orderInMeeting: 1, short: eventName, - sessionToken: "sessa", + sessionToken: 'sessa', links: { chat: `https://zulip.ietf.org/#narrow/stream/${group.keyword}`, chatArchive: `https://zulip.ietf.org/#narrow/stream/${group.keyword}`, - recordings: hasRecordings ? [ - { - id: ++lastRecordingId, - name: `recording-123-${group.keyword}-1`, - title: `Video recording for ${group.keyword} on ${startDateTime.toFormat('yyyy-LL-dd \'at\' HH:mm:ss')}`, - url: "https://www.youtube.com/watch?v=1eq_5xvacl0" - } - ] : [], + recordings: hasRecordings + ? [ + { + id: ++lastRecordingId, + name: `recording-123-${group.keyword}-1`, + title: `Video recording for ${group.keyword} on ${startDateTime.toFormat('yyyy-LL-dd \'at\' HH:mm:ss')}`, + url: 'https://www.youtube.com/watch?v=1eq_5xvacl0' + } + ] + : [], videoStream: showAgenda && hasVideoStream ? 'https://meetings.conf.meetecho.com/ietf{meeting.number}/?group={group.acronym}&short={short}&item={order_number}' : null, audioStream: hasAgenda ? 'https://mp3.conf.meetecho.com/ietf123/{group.acronym}/{order_number}.m3u' : null, webex: hasWebex ? 'https://webex.com/123' : null, @@ -195,7 +200,7 @@ function createEvent ({ } } -export default { +module.exports = { /** * Generate a standard agenda data reponse */ @@ -219,17 +224,17 @@ export default { const endDate = startDate.plus({ days: 7 }) // Generate floors - const floors = times(6, (idx) => { + const floors = _.times(6, (idx) => { const floorIdx = idx + 1 const floor = floorsMeta[idx] return { id: floorIdx, image: `/media/floor/${floor.path}`, - name: `Level ${startCase(faker.color.human())} ${floorIdx}`, + name: `Level ${_.startCase(faker.color.human())} ${floorIdx}`, short: `L${floorIdx}`, width: floor.width, height: floor.height, - rooms: times(faker.mersenne.rand(10, 5), (ridx) => { + rooms: _.times(faker.mersenne.rand(10, 5), (ridx) => { const roomName = `${faker.science.chemicalElement().name} ${floorIdx}-${ridx + 1}` // Keep 10% margin on each side const roomXUnit = Math.round(floor.width / 10) @@ -239,7 +244,7 @@ export default { return { id: floorIdx * 100 + ridx, name: roomName, - functionalName: startCase(faker.lorem.words(2)), + functionalName: _.startCase(faker.lorem.words(2)), slug: xslugify(roomName), left: roomX, right: roomX + roomXUnit, @@ -262,7 +267,7 @@ export default { for (const area of firstAreasNames) { firstAreas.push(createArea({ label: area, - children: times(faker.mersenne.rand(25, 2), (idx) => { + children: _.times(faker.mersenne.rand(25, 2), (idx) => { return createGroup({ mayBeBof: true }) }) })) @@ -275,7 +280,7 @@ export default { for (const area of ['UVW', 'XYZ0']) { secondAreas.push(createArea({ label: area, - children: times(faker.mersenne.rand(25, 2), (idx) => { + children: _.times(faker.mersenne.rand(25, 2), (idx) => { return createGroup({ mayBeBof: true }) }) })) @@ -301,13 +306,13 @@ export default { }), createArea({ label: 'Office hours', - children: firstAreasNames.map(n => createGroup({ label: `${n} Office Hours`})) + children: firstAreasNames.map(n => createGroup({ label: `${n} Office Hours` })) }), createArea({ label: 'Open meeting', children: [ createGroup({ label: 'WG Chairs Forum' }), - createGroup({ label: `Newcomers' Feedback Session` }) + createGroup({ label: 'Newcomers\' Feedback Session' }) ] }), createArea({ @@ -327,7 +332,7 @@ export default { createArea({ label: 'Social', children: [ - createGroup({ label: `Newcomers' Quick Connections` }), + createGroup({ label: 'Newcomers\' Quick Connections' }), createGroup({ label: 'Welcome Reception', toggledBy: ['ietf'] }), createGroup({ label: 'Break', toggledBy: ['secretariat'] }), createGroup({ label: 'Beverage and Snack Break', toggledBy: ['secretariat'] }), @@ -337,7 +342,7 @@ export default { createArea({ label: 'Tutorial', children: [ - createGroup({ label: `Tutorial: Newcomers' Overview` }) + createGroup({ label: 'Tutorial: Newcomers\' Overview' }) ] }), createArea({ @@ -434,7 +439,7 @@ export default { }, floors)) schedule.push(createEvent({ - name: `Newcomers' Quick Connections (Note that pre-registration is required)`, + name: 'Newcomers\' Quick Connections (Note that pre-registration is required)', startDateTime: day2.set({ hour: 16 }), duration: '1h', ...findAreaGroup('newcomers-quick-connections', categories[2]), @@ -506,7 +511,7 @@ export default { }, floors)) // -> Session I - times(8, () => { // 8 lanes per session time + _.times(8, () => { // 8 lanes per session time const { area, ...group } = daySessions.pop() schedule.push(createEvent({ name: 'Session I', @@ -535,7 +540,7 @@ export default { }, floors)) // -> Session II - times(8, () => { // 8 lanes per session time + _.times(8, () => { // 8 lanes per session time const { area, ...group } = daySessions.pop() schedule.push(createEvent({ name: 'Session II', @@ -564,9 +569,9 @@ export default { type: 'break', ...findAreaGroup('beverage-and-snack-break', categories[2]) }, floors)) - + // -> Session III - times(8, () => { // 8 lanes per session time + _.times(8, () => { // 8 lanes per session time const { area, ...group } = daySessions.pop() schedule.push(createEvent({ name: 'Session III', @@ -627,5 +632,41 @@ export default { schedule, floors } + }, + + /** + * Format URL by replacing inline variables + * + * @param {String} url Raw URL + * @param {Object} session Session Object + * @param {String} meetingNumber Meeting Number + * @returns Formatted URL + */ + formatLinkUrl: (url, session, meetingNumber) => { + return url + ? url.replace('{meeting.number}', meetingNumber) + .replace('{group.acronym}', session.groupAcronym) + .replace('{short}', session.short) + .replace('{order_number}', session.orderInMeeting) + : url + }, + + /** + * Find the first URL in text matching a conference domain + * + * @param {String} txt Raw Text + * @returns First URL found + */ + findFirstConferenceUrl: (txt) => { + try { + const fUrl = txt.match(urlRe) + if (fUrl && fUrl[0].length > 0) { + const pUrl = new URL(fUrl[0]) + if (conferenceDomains.some(d => pUrl.hostname.endsWith(d))) { + return fUrl[0] + } + } + } catch (err) { } + return null } } diff --git a/playwright/helpers/viewports.js b/playwright/helpers/viewports.js new file mode 100644 index 000000000..0067af172 --- /dev/null +++ b/playwright/helpers/viewports.js @@ -0,0 +1,6 @@ +module.exports = { + desktop: [1536, 960], + smallDesktop: [1280, 800], + tablet: [768, 1024], + mobile: [360, 760] +} diff --git a/playwright/package-lock.json b/playwright/package-lock.json new file mode 100644 index 000000000..688c76b40 --- /dev/null +++ b/playwright/package-lock.json @@ -0,0 +1,4015 @@ +{ + "name": "playwright", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "playwright", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@faker-js/faker": "^7.5.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "luxon": "^3.0.3", + "ms": "^2.1.3", + "seedrandom": "^3.0.5", + "slugify": "^1.6.5" + }, + "devDependencies": { + "@playwright/test": "^1.25.2", + "eslint": "^8.23.1", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-n": "^15.2.5", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^6.0.1" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@faker-js/faker": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.5.0.tgz", + "integrity": "sha512-8wNUCCUHvfvI0gQpDUho/3gPzABffnCn5um65F8dzQ86zz6dlt4+nmAA7PQUc8L+eH+9RgR/qzy5N/8kN0Ozdw==", + "engines": { + "node": ">=14.0.0", + "npm": ">=6.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@playwright/test": { + "version": "1.25.2", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.25.2.tgz", + "integrity": "sha512-6qPznIR4Fw02OMbqXUPMG6bFFg1hDVNEdihKy0t9K0dmRbus1DyP5Q5XFQhGwEHQkLG5hrSfBuu9CW/foqhQHQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "playwright-core": "1.25.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.7.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.16.tgz", + "integrity": "sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/es-abstract": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", + "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.2", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.23.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz", + "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-standard": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-promise": "^6.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/eslint-plugin-n": { + "version": "15.2.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.5.tgz", + "integrity": "sha512-8+BYsqiyZfpu6NXmdLOXVUfk8IocpCjpd8nMRRH0A9ulrcemhb2VI9RSJMEy5udx++A/YcVPD11zT8hpFq368g==", + "dev": true, + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.10.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-node/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz", + "integrity": "sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.5.tgz", + "integrity": "sha512-ZIWRujF6MvYGkEuHMYtFRkL2wAtFw89EHfKlXrkPkjQZZRWeh9L1q3SV13NIfHnqxugjLvAOkEHx9mb1zcMnEw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/luxon": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.0.3.tgz", + "integrity": "sha512-+EfHWnF+UT7GgTnq5zXg3ldnTKL2zdv7QJgsU5bjjpbH17E3qi/puMhQyJVYuCq+FRkogvB5WB6iVvUr+E4a7w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playwright-core": { + "version": "1.25.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.25.2.tgz", + "integrity": "sha512-0yTbUE9lIddkEpLHL3u8PoCL+pWiZtj5A/j3U7YoNjcmKKDGBnCrgHJMzwd2J5vy6l28q4ki3JIuz7McLHhl1A==", + "dev": true, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slugify": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", + "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@eslint/eslintrc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@faker-js/faker": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.5.0.tgz", + "integrity": "sha512-8wNUCCUHvfvI0gQpDUho/3gPzABffnCn5um65F8dzQ86zz6dlt4+nmAA7PQUc8L+eH+9RgR/qzy5N/8kN0Ozdw==" + }, + "@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@playwright/test": { + "version": "1.25.2", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.25.2.tgz", + "integrity": "sha512-6qPznIR4Fw02OMbqXUPMG6bFFg1hDVNEdihKy0t9K0dmRbus1DyP5Q5XFQhGwEHQkLG5hrSfBuu9CW/foqhQHQ==", + "dev": true, + "requires": { + "@types/node": "*", + "playwright-core": "1.25.2" + } + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/node": { + "version": "18.7.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.16.tgz", + "integrity": "sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg==", + "dev": true + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "requires": { + "semver": "^7.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "es-abstract": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", + "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.2", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.23.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz", + "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + } + }, + "eslint-config-standard": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "eslint-plugin-n": { + "version": "15.2.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.5.tgz", + "integrity": "sha512-8+BYsqiyZfpu6NXmdLOXVUfk8IocpCjpd8nMRRH0A9ulrcemhb2VI9RSJMEy5udx++A/YcVPD11zT8hpFq368g==", + "dev": true, + "requires": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.10.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.7" + } + }, + "eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz", + "integrity": "sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.5.tgz", + "integrity": "sha512-ZIWRujF6MvYGkEuHMYtFRkL2wAtFw89EHfKlXrkPkjQZZRWeh9L1q3SV13NIfHnqxugjLvAOkEHx9mb1zcMnEw==", + "dev": true + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "luxon": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.0.3.tgz", + "integrity": "sha512-+EfHWnF+UT7GgTnq5zXg3ldnTKL2zdv7QJgsU5bjjpbH17E3qi/puMhQyJVYuCq+FRkogvB5WB6iVvUr+E4a7w==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "playwright-core": { + "version": "1.25.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.25.2.tgz", + "integrity": "sha512-0yTbUE9lIddkEpLHL3u8PoCL+pWiZtj5A/j3U7YoNjcmKKDGBnCrgHJMzwd2J5vy6l28q4ki3JIuz7McLHhl1A==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slugify": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", + "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==" + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/playwright/package.json b/playwright/package.json new file mode 100644 index 000000000..0592c7166 --- /dev/null +++ b/playwright/package.json @@ -0,0 +1,32 @@ +{ + "name": "playwright", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "playwright test", + "test:visual": "playwright test --headed --workers=1", + "test:debug": "playwright test --debug" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@playwright/test": "^1.25.2", + "eslint": "^8.23.1", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-n": "^15.2.5", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^6.0.1" + }, + "dependencies": { + "@faker-js/faker": "^7.5.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "luxon": "^3.0.3", + "ms": "^2.1.3", + "seedrandom": "^3.0.5", + "slugify": "^1.6.5" + } +} diff --git a/playwright/playwright.config.js b/playwright/playwright.config.js new file mode 100644 index 000000000..afed56db9 --- /dev/null +++ b/playwright/playwright.config.js @@ -0,0 +1,116 @@ +// @ts-check +const { devices } = require('@playwright/test') + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * @see https://playwright.dev/docs/test-configuration + * @type {import('@playwright/test').PlaywrightTestConfig} + */ +const config = { + testDir: './tests', + /* Maximum time one test can run for. */ + timeout: 120 * 1000, + expect: { + /** + * Maximum time expect() should wait for the condition to be met. + * For example in `await expect(locator).toHaveText();` + */ + timeout: 5000 + }, + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: process.env.CI ? 'github' : 'list', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ + actionTimeout: 0, + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL: 'http://localhost:3000', + + locale: 'en-US', + timezoneId: 'America/Toronto', + + screenshot: 'only-on-failure', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry' + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { + ...devices['Desktop Chrome'] + } + }, + + { + name: 'firefox', + use: { + ...devices['Desktop Firefox'] + } + } + + // { + // name: 'webkit', + // use: { + // ...devices['Desktop Safari'] + // } + // } + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { + // ...devices['Pixel 5'], + // }, + // }, + // { + // name: 'Mobile Safari', + // use: { + // ...devices['iPhone 12'], + // }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { + // channel: 'msedge', + // }, + // }, + // { + // name: 'Google Chrome', + // use: { + // channel: 'chrome', + // }, + // }, + ], + + /* Folder for test artifacts such as screenshots, videos, traces, etc. */ + // outputDir: 'test-results/', + + /* Run your local dev server before starting the tests */ + ...process.env.CI && { + webServer: { + command: 'cd .. && yarn preview', + port: 3000, + reuseExistingServer: false + } + } +} + +module.exports = config diff --git a/playwright/tests/meeting/agenda.spec.js b/playwright/tests/meeting/agenda.spec.js new file mode 100644 index 000000000..56592ec25 --- /dev/null +++ b/playwright/tests/meeting/agenda.spec.js @@ -0,0 +1,1427 @@ +const { test, expect } = require('@playwright/test') +const { DateTime } = require('luxon') +const { faker } = require('@faker-js/faker') +const seedrandom = require('seedrandom') +const slugify = require('slugify') +const commonHelper = require('../../helpers/common') +const meetingHelper = require('../../helpers/meeting.js') +const viewports = require('../../helpers/viewports') +const _ = require('lodash') +const fs = require('fs/promises') +const { setTimeout } = require('timers/promises') + +const xslugify = (str) => slugify(str.replace('/', '-'), { lower: true, strict: true }) + +const TEST_SEED = 123 +const BROWSER_LOCALE = 'en-US' +const BROWSER_TIMEZONE = 'America/Toronto' + +// Set randomness seed +seedrandom(TEST_SEED.toString(), { global: true }) +faker.seed(TEST_SEED) +const { random, shuffle } = _.runInContext() + +// ==================================================================== +// AGENDA (past meeting) | DESKTOP viewport +// ==================================================================== + +test.describe('past - desktop', () => { + let meetingData + + test.beforeAll(async () => { + // Generate meeting data + meetingData = meetingHelper.generateAgendaResponse({ dateMode: 'past' }) + }) + + test.beforeEach(async ({ page }) => { + // Intercept Meeting Data API + await page.route(`**/api/meeting/${meetingData.meeting.number}/agenda-data`, route => { + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify(meetingData) + }) + }) + + await page.setViewportSize({ + width: viewports.desktop[0], + height: viewports.desktop[1] + }) + + // Visit agenda page and await Meeting Data API call to complete + await Promise.all([ + page.waitForResponse(`**/api/meeting/${meetingData.meeting.number}/agenda-data`), + page.goto(`/meeting/${meetingData.meeting.number}/agenda-neue`) + ]) + + // Wait for page to be ready + await page.locator('.agenda h1').waitFor({ state: 'visible' }) + await setTimeout(500) + }) + + test('agenda header section', async ({ page }) => { + // HEADER + await expect(page.locator('.agenda h1'), 'should have agenda title').toContainText(`IETF ${meetingData.meeting.number} Meeting Agenda`) + await expect(page.locator('.agenda h4').first(), 'should have meeting city subtitle').toContainText(meetingData.meeting.city) + await expect(page.locator('.agenda h4').first(), 'should have meeting date subtitle').toContainText(/[a-zA-Z] [0-9]{1,2} - ([a-zA-Z]+ )?[0-9]{1,2}, [0-9]{4}/i) + + const updatedDateTime = DateTime.fromISO(meetingData.meeting.updated) + .setZone(meetingData.meeting.timezone) + .setLocale(BROWSER_LOCALE) + .toFormat('DD \'at\' tt ZZZZ') + await expect(page.locator('.agenda h6').first(), 'should have meeting last updated datetime').toContainText(updatedDateTime) + + // NAV + + await test.step('has the correct navigation items', async () => { + const navLocator = page.locator('.agenda .meeting-nav > li') + await expect(navLocator).toHaveCount(3) + await expect(navLocator.first()).toContainText('Agenda') + await expect(navLocator.nth(1)).toContainText('Floor plan') + await expect(navLocator.last()).toContainText('Plaintext') + }) + + // SETTINGS BUTTON + + await expect(page.locator('.agenda .meeting-nav + button')).toContainText('Settings') + }) + + test('agenda schedule list header', async ({ page }) => { + const infonoteLocator = page.locator('.agenda .agenda-infonote') + const infonoteToggleLocator = page.locator('.agenda h2 + button') + const tzMeetingBtnLocator = page.locator('.agenda .agenda-tz-selector > button:nth-child(1)') + const tzLocalBtnLocator = page.locator('.agenda .agenda-tz-selector > button:nth-child(2)') + const tzUtcBtnLocator = page.locator('.agenda .agenda-tz-selector > button:nth-child(3)') + + await expect(page.locator('.agenda h2')).toContainText('Schedule') + await expect(infonoteLocator).toBeVisible() + await expect(infonoteLocator).toContainText(meetingData.meeting.infoNote) + + // INFO-NOTE TOGGLE + + await test.step('info note can be dismissed / reopened', async () => { + await page.locator('.agenda .agenda-infonote > button').click() + await expect(infonoteLocator).not.toBeVisible() + await expect(infonoteToggleLocator).toBeVisible() + await infonoteToggleLocator.click() + await expect(infonoteLocator).toBeVisible() + await expect(infonoteToggleLocator).not.toBeVisible() + }) + + // TIMEZONE SELECTOR + + await test.step('has timezone selector', async () => { + await expect(page.locator('.agenda .agenda-tz-selector')).toBeVisible() + await expect(page.locator('small:left-of(.agenda .agenda-tz-selector)')).toContainText('Timezone:') + await expect(page.locator('.agenda .agenda-tz-selector > button')).toHaveCount(3) + await expect(tzMeetingBtnLocator).toContainText('Meeting') + await expect(tzLocalBtnLocator).toContainText('Local') + await expect(tzUtcBtnLocator).toContainText('UTC') + await expect(page.locator('.agenda .agenda-timezone-ddn')).toBeVisible() + }) + + // CHANGE TIMEZONE + + await test.step('can change timezone', async () => { + // Switch to local timezone + await tzLocalBtnLocator.click() + await expect(tzLocalBtnLocator).toHaveClass(/n-button--primary-type/) + await expect(tzMeetingBtnLocator).not.toHaveClass(/n-button--primary-type/) + const localDateTime = DateTime.fromISO(meetingData.meeting.updated) + .setZone(BROWSER_TIMEZONE) + .setLocale(BROWSER_LOCALE) + .toFormat('DD \'at\' tt ZZZZ') + await expect(page.locator('.agenda h6').first()).toContainText(localDateTime) + // Switch to UTC + await tzUtcBtnLocator.click() + await expect(tzUtcBtnLocator).toHaveClass(/n-button--primary-type/) + await expect(tzLocalBtnLocator).not.toHaveClass(/n-button--primary-type/) + const utcDateTime = DateTime.fromISO(meetingData.meeting.updated) + .setZone('utc') + .setLocale(BROWSER_LOCALE) + .toFormat('DD \'at\' tt ZZZZ') + await expect(page.locator('.agenda h6').first()).toContainText(utcDateTime) + await expect(page.locator('.agenda .agenda-timezone-ddn')).toContainText('UTC') + // Switch back to meeting timezone + await tzMeetingBtnLocator.click() + await expect(tzMeetingBtnLocator).toHaveClass(/n-button--primary-type/) + await expect(page.locator('.agenda .agenda-timezone-ddn')).toContainText('Tokyo') + }) + }) + + test('agenda schedule list table', async ({ page }) => { + const dayHeadersLocator = page.locator('.agenda-table-display-day') + + // TABLE HEADERS + + await expect(page.locator('.agenda-table-head-time')).toContainText('Time') + await expect(page.locator('.agenda-table-head-location')).toContainText('Location') + await expect(page.locator('.agenda-table-head-event')).toContainText('Event') + + // DAY HEADERS + + await expect(dayHeadersLocator).toHaveCount(7) + for (let idx = 0; idx < 7; idx++) { + const localDateTime = DateTime.fromISO(meetingData.meeting.startDate, { zone: BROWSER_TIMEZONE }) + .setZone(BROWSER_TIMEZONE) + .setLocale(BROWSER_LOCALE) + .plus({ days: idx }) + .toLocaleString(DateTime.DATE_HUGE) + await expect(dayHeadersLocator.nth(idx)).toContainText(localDateTime) + } + }) + + test('agenda schedule list table events', async ({ page }) => { + test.slow() // Triple the default timeout + + const eventRowsLocator = page.locator('.agenda-table .agenda-table-display-event') + + await expect(eventRowsLocator).toHaveCount(meetingData.schedule.length) + + let isFirstSession = true + for (let idx = 0; idx < meetingData.schedule.length; idx++) { + const row = eventRowsLocator.nth(idx) + const event = meetingData.schedule[idx] + const eventStart = DateTime.fromISO(event.startDateTime) + const eventEnd = eventStart.plus({ seconds: event.duration }) + const eventTimeSlot = `${eventStart.toFormat('HH:mm')} - ${eventEnd.toFormat('HH:mm')}` + // -------- + // Location + // -------- + if (event.location?.short) { + // Has floor badge + await expect(row.locator('.agenda-table-cell-room > a')).toContainText(event.room) + await expect(row.locator('.agenda-table-cell-room > a')).toHaveAttribute('href', `/meeting/${meetingData.meeting.number}/floor-plan-neue?room=${xslugify(event.room)}`) + await expect(row.locator('.agenda-table-cell-room > .badge')).toContainText(event.location.short) + } else { + // No floor badge + await expect(row.locator('.agenda-table-cell-room > span:not(.badge)')).toContainText(event.room) + await expect(row.locator('.agenda-table-cell-room > .badge')).not.toBeVisible() + } + // --------------------------------------------------- + // Type-specific timeslot / group / name columns tests + // --------------------------------------------------- + if (event.type === 'regular') { + // First session should have header row above it + if (isFirstSession) { + const headerRow = page.locator(`#agenda-rowid-sesshd-${event.id}`) + await expect(headerRow).toBeVisible() + await expect(headerRow.locator('.agenda-table-cell-ts')).toContainText(eventTimeSlot) + await expect(headerRow.locator('.agenda-table-cell-name')).toContainText(`${DateTime.fromISO(event.startDateTime).toFormat('cccc')} ${event.name}`) + } + // Timeslot + await expect(row.locator('.agenda-table-cell-ts')).toContainText('—') + // Group Acronym + Parent + await expect(row.locator('.agenda-table-cell-group > .badge')).toContainText(event.groupParent.acronym) + await expect(row.locator('.agenda-table-cell-group > .badge + a')).toContainText(event.acronym) + await expect(row.locator('.agenda-table-cell-group > .badge + a')).toHaveAttribute('href', `/group/${event.acronym}/about/`) + // Group Name + await expect(row.locator('.agenda-table-cell-name')).toContainText(event.groupName) + isFirstSession = false + } else { + // Timeslot + await expect(row.locator('.agenda-table-cell-ts')).toContainText(eventTimeSlot) + // Event Name + await expect(row.locator('.agenda-table-cell-name')).toContainText(event.name) + isFirstSession = true + } + // ----------- + // Name column + // ----------- + // Event icon + if (['break', 'plenary'].includes(event.type) || (event.type === 'other' && ['office hours', 'hackathon'].some(s => event.name.toLowerCase().indexOf(s) >= 0))) { + await expect(row.locator('.agenda-table-cell-name > i.bi')).toBeVisible() + } + // Name link + if (event.flags.agenda) { + await expect(row.locator('.agenda-table-cell-name > a')).toHaveAttribute('href', event.agenda.url) + } + // BoF badge + if (event.isBoF) { + await expect(row.locator('.agenda-table-cell-name > .badge')).toContainText('BoF') + } + // Note + if (event.note) { + await expect(row.locator('.agenda-table-cell-name > .agenda-table-note')).toBeVisible() + await expect(row.locator('.agenda-table-cell-name > .agenda-table-note i.bi')).toBeVisible() + await expect(row.locator('.agenda-table-cell-name > .agenda-table-note i.bi + span')).toContainText(event.note) + } + // ----------------------- + // Buttons / Status Column + // ----------------------- + switch (event.status) { + // Cancelled + case 'canceled': { + await expect(row.locator('.agenda-table-cell-links > .badge.is-cancelled')).toContainText('Cancelled') + break + } + // Rescheduled + case 'resched': { + await expect(row.locator('.agenda-table-cell-links > .badge.is-rescheduled')).toContainText('Rescheduled') + break + } + // Scheduled + case 'sched': { + if (event.flags.showAgenda || ['regular', 'plenary'].includes(event.type)) { + const eventButtons = row.locator('.agenda-table-cell-links > .agenda-table-cell-links-buttons') + if (event.flags.agenda) { + // Show meeting materials button + await expect(eventButtons.locator('i.bi.bi-collection')).toBeVisible() + // ZIP materials button + await expect(eventButtons.locator(`#btn-lnk-${event.id}-tar`)).toHaveAttribute('href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.tgz`) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-tar > i.bi`)).toBeVisible() + // PDF materials button + await expect(eventButtons.locator(`#btn-lnk-${event.id}-pdf`)).toHaveAttribute('href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.pdf`) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-pdf > i.bi`)).toBeVisible() + } else if (event.type === 'regular') { + // No meeting materials yet warning badge + await expect(eventButtons.locator('.no-meeting-materials')).toBeVisible() + } + // Notepad button + const hedgeDocLink = `https://notes.ietf.org/notes-ietf-${meetingData.meeting.number}-${event.type === 'plenary' ? 'plenary' : event.acronym}` + await expect(eventButtons.locator(`#btn-lnk-${event.id}-note`)).toHaveAttribute('href', hedgeDocLink) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-note > i.bi`)).toBeVisible() + // Chat logs + await expect(eventButtons.locator(`#btn-lnk-${event.id}-logs`)).toHaveAttribute('href', event.links.chatArchive) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-logs > i.bi`)).toBeVisible() + // Recordings + for (const rec of event.links.recordings) { + if (rec.url.indexOf('audio') > 0) { + // -> Audio + await expect(eventButtons.locator(`#btn-lnk-${event.id}-audio-${rec.id}`)).toHaveAttribute('href', rec.url) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-audio-${rec.id} > i.bi`)).toBeVisible() + } else if (rec.url.indexOf('youtu') > 0) { + // -> Youtube + await expect(eventButtons.locator(`#btn-lnk-${event.id}-youtube-${rec.id}`)).toHaveAttribute('href', rec.url) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-youtube-${rec.id} > i.bi`)).toBeVisible() + } else { + // -> Others + await expect(eventButtons.locator(`#btn-lnk-${event.id}-video-${rec.id}`)).toHaveAttribute('href', rec.url) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-video-${rec.id} > i.bi`)).toBeVisible() + } + } + // Video Stream + if (event.links.videoStream) { + const videoStreamLink = `https://www.meetecho.com/ietf${meetingData.meeting.number}/recordings#${event.acronym.toUpperCase()}` + await expect(eventButtons.locator(`#btn-lnk-${event.id}-rec`)).toHaveAttribute('href', videoStreamLink) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-rec > i.bi`)).toBeVisible() + } + } else { + await expect(row.locator('.agenda-table-cell-links > .agenda-table-cell-links-buttons')).not.toBeVisible() + } + break + } + } + } + }) + + test('agenda schedule list search', async ({ page }) => { + const eventRowsLocator = page.locator('.agenda-table .agenda-table-display-event') + const searchInputLocator = page.locator('.agenda-search input[type=text]') + + await page.locator('.agenda-table > .agenda-table-search > button').click() + await expect(page.locator('.agenda-search')).toBeVisible() + + const event = _.find(meetingData.schedule, s => s.type === 'regular') + const eventWithNote = _.find(meetingData.schedule, s => s.note) + + // Search different terms + const searchTerms = [ + 'hack', // Should match hackathon events + event.groupAcronym, // Match group name + event.room.toLowerCase(), // Match room name + eventWithNote.note.substring(0, 10).toLowerCase() // Match partial note + ] + + for (const term of searchTerms) { + await searchInputLocator.fill(term) + // Let the UI update before checking each displayed row + await page.waitForTimeout(1000) + await expect(eventRowsLocator).not.toHaveCount(meetingData.schedule.length) + const rowsCount = await eventRowsLocator.count() + for (let idx = 0; idx < rowsCount; idx++) { + await expect(eventRowsLocator.nth(idx)).toContainText(term, { ignoreCase: true }) + } + } + + // Clear button + await page.locator('.agenda-search button').click() + await page.waitForTimeout(1000) + await expect(searchInputLocator).toHaveValue('') + await expect(eventRowsLocator).toHaveCount(meetingData.schedule.length) + // Invalid search + await searchInputLocator.fill(faker.vehicle.vin()) + await page.waitForTimeout(1000) + await expect(eventRowsLocator).toHaveCount(0) + await expect(page.locator('.agenda-table .agenda-table-display-noresult')).toContainText('No event matching your search query.') + // Closing search should clear search + await page.locator('.agenda-table > .agenda-table-search > button').click() + await expect(page.locator('.agenda-search')).not.toBeVisible() + await expect(eventRowsLocator).toHaveCount(meetingData.schedule.length) + }) + + test('agenda meeting materials dialog', async ({ page }) => { + const event = _.find(meetingData.schedule, s => s.flags.showAgenda && s.flags.agenda) + const eventStart = DateTime.fromISO(event.startDateTime) + const eventEnd = eventStart.plus({ seconds: event.duration }) + // Intercept meeting materials request + const materialsUrl = (new URL(event.agenda.url)).pathname + const materialsInfo = { + url: event.agenda.url, + slides: _.times(5, idx => ({ + id: 100000 + idx, + title: faker.commerce.productName(), + url: `/meeting/${meetingData.meeting.number}/materials/slides-${meetingData.meeting.number}-${event.acronym}-${faker.internet.domainWord()}`, + ext: ['pdf', 'html', 'md', 'txt', 'pptx'][idx] + })), + minutes: { + ext: 'md', + id: 123456, + title: 'Minutes IETF123 Testing', + url: `/meeting/${meetingData.meeting.number}/materials/minutes-${meetingData.meeting.number}-${event.acronym}-${faker.internet.domainWord()}` + } + } + await page.route(`**/api/meeting/session/${event.sessionId}/materials`, route => { + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify(materialsInfo) + }) + }) + await page.route(materialsUrl, route => { + route.fulfill({ + status: 200, + contentType: 'text/plain', + body: 'The internet is a series of tubes.' + }) + }) + await page.route(materialsInfo.minutes.url, route => { + route.fulfill({ + status: 200, + contentType: 'text/plain', + body: 'One does not simply walk into mordor.' + }) + }) + // Open dialog + await page.locator(`#agenda-rowid-${event.id} #btn-lnk-${event.id}-mat`).click() + await expect(page.locator('.agenda-eventdetails')).toBeVisible() + // Header + await expect(page.locator('.agenda-eventdetails .n-card-header__main > .detail-header > .bi')).toBeVisible() + await expect(page.locator('.agenda-eventdetails .n-card-header__main > .detail-header > .bi + span')).toContainText(eventStart.toFormat('DDDD')) + await expect(page.locator('.agenda-eventdetails .n-card-header__extra > .detail-header > .bi')).toBeVisible() + await expect(page.locator('.agenda-eventdetails .n-card-header__extra > .detail-header > .bi + strong')).toContainText(`${eventStart.toFormat('T')} - ${eventEnd.toFormat('T')}`) + await expect(page.locator('.agenda-eventdetails .detail-title > h6 > .bi')).toBeVisible() + await expect(page.locator('.agenda-eventdetails .detail-title > h6 > .bi + span')).toContainText(event.name) + await expect(page.locator('.agenda-eventdetails .detail-location > .bi')).toBeVisible() + await expect(page.locator('.agenda-eventdetails .detail-location > .bi + .badge')).toContainText(event.location.short) + await expect(page.locator('.agenda-eventdetails .detail-location > .bi + .badge + span')).toContainText(event.room) + // Navigation + const navLocator = await page.locator('.agenda-eventdetails .detail-nav > a') + await expect(navLocator).toHaveCount(3) + await expect(navLocator.first()).toHaveClass(/active/) + await expect(navLocator.nth(1)).not.toHaveClass(/active/) + await expect(navLocator.nth(2)).not.toHaveClass(/active/) + // Agenda Tab + await expect(page.locator('.agenda-eventdetails .detail-text > iframe')).toHaveAttribute('src', materialsUrl) + // Slides Tab + await navLocator.nth(1).click() + await expect(navLocator.nth(1)).toHaveClass(/active/) + await expect(navLocator.first()).not.toHaveClass(/active/) + const slidesLocator = page.locator('.agenda-eventdetails .detail-text > .list-group > .list-group-item') + await expect(slidesLocator).toHaveCount(materialsInfo.slides.length) + for (let idx = 0; idx < materialsInfo.slides.length; idx++) { + await expect(slidesLocator.nth(idx)).toHaveAttribute('href', materialsInfo.slides[idx].url) + await expect(slidesLocator.nth(idx).locator('.bi')).toHaveClass(new RegExp(`bi-filetype-${materialsInfo.slides[idx].ext}`)) + await expect(slidesLocator.nth(idx).locator('span')).toContainText(materialsInfo.slides[idx].title) + } + // Minutes Tab + await navLocator.last().click() + await expect(navLocator.last()).toHaveClass(/active/) + await expect(navLocator.nth(1)).not.toHaveClass(/active/) + await expect(page.locator('.agenda-eventdetails .detail-text > iframe')).toHaveAttribute('src', materialsInfo.minutes.url) + // Footer Buttons + const hedgeDocLink = `https://notes.ietf.org/notes-ietf-${meetingData.meeting.number}-${event.type === 'plenary' ? 'plenary' : event.acronym}` + const footerBtnsLocator = page.locator('.agenda-eventdetails .detail-action > a') + await expect(footerBtnsLocator).toHaveCount(3) + await expect(footerBtnsLocator.first()).toContainText('Download as tarball') + await expect(footerBtnsLocator.first()).toHaveAttribute('href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.tgz`) + await expect(footerBtnsLocator.nth(1)).toContainText('Download as PDF') + await expect(footerBtnsLocator.nth(1)).toHaveAttribute('href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.pdf`) + await expect(footerBtnsLocator.last()).toContainText('Notepad') + await expect(footerBtnsLocator.last()).toHaveAttribute('href', hedgeDocLink) + // Clicking X should close the dialog + await page.locator('.agenda-eventdetails .n-card-header__extra > .detail-header > button').click() + }) + + // -> SCHEDULE LIST -> Show Meeting Materials dialog (EMPTY VARIANT) + + test('agenda meeting materials dialog (empty variant)', async ({ page }) => { + const event = _.find(meetingData.schedule, s => s.flags.showAgenda && s.flags.agenda) + // Intercept meeting materials request + const materialsUrl = (new URL(event.agenda.url)).pathname + const materialsInfo = { + url: event.agenda.url, + slides: [], + minutes: null + } + await page.route(`**/api/meeting/session/${event.sessionId}/materials`, route => { + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify(materialsInfo) + }) + }) + await page.route(materialsUrl, route => { + route.fulfill({ + status: 200, + contentType: 'text/plain', + body: 'The internet is a series of tubes.' + }) + }) + // Open dialog + await page.locator(`#btn-lnk-${event.id}-mat`).click() + await expect(page.locator('.agenda-eventdetails')).toBeVisible() + // Slides Tab + await page.locator('.agenda-eventdetails .detail-nav > a').nth(1).click() + await expect(page.locator('.agenda-eventdetails .detail-text')).toContainText('No slides submitted for this session.') + // Minutes Tab + await page.locator('.agenda-eventdetails .detail-nav > a').nth(2).click() + await expect(page.locator('.agenda-eventdetails .detail-text')).toContainText('No minutes submitted for this session.') + // Clicking X should close the dialog + await page.locator('.agenda-eventdetails .n-card-header__extra > .detail-header > button').click() + }) + + // -> FILTER BY AREA/GROUP DIALOG + + test('agenda filter by area/group', async ({ page }) => { + test.slow() // Triple the default timeout + + // Open dialog + await page.locator('#agenda-quickaccess-filterbyareagroups-btn').click() + await expect(page.locator('.agenda-personalize')).toBeVisible() + // Check header elements + await expect(page.locator('.agenda-personalize .n-drawer-header__main > span')).toContainText('Filter Areas + Groups') + const diagHeaderBtnLocator = page.locator('.agenda-personalize .agenda-personalize-actions > button') + await expect(diagHeaderBtnLocator).toHaveCount(3) + await expect(diagHeaderBtnLocator.first()).toContainText('Clear Selection') + await expect(diagHeaderBtnLocator.nth(1)).toContainText('Cancel') + await expect(diagHeaderBtnLocator.last()).toContainText('Apply') + // Check categories + const catsLocator = page.locator('.agenda-personalize .agenda-personalize-category') + await expect(catsLocator).toHaveCount(meetingData.categories.length) + // Check areas + groups + for (let idx = 0; idx < meetingData.categories.length; idx++) { + const cat = meetingData.categories[idx] + const areasLocator = catsLocator.nth(idx).locator('.agenda-personalize-area') + await expect(areasLocator).toHaveCount(cat.length) + for (let areaIdx = 0; areaIdx < cat.length; areaIdx++) { + // Area Button + const area = cat[areaIdx] + if (area.label) { + await expect(areasLocator.nth(areaIdx).locator('.agenda-personalize-areamain > button')).toBeVisible() + await expect(areasLocator.nth(areaIdx).locator('.agenda-personalize-areamain > button')).toContainText(area.label) + } else { + await expect(areasLocator.nth(areaIdx).locator('.agenda-personalize-areamain > button')).not.toBeVisible() + } + // Group Buttons + const grpBtnsLocator = areasLocator.nth(areaIdx).locator('.agenda-personalize-groups > button') + await expect(grpBtnsLocator).toHaveCount(area.children.length) + for (let groupIdx = 0; groupIdx < area.children.length; groupIdx++) { + const group = area.children[groupIdx] + await expect(grpBtnsLocator.nth(groupIdx)).toBeVisible() + await expect(grpBtnsLocator.nth(groupIdx)).toContainText(group.label) + if (group.is_bof) { + await expect(grpBtnsLocator.nth(groupIdx)).toHaveClass(/is-bof/) + await expect(grpBtnsLocator.nth(groupIdx).locator('.badge')).toBeVisible() + await expect(grpBtnsLocator.nth(groupIdx).locator('.badge')).toContainText('BoF') + } + } + // Test Area Selection + if (area.label) { + await areasLocator.nth(areaIdx).locator('.agenda-personalize-areamain > button').click() + for (let groupIdx = 0; groupIdx < area.children.length; groupIdx++) { + await expect(grpBtnsLocator.nth(groupIdx)).toHaveClass(/is-checked/) + } + await areasLocator.nth(areaIdx).locator('.agenda-personalize-areamain > button').click() + for (let groupIdx = 0; groupIdx < area.children.length; groupIdx++) { + await expect(grpBtnsLocator.nth(groupIdx)).not.toHaveClass(/is-checked/) + } + } + // Test Group Selection + const randGroupIdx = random(area.children.length - 1) + const groupLocator = areasLocator.nth(areaIdx).locator('.agenda-personalize-groups > button').nth(randGroupIdx) + await groupLocator.click() + await expect(groupLocator).toHaveClass(/is-checked/) + await groupLocator.click() + await expect(groupLocator).not.toHaveClass(/is-checked/) + } + } + // Test multi-toggled_by button trigger + const bofBtnLocator = page.locator('.agenda-personalize .agenda-personalize-category:last-child .agenda-personalize-area:last-child .agenda-personalize-groups > button', { hasText: 'BoF' }) + const bofGroupsLocator = page.locator('.agenda-personalize .agenda-personalize-group:has(.badge)') + const bofGroupsCount = await bofGroupsLocator.count() + await bofBtnLocator.click() + for (let idx = 0; idx < bofGroupsCount; idx++) { + await expect(bofGroupsLocator.nth(idx)).toHaveClass(/is-checked/) + } + await bofBtnLocator.click() + for (let idx = 0; idx < bofGroupsCount; idx++) { + await expect(bofGroupsLocator.nth(idx)).not.toHaveClass(/is-checked/) + } + // Clicking all groups from area then area button should unselect all + const areaGroupsLocator = page.locator('.agenda-personalize .agenda-personalize-area >> nth=0 >> .agenda-personalize-groups > button') + const areaGroupsCount = await areaGroupsLocator.count() + for (let idx = 0; idx < areaGroupsCount; idx++) { + await areaGroupsLocator.nth(idx).click() + } + await page.locator('.agenda-personalize .agenda-personalize-area >> nth=0 >> .agenda-personalize-areamain:first-child > button').click() + for (let idx = 0; idx < areaGroupsCount; idx++) { + await expect(areaGroupsLocator.nth(idx)).not.toHaveClass(/is-checked/) + } + // Test Clear Selection + const groupsLocator = page.locator('.agenda-personalize .agenda-personalize-group') + const groupsCount = await groupsLocator.count() + const randGroupRange = _.take(shuffle(_.range(groupsCount)), 10) + for (const idx of randGroupRange) { + await groupsLocator.nth(idx).click() + } + await page.locator('.agenda-personalize .agenda-personalize-actions > button').first().click() + await expect(page.locator('.agenda-personalize .agenda-personalize-group.is-checked')).toHaveCount(0) + // Click Cancel should hide dialog + await page.locator('.agenda-personalize .agenda-personalize-actions > button').nth(1).click() + await expect(page.locator('.agenda-personalize')).not.toBeVisible() + }) + + // -> PICK SESSIONS + + test('agenda individual sessions picker', async ({ page }) => { + const pickBtnLocator = page.locator('#agenda-quickaccess-picksessions-btn') + const applyBtnLocator = page.locator('#agenda-quickaccess-applypick-btn') + const modifyBtnLocator = page.locator('#agenda-quickaccess-modifypick-btn') + const discardBtnLocator = page.locator('#agenda-quickaccess-discardpick-btn') + const checkboxesLocator = page.locator('.agenda .agenda-table-cell-check > .n-checkbox') + const checkedboxesLocator = page.locator('.agenda .agenda-table-cell-check > .n-checkbox.n-checkbox--checked') + const uncheckedboxesLocator = page.locator('.agenda .agenda-table-cell-check > .n-checkbox:not(.n-checkbox--checked)') + const eventsLocator = page.locator('.agenda .agenda-table-display-event') + + // Enter pick mode + await expect(pickBtnLocator).toBeVisible() + await pickBtnLocator.click() + await expect(pickBtnLocator).not.toBeVisible() + await expect(applyBtnLocator).toBeVisible() + await expect(discardBtnLocator).toBeVisible() + + // Pick 10 random sessions + await expect(checkboxesLocator).toHaveCount(meetingData.schedule.length) + const randSessionsRange = _.take(shuffle(_.range(meetingData.schedule.length)), 10) + for (const idx of randSessionsRange) { + await checkboxesLocator.nth(idx).click() + } + await applyBtnLocator.click() + await expect(applyBtnLocator).not.toBeVisible() + await expect(modifyBtnLocator).toBeVisible() + await expect(discardBtnLocator).toBeVisible() + await expect(eventsLocator).toHaveCount(10) + + // Change selection (keep existing 5 + add 5 new ones) + await modifyBtnLocator.click() + await expect(modifyBtnLocator).not.toBeVisible() + await expect(applyBtnLocator).toBeVisible() + await expect(discardBtnLocator).toBeVisible() + await expect(checkboxesLocator).toHaveCount(meetingData.schedule.length) + await expect(checkedboxesLocator).toHaveCount(10) + for (let idx = 0; idx < 5; idx++) { + await checkedboxesLocator.nth(idx).click() + } + const uncheckedCount = await uncheckedboxesLocator.count() + const uncheckedRandRange = _.take(shuffle(_.range(uncheckedCount - 1)), 5) + for (const idx of uncheckedRandRange) { + await uncheckedboxesLocator.nth(idx).click() + } + await applyBtnLocator.click() + await expect(eventsLocator).toHaveCount(10) + + // Discard should clear selection + await discardBtnLocator.click() + await expect(discardBtnLocator).not.toBeVisible() + await expect(modifyBtnLocator).not.toBeVisible() + await expect(pickBtnLocator).toBeVisible() + await expect(page.locator('.agenda .agenda-table-cell-check')).toHaveCount(0) + await expect(eventsLocator).toHaveCount(meetingData.schedule.length) + }) + + // -> CALENDAR VIEW + + test('agenda calendar view', async ({ page }) => { + const diagHeaderLocator = page.locator('.agenda-calendar .agenda-calendar-actions') + const tzButtonsLocator = diagHeaderLocator.locator('.n-button-group button') + const calHintLocator = page.locator('.agenda-calendar-hint > div') + + // Open dialog + await page.locator('#agenda-quickaccess-calview-btn').click() + await expect(page.locator('.agenda-calendar')).toBeVisible() + // Check header elements + await expect(page.locator('.agenda-calendar .n-drawer-header__main > span')).toContainText('Calendar View') + await expect(diagHeaderLocator.locator('> button')).toHaveCount(2) + await expect(diagHeaderLocator.locator('> button').first()).toContainText('Filter') + await expect(diagHeaderLocator.locator('> button').last()).toContainText('Close') + // ----------------------- + // Check timezone controls + // ----------------------- + await expect(diagHeaderLocator.locator('small').first()).toContainText('Timezone') + // Switch to local timezone + await tzButtonsLocator.nth(1).click() + await expect(tzButtonsLocator.nth(1)).toHaveClass(/n-button--primary-type/) + await expect(tzButtonsLocator.first()).not.toHaveClass(/n-button--primary-type/) + const localDateTime = DateTime.fromISO(meetingData.meeting.updated) + .setZone(BROWSER_TIMEZONE) + .setLocale(BROWSER_LOCALE) + .toFormat('DD \'at\' tt ZZZZ') + await expect(page.locator('.agenda h6').first()).toContainText(localDateTime) + // Switch to UTC + await tzButtonsLocator.last().click() + await expect(tzButtonsLocator.last()).toHaveClass(/n-button--primary-type/) + await expect(tzButtonsLocator.nth(1)).not.toHaveClass(/n-button--primary-type/) + const utcDateTime = DateTime.fromISO(meetingData.meeting.updated) + .setZone('utc') + .setLocale(BROWSER_LOCALE) + .toFormat('DD \'at\' tt ZZZZ') + await expect(page.locator('.agenda h6').first()).toContainText(utcDateTime) + // Switch back to meeting timezone + await tzButtonsLocator.first().click() + await expect(tzButtonsLocator.first()).toHaveClass(/n-button--primary-type/) + // ---------------------- + // Check Filters Shortcut + // ---------------------- + await diagHeaderLocator.locator('> button').first().click() + // Only check whether the dialog is shown. We already tested the dialog earlier. + await expect(page.locator('.agenda-personalize')).toBeVisible() + // Close dialog + await page.locator('.agenda-personalize .agenda-personalize-actions > button').nth(1).click() + await expect(page.locator('.agenda-personalize')).not.toBeVisible() + // ------------------ + // Check Event Dialog + // ------------------ + const firstEvent = meetingData.schedule[0] + const materialsUrl = (new URL(firstEvent.agenda.url)).pathname + const materialsInfo = { + url: firstEvent.agenda.url, + slides: [], + minutes: null + } + await page.route(`**/api/meeting/session/${firstEvent.sessionId}/materials`, route => { + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify(materialsInfo) + }) + }) + await page.route(materialsUrl, route => { + route.fulfill({ + status: 200, + contentType: 'text/plain', + body: 'The internet is a series of tubes.' + }) + }) + await page.locator('.agenda-calendar .fc-event').first().click() + // Only check whether the dialog is shown. We already tested the dialog earlier. + await expect(page.locator('.agenda-eventdetails')).toBeVisible() + // Close dialog + await page.locator('.agenda-eventdetails .n-card-header__extra > .detail-header > button').click() + // ----------- + // Event Hover + // ----------- + // First Event + let eventStart = DateTime.fromISO(firstEvent.startDateTime) + let eventEnd = eventStart.plus({ seconds: firstEvent.duration }) + let hoverDateTime = `${eventStart.toFormat('DDDD')} from ${eventStart.toFormat('T')} to ${eventEnd.toFormat('T')}` + await page.locator('.agenda-calendar .fc-event').first().hover() + await expect(calHintLocator.first()).toContainText(firstEvent.name) + await expect(calHintLocator.nth(1)).toContainText(firstEvent.location.short) + await expect(calHintLocator.nth(1)).toContainText(firstEvent.room) + await expect(calHintLocator.nth(2)).toContainText(hoverDateTime) + // Second Event + const secondEvent = meetingData.schedule[1] + eventStart = DateTime.fromISO(secondEvent.startDateTime) + eventEnd = eventStart.plus({ seconds: secondEvent.duration }) + hoverDateTime = `${eventStart.toFormat('DDDD')} from ${eventStart.toFormat('T')} to ${eventEnd.toFormat('T')}` + await page.locator('.agenda-calendar .fc-event').nth(1).hover() + await expect(calHintLocator.first()).toContainText(secondEvent.name) + await expect(calHintLocator.nth(1)).toContainText(secondEvent.location.short) + await expect(calHintLocator.nth(1)).toContainText(secondEvent.room) + await expect(calHintLocator.nth(2)).toContainText(hoverDateTime) + // ------------------------------ + // Click Close should hide dialog + // ------------------------------ + await diagHeaderLocator.locator('button').last().click() + await expect(page.locator('.agenda-calendar')).not.toBeVisible() + }) + + // -> SETTINGS DIALOG + + test('agenda settings', async ({ page, browserName }) => { + // Open dialog + await page.locator('.meeting-nav + button').click() + await expect(page.locator('.agenda-settings')).toBeVisible() + // Check header elements + await expect(page.locator('.agenda-settings .n-drawer-header__main > span')).toContainText('Agenda Settings') + await expect(page.locator('.agenda-settings .agenda-settings-actions > button')).toHaveCount(2) + await expect(page.locator('.agenda-settings .agenda-settings-actions > button').first()).toBeVisible() + await expect(page.locator('.agenda-settings .agenda-settings-actions > button').last()).toContainText('Close') + + // ------------------- + // Check export config + // ------------------- + await page.locator('.agenda-settings .agenda-settings-actions > button').first().click() + const [download] = await Promise.all([ + page.waitForEvent('download'), + page.locator('.n-dropdown-option:has-text("Export Configuration")').click() + ]) + + const downloadPath = await download.path() + try { + const downloadedConfig = JSON.parse(await fs.readFile(downloadPath, 'utf8')) + const expectedConfig = JSON.parse(await fs.readFile('data/agenda-settings.json', 'utf8')) + await expect(downloadedConfig).toEqual(expectedConfig) + } catch (err) { + expect(err).toBeUndefined() + } + + // ------------------- + // Check import config + // ------------------- + await test.step('import config', async () => { + if (browserName === 'chromium') { + // Chromium use the experimental file selector API so this test won't work, skipping... + // See https://github.com/microsoft/playwright/issues/8850') + return + } + await page.locator('.agenda-settings .agenda-settings-actions > button').first().click() + const [fileChooser] = await Promise.all([ + page.waitForEvent('filechooser'), + page.locator('.n-dropdown-option:has-text("Import Configuration")').click() + ]) + await fileChooser.setFiles('data/agenda-settings.json') + await expect(page.locator('.n-message')).toContainText('Config imported successfully') + }) + + // ----------------------- + // Check timezone controls + // ----------------------- + const tzMeetingBtnLocator = page.locator('#agenda-settings-tz-btn button:first-child') + const tzLocalBtnLocator = page.locator('#agenda-settings-tz-btn button:nth-child(2)') + const tzUtcBtnLocator = page.locator('#agenda-settings-tz-btn button:last-child') + await expect(page.locator('.agenda-settings-content > .n-divider').first()).toContainText('Timezone') + // Switch to local timezone + await tzLocalBtnLocator.click() + await expect(tzLocalBtnLocator).toHaveClass(/n-button--primary-type/) + await expect(tzMeetingBtnLocator).not.toHaveClass(/n-button--primary-type/) + const localDateTime = DateTime.fromISO(meetingData.meeting.updated) + .setZone(BROWSER_TIMEZONE) + .setLocale(BROWSER_LOCALE) + .toFormat('DD \'at\' tt ZZZZ') + await expect(page.locator('.agenda h6').first()).toContainText(localDateTime) + // Switch to UTC + await tzUtcBtnLocator.click() + await expect(tzUtcBtnLocator).toHaveClass(/n-button--primary-type/) + await expect(tzLocalBtnLocator).not.toHaveClass(/n-button--primary-type/) + const utcDateTime = DateTime.fromISO(meetingData.meeting.updated) + .setZone('utc') + .setLocale(BROWSER_LOCALE) + .toFormat('DD \'at\' tt ZZZZ') + await expect(page.locator('.agenda h6').first()).toContainText(utcDateTime) + // Switch back to meeting timezone + await tzMeetingBtnLocator.click() + await expect(tzMeetingBtnLocator).toHaveClass(/n-button--primary-type/) + await expect(page.locator('#agenda-settings-tz-ddn')).toContainText('Tokyo') + + // ---------------------- + // Check display controls + // ---------------------- + await expect(page.locator('.agenda-settings-content > .n-divider').nth(1)).toContainText('Display') + // -> Test Current Meeting Info Note toggle + const infonoteSwitchLocator = page.locator('#agenda-settings-tgl-infonote div[role=switch]') + await infonoteSwitchLocator.click() + await expect(page.locator('.agenda .agenda-infonote')).not.toBeVisible() + await infonoteSwitchLocator.click() + await expect(page.locator('.agenda .agenda-infonote')).toBeVisible() + // -> Test Event Icons toggle + const eventiconsSwitchLocator = page.locator('#agenda-settings-tgl-eventicons div[role=switch]') + await eventiconsSwitchLocator.click() + await expect(page.locator('.agenda .agenda-event-icon')).toHaveCount(0) + await eventiconsSwitchLocator.click() + await expect(page.locator('.agenda .agenda-event-icon')).not.toHaveCount(0) + // -> Test Floor Indicators toggle + const floorindSwitchLocator = page.locator('#agenda-settings-tgl-floorind div[role=switch]') + await floorindSwitchLocator.click() + await expect(page.locator('.agenda .agenda-table-cell-room > span.badge')).toHaveCount(0) + await floorindSwitchLocator.click() + await expect(page.locator('.agenda .agenda-table-cell-room > span.badge')).not.toHaveCount(0) + // -> Test Group Area Indicators toggle + const groupindSwitchLocator = page.locator('#agenda-settings-tgl-groupind div[role=switch]') + await groupindSwitchLocator.click() + await expect(page.locator('.agenda .agenda-table-cell-group > span.badge')).toHaveCount(0) + await groupindSwitchLocator.click() + await expect(page.locator('.agenda .agenda-table-cell-group > span.badge')).not.toHaveCount(0) + // -> Test Bolder Text toggle + const boldertxtSwitchLocator = page.locator('#agenda-settings-tgl-boldertxt div[role=switch]') + await boldertxtSwitchLocator.click() + await expect(page.locator('.agenda')).toHaveClass(/bolder-text/) + await boldertxtSwitchLocator.click() + await expect(page.locator('.agenda')).not.toHaveClass(/bolder-text/) + + // ---------------------------- + // Check calendar view controls + // ---------------------------- + await expect(page.locator('.agenda-settings-content > .n-divider').nth(2)).toContainText('Calendar View') + // TODO: calendar view checks + // ---------------------------- + // Check calendar view controls + // ---------------------------- + await expect(page.locator('.agenda-settings-content > .n-divider').nth(3)).toContainText('Custom Colors / Tags') + // ------------------------------ + // Click Close should hide dialog + // ------------------------------ + await page.locator('.agenda-settings .agenda-settings-actions > button').last().click() + await expect(page.locator('.agenda-settings')).not.toBeVisible() + }) + + // -> ADD TO CALENDAR + + test('agenda add to calendar', async ({ page }) => { + await expect(page.locator('#agenda-quickaccess-addtocal-btn')).toContainText('Add to your calendar') + await page.locator('#agenda-quickaccess-addtocal-btn').click() + const ddnLocator = page.locator('.n-dropdown-menu > .n-dropdown-option') + await expect(ddnLocator).toHaveCount(2) + await expect(ddnLocator.first()).toContainText('Subscribe') + await expect(ddnLocator.last()).toContainText('Download') + + // Intercept Download ICS Call + await page.route(`**/meeting/${meetingData.meeting.number}/agenda.ics`, route => { + route.fulfill({ + status: 200, + contentType: 'text/calendar', + headers: { + 'Content-disposition': 'attachment; filename=agenda.ics' + }, + body: 'test' + }) + }) + + // Cannot test if webcal link works because external app handling not supported: + // See https://github.com/microsoft/playwright/issues/11014 + + // Test Download ICS + const [download] = await Promise.all([ + page.waitForEvent('download'), + ddnLocator.nth(1).click() + ]) + const downloadPath = await download.path() + try { + const testIcs = await fs.readFile(downloadPath, 'utf8') + await expect(testIcs).toEqual('test') + } catch (err) { + expect(err).toBeUndefined() + } + }) + + // -> JUMP TO DAY + + test('agenda jump to specific days', async ({ page, browserName }) => { + // -> Separator label + await expect(page.locator('div[role=separator]:above(.agenda .agenda-quickaccess-jumpto)').first()).toContainText('Jump to...') + + // -> Check nav items + const navItemLocator = page.locator('.agenda .agenda-quickaccess-jumpto > .nav-item') + await expect(navItemLocator).toHaveCount(7) + for (let idx = 0; idx < 7; idx++) { + const localDateTime = DateTime.fromISO(meetingData.meeting.startDate, { zone: BROWSER_TIMEZONE }) + .setZone(BROWSER_TIMEZONE) + .setLocale(BROWSER_LOCALE) + .plus({ days: idx }) + .toLocaleString(DateTime.DATE_HUGE) + await expect(navItemLocator.nth(idx)).toContainText(localDateTime) + } + + // -> Jump to specific days + if (browserName === 'chromium') { + // Exclude firefox as this test doesn't run reliably on it in CI + for (const idx of [6, 1, 5]) { + await navItemLocator.nth(idx).locator('a').click() + await setTimeout(2500) + await expect(await commonHelper.isIntersectingViewport(page, `.agenda-table-display-day >> nth=${idx}`)).toBeTruthy() + } + } + }) + + // -> Color Tagging + + test('agenda colors/tags assignment', async ({ page }) => { + test.slow() // Triple the default timeout + + const openBtnLocator = page.locator('.agenda .agenda-table-colorpicker') + const colorLgdLocator = page.locator('.agenda .agenda-colorlegend') + const eventRowsLocator = page.locator('.agenda .agenda-table-display-event') + const colorLgdSwitchLocator = page.locator('#agenda-settings-tgl-colorlgd div[role=switch]') + const colorNamesIptLocator = page.locator('.agenda-settings-colors-row .n-input') + const randColorNames = _.times(5, faker.music.genre) + + await expect(openBtnLocator).toBeVisible() + await openBtnLocator.click() + + // Check Legend + await expect(colorLgdLocator).toBeVisible() + await expect(colorLgdLocator.locator('> *')).toHaveCount(6) + await expect(colorLgdLocator.locator('> * >> nth=0')).toContainText('Color Legend') + + // Check color dots + await expect(page.locator('.agenda .agenda-table-display-event .agenda-table-colorindicator.is-active')).toHaveCount(meetingData.schedule.length) + + // ------------------------- + // Assign colors to sessions + // ------------------------- + + for (let idx = 0; idx < 5; idx++) { + await expect(eventRowsLocator.nth(idx).locator('.agenda-table-colorindicator')).toBeVisible() + await eventRowsLocator.nth(idx).locator('.agenda-table-colorindicator').click() + await expect(eventRowsLocator.nth(idx).locator('.agenda-table-colorchoices')).toBeVisible() + await expect(eventRowsLocator.nth(idx).locator('.agenda-table-colorchoices > .agenda-table-colorchoice')).toHaveCount(6) + await eventRowsLocator.nth(idx).locator('.agenda-table-colorchoices > .agenda-table-colorchoice').nth(idx + 1).click() + await expect(eventRowsLocator.nth(idx).locator('.agenda-table-colorchoices')).not.toBeVisible() + } + + // Exit color assignment mode + await openBtnLocator.click() + await expect(page.locator('.agenda .agenda-table-display-event .agenda-table-colorindicator')).toHaveCount(5) + await expect(page.locator('.agenda .agenda-table-display-event .agenda-table-colorindicator.is-active')).toHaveCount(0) + await expect(colorLgdLocator).toBeVisible() + + // ---------------------------------------- + // Change color legend from settings dialog + // ---------------------------------------- + // Open dialog + await page.locator('.meeting-nav + button').click() + await expect(page.locator('.agenda-settings')).toBeVisible() + // Toggle color legend switch + await colorLgdSwitchLocator.click() + // Legend should be hidden + await expect(colorLgdLocator).not.toBeVisible() + // Toggle color legend back + await colorLgdSwitchLocator.click() + // Legend should be visible + await expect(colorLgdLocator).toBeVisible() + // Change color names + for (let idx = 0; idx < 5; idx++) { + await colorNamesIptLocator.nth(idx).locator('input').fill(randColorNames[idx]) + await setTimeout(1000) // Account for change debounce + await expect(colorLgdLocator.locator(`> * >> nth=${idx + 1}`)).toContainText(randColorNames[idx]) + } + // Close dialog + await page.locator('.agenda-settings .agenda-settings-actions > button').last().click() + await expect(page.locator('.agenda-settings')).not.toBeVisible() + + // --------------- + // Unassign colors + // --------------- + // Re-enter color assignment mode + await openBtnLocator.click() + // Remove color selection + for (let idx = 0; idx < 5; idx++) { + await expect(eventRowsLocator.nth(idx).locator('.agenda-table-colorindicator')).toBeVisible() + await eventRowsLocator.nth(idx).locator('.agenda-table-colorindicator').click() + await expect(eventRowsLocator.nth(idx).locator('.agenda-table-colorchoices')).toBeVisible() + await expect(eventRowsLocator.nth(idx).locator('.agenda-table-colorchoices > .agenda-table-colorchoice')).toHaveCount(6) + await eventRowsLocator.nth(idx).locator('.agenda-table-colorchoices > .agenda-table-colorchoice').first().click() + await expect(eventRowsLocator.nth(idx).locator('.agenda-table-colorchoices')).not.toBeVisible() + } + // Exit color assignment mode + await openBtnLocator.click() + // No colored dots should appear + await expect(page.locator('.agenda .agenda-table-display-event .agenda-table-colorindicator')).toHaveCount(0) + // Clear all colors from Settings menu + await page.locator('.meeting-nav + button').click() + await expect(page.locator('.agenda-settings')).toBeVisible() + await page.locator('.agenda-settings .agenda-settings-actions > button').first().click() + await page.locator('.n-dropdown-option:has-text("Clear Color")').click() + // Color legend should no longer be displayed + await expect(colorLgdLocator).not.toBeVisible() + await expect(page.locator('.agenda-settings')).not.toBeVisible() + }) +}) + +// ==================================================================== +// AGENDA (future meeting) | DESKTOP viewport +// ==================================================================== + +test.describe('future - desktop', () => { + let meetingData + + test.beforeAll(async () => { + // Generate meeting data + meetingData = meetingHelper.generateAgendaResponse({ dateMode: 'future' }) + }) + + test.beforeEach(async ({ page }) => { + // Intercept Meeting Data API + await page.route(`**/api/meeting/${meetingData.meeting.number}/agenda-data`, route => { + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify(meetingData) + }) + }) + + await page.setViewportSize({ + width: viewports.desktop[0], + height: viewports.desktop[1] + }) + + // Visit agenda page and await Meeting Data API call to complete + await Promise.all([ + page.waitForResponse(`**/api/meeting/${meetingData.meeting.number}/agenda-data`), + page.goto(`/meeting/${meetingData.meeting.number}/agenda-neue`) + ]) + + // Wait for page to be ready + await page.locator('.agenda h1').waitFor({ state: 'visible' }) + await setTimeout(500) + }) + + // -> SCHEDULE LIST -> Warning + + test('has current meeting warning', async ({ page }) => { + await expect(page.locator('.agenda .agenda-currentwarn')).toContainText('Note: IETF agendas are subject to change, up to and during a meeting.') + }) + + // -> SCHEDULE LIST -> Table Events + + test('has schedule list table events', async ({ page }) => { + test.slow() // Triple the default timeout + + const eventRowsLocator = page.locator('.agenda-table .agenda-table-display-event') + + await expect(eventRowsLocator).toHaveCount(meetingData.schedule.length) + + for (let idx = 0; idx < meetingData.schedule.length; idx++) { + const row = eventRowsLocator.nth(idx) + const event = meetingData.schedule[idx] + + // ----------------------- + // Buttons / Status Column + // ----------------------- + if (event.status === 'sched') { + const eventButtons = row.locator('.agenda-table-cell-links > .agenda-table-cell-links-buttons') + if (event.flags.showAgenda || ['regular', 'plenary'].includes(event.type)) { + if (event.flags.agenda) { + // Show meeting materials button + await expect(eventButtons.locator('i.bi.bi-collection')).toBeVisible() + // ZIP materials button + await expect(eventButtons.locator(`#btn-lnk-${event.id}-tar`)).toHaveAttribute('href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.tgz`) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-tar > i.bi`)).toBeVisible() + // PDF materials button + await expect(eventButtons.locator(`#btn-lnk-${event.id}-pdf`)).toHaveAttribute('href', `/meeting/${meetingData.meeting.number}/agenda/${event.acronym}-drafts.pdf`) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-pdf > i.bi`)).toBeVisible() + } else if (event.type === 'regular') { + // No meeting materials yet warning badge + await expect(eventButtons.locator('.no-meeting-materials')).toBeVisible() + } + // Notepad button + const hedgeDocLink = `https://notes.ietf.org/notes-ietf-${meetingData.meeting.number}-${event.type === 'plenary' ? 'plenary' : event.acronym}` + await expect(eventButtons.locator(`#btn-lnk-${event.id}-note`)).toHaveAttribute('href', hedgeDocLink) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-note > i.bi`)).toBeVisible() + // Chat room + await expect(eventButtons.locator(`#btn-lnk-${event.id}-room`)).toHaveAttribute('href', event.links.chat) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-room > i.bi`)).toBeVisible() + // Video Stream + if (event.links.videoStream) { + await expect(eventButtons.locator(`#btn-lnk-${event.id}-video`)).toHaveAttribute('href', meetingHelper.formatLinkUrl(event.links.videoStream, event, meetingData.meeting.number)) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-video > i.bi`)).toBeVisible() + } + // Onsite Tool + if (event.links.onsitetool) { + await expect(eventButtons.locator(`#btn-lnk-${event.id}-onsitetool`)).toHaveAttribute('href', meetingHelper.formatLinkUrl(event.links.onsitetool, event, meetingData.meeting.number)) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-onsitetool > i.bi`)).toBeVisible() + } + // Audio Stream + if (event.links.audioStream) { + await expect(eventButtons.locator(`#btn-lnk-${event.id}-audio`)).toHaveAttribute('href', meetingHelper.formatLinkUrl(event.links.audioStream, event, meetingData.meeting.number)) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-audio > i.bi`)).toBeVisible() + } + // Remote Call-In + let remoteCallInUrl = null + if (event.note) { + remoteCallInUrl = meetingHelper.findFirstConferenceUrl(event.note) + } + if (!remoteCallInUrl && event.remoteInstructions) { + remoteCallInUrl = meetingHelper.findFirstConferenceUrl(event.remoteInstructions) + } + if (!remoteCallInUrl && event.links.webex) { + remoteCallInUrl = event.links.webex + } + if (remoteCallInUrl) { + await expect(eventButtons.locator(`#btn-lnk-${event.id}-remotecallin`)).toHaveAttribute('href', remoteCallInUrl) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-remotecallin > i.bi`)).toBeVisible() + } + // calendar + if (event.links.calendar) { + await expect(eventButtons.locator(`#btn-lnk-${event.id}-calendar`)).toHaveAttribute('href', event.links.calendar) + await expect(eventButtons.locator(`#btn-lnk-${event.id}-calendar > i.bi`)).toBeVisible() + } + } else { + await expect(eventButtons).toHaveCount(0) + } + } + } + }) +}) + +// ==================================================================== +// AGENDA (live meeting) | DESKTOP viewport +// ==================================================================== + +test.describe('live - desktop', () => { + let meetingData + const currentTime = DateTime.fromISO('2022-02-01T13:45:15', { zone: 'Asia/Tokyo' }) + const liveEvents = [] + let lastLiveEvent = null + + test.beforeAll(async () => { + // Generate meeting data + meetingData = meetingHelper.generateAgendaResponse({ dateMode: 'current' }) + + // Calculate live events + let lastEventStartTime = null + for (const event of meetingData.schedule) { + const eventStart = DateTime.fromISO(event.startDateTime, { zone: 'Asia/Tokyo' }) + const eventEnd = eventStart.plus({ seconds: event.duration }) + if (currentTime >= eventStart && currentTime < eventEnd) { + liveEvents.push(event) + // -> Find last event before current time + if (lastEventStartTime === eventStart.toMillis()) { + continue + } else { + lastEventStartTime = eventStart.toMillis() + lastLiveEvent = event + } + } + // -> Skip future events + if (eventStart > currentTime) { + break + } + } + }) + + test.beforeEach(async ({ page }) => { + // Intercept Meeting Data API + await page.route(`**/api/meeting/${meetingData.meeting.number}/agenda-data`, route => { + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify(meetingData) + }) + }) + + await page.setViewportSize({ + width: viewports.desktop[0], + height: viewports.desktop[1] + }) + + // Override Date in page to fixed time + await page.addInitScript(`{ + // Extend Date constructor to default to fixed time + Date = class extends Date { + constructor(...args) { + if (args.length === 0) { + super(${currentTime.toMillis()}); + } else { + super(...args); + } + } + } + // Override Date.now() to start from fixed time + const __DateNowOffset = ${currentTime.toMillis()} - Date.now(); + const __DateNow = Date.now; + Date.now = () => __DateNow() + __DateNowOffset; + }`) + + // Visit agenda page and await Meeting Data API call to complete + await Promise.all([ + page.waitForResponse(`**/api/meeting/${meetingData.meeting.number}/agenda-data`), + page.goto(`/meeting/${meetingData.meeting.number}/agenda-neue`) + ]) + + // Wait for page to be ready + await page.locator('.agenda h1').waitFor({ state: 'visible' }) + await setTimeout(500) + }) + + // -> LIVE MEETING ELEMENTS + + test('live meeting elements', async ({ page }) => { + const navItemsLocator = page.locator('.agenda .agenda-quickaccess-jumpto > .nav-item') + // Highlighted Live Sessions + await expect(page.locator('.agenda .agenda-table-display-event.agenda-table-live')).toHaveCount(liveEvents.length) + + // Live Red Line + await expect(page.locator('.agenda .agenda-table-redhand')).toBeVisible() + const expectedOffsetTop = await page.locator(`#agenda-rowid-${lastLiveEvent.id}`).evaluate(node => node.offsetTop) + const offsetTop = await page.locator('.agenda .agenda-table-redhand').evaluate(node => node.offsetTop) + const isCloseEnough = offsetTop >= expectedOffsetTop - 15 && offsetTop <= expectedOffsetTop + 15 + await expect(isCloseEnough).toBeTruthy() + + // Jump to Now + await expect(navItemsLocator).toHaveCount(8) + await expect(navItemsLocator.first()).toContainText('Now') + await navItemsLocator.first().click() + await setTimeout(2500) + // red line position isn't pixel perfect on CI, so accept some range + const redlineBoundingBox = await page.locator('.agenda .agenda-table-redhand').boundingBox() + await expect(redlineBoundingBox.y >= -20 && redlineBoundingBox.y <= 20).toBeTruthy() + }) + + // -> HIDE RED LINE + + test('live red line toggle', async ({ page }) => { + // Open settings dialog + await page.locator('.meeting-nav + button').click() + await expect(page.locator('.agenda-settings')).toBeVisible() + // Toggle red line switch + const redlineSwitchLocator = page.locator('#agenda-settings-tgl-redline div[role=switch]') + await redlineSwitchLocator.click() + await expect(page.locator('.agenda .agenda-table-redhand')).not.toBeVisible() + await redlineSwitchLocator.click() + await expect(page.locator('.agenda .agenda-table-redhand')).toBeVisible() + // Close dialog + await page.locator('.agenda-settings .agenda-settings-actions > button').last().click() + await expect(page.locator('.agenda-settings')).not.toBeVisible() + }) +}) + +// ==================================================================== +// AGENDA (past meeting) | SMALL DESKTOP/TABLET/MOBILE viewports +// ==================================================================== + +test.describe('past - small screens', () => { + let meetingData + + test.beforeAll(async () => { + // Generate meeting data + meetingData = meetingHelper.generateAgendaResponse({ dateMode: 'past' }) + }) + + for (const vp of ['smallDesktop', 'tablet', 'mobile']) { + test(vp, async ({ page }) => { + // Intercept Meeting Data API + await page.route(`**/api/meeting/${meetingData.meeting.number}/agenda-data`, route => { + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify(meetingData) + }) + }) + + await page.setViewportSize({ + width: viewports[vp][0], + height: viewports[vp][1] + }) + + // Visit agenda page and await Meeting Data API call to complete + await Promise.all([ + page.waitForResponse(`**/api/meeting/${meetingData.meeting.number}/agenda-data`), + page.goto(`/meeting/${meetingData.meeting.number}/agenda-neue`) + ]) + + // Wait for page to be ready + await page.locator('.agenda h1').waitFor({ state: 'visible' }) + await setTimeout(500) + + // -> NARROW QUICK ACCESS PANEL (smallDesktop only) + + if (vp === 'smallDesktop') { + // Alternate labels for buttons + await expect(page.locator('#agenda-quickaccess-filterbyareagroups-btn')).toContainText('Filter...') + await expect(page.locator('#agenda-quickaccess-filterbyareagroups-btn + button')).toContainText('Pick...') + await expect(page.locator('#agenda-quickaccess-calview-btn')).toContainText('Cal View') + await expect(page.locator('#agenda-quickaccess-calview-btn + button')).toContainText('.ics') + // -> Shorter date labels for Jump to buttons + const jumpNavLocator = page.locator('.agenda .agenda-quickaccess-jumpto > .nav-item') + await expect(jumpNavLocator).toHaveCount(7) + for (let idx = 0; idx < 7; idx++) { + const localDateTime = DateTime.fromISO(meetingData.meeting.startDate, { zone: meetingData.meeting.timezone }) + .setLocale(BROWSER_LOCALE) + .plus({ days: idx }) + .toFormat('ccc LLL d') + await expect(jumpNavLocator.nth(idx)).toContainText(localDateTime) + await expect(jumpNavLocator.nth(idx).locator('i.bi')).not.toBeVisible() + } + } + + // Check for elements that should not exist on smaller screens + + if (vp === 'tablet' || vp === 'mobile') { + // has no updated date + await expect(page.locator('.agenda > h4 > h6')).not.toBeVisible() + + // has no timezone dropdown selector + await expect(page.locator('.agenda .agenda-tz-selector + .agenda-timezone-ddn')).not.toBeVisible() + + // has no floor + group indicators + const floorIndLocator = page.locator('.agenda .agenda-table-cell-room > .badge') + const floorIndCount = await floorIndLocator.count() + for (let idx = 0; idx < floorIndCount; idx++) { + await expect(floorIndLocator.nth(idx)).not.toBeVisible() + } + await expect(page.locator('.agenda .agenda-table-cell-group > .badge')).toHaveCount(0) + + // Session buttons should be hidden in a dropdown menu + const linkBtnsLocator = page.locator('.agenda .agenda-table-display-event .agenda-table-cell-links-buttons') + const linkBtnsCount = await linkBtnsLocator.count() + for (let idx; idx < linkBtnsCount; idx++) { + await expect(linkBtnsLocator.nth(idx).locator('> *')).toHaveCount(1) + } + + // TODO: Check for dropdown links once changed to a custom panel with standard links + + // Bottom Mobile Bar + const barBtnLocator = page.locator('.agenda-mobile-bar > button') + + // has no lateral quick access panel + await expect(page.locator('.agenda-quickaccess')).not.toBeVisible() + + // has a bottom mobile bar + await expect(page.locator('.agenda-mobile-bar')).toBeVisible() + await expect(barBtnLocator).toHaveCount(4) + await expect(barBtnLocator.first()).toContainText('Filters') + await expect(barBtnLocator.nth(1)).toContainText('Cal') + await expect(barBtnLocator.nth(2)).toContainText('.ics') + await expect(barBtnLocator.last().locator('> *')).toHaveCount(1) + await expect(barBtnLocator.last().locator('> *')).toHaveClass(/bi/) + + // can open the filters overlay + await barBtnLocator.first().click() + await expect(page.locator('.agenda-personalize')).toBeVisible() + await page.locator('.agenda-personalize .agenda-personalize-actions > button').nth(1).click() + await expect(page.locator('.agenda-personalize')).toBeHidden() + + // can open the calendar view + await barBtnLocator.nth(1).click() + await expect(page.locator('.agenda-calendar')).toBeVisible() + await page.locator('.agenda-calendar .agenda-calendar-actions > button').nth(1).click() + await expect(page.locator('.agenda-calendar')).toBeHidden() + + // can open the ics dropdown + await barBtnLocator.nth(2).click() + const calDdnLocator = page.locator('.n-dropdown-menu > .n-dropdown-option') + await expect(calDdnLocator).toHaveCount(2) + await expect(calDdnLocator.first()).toContainText('Subscribe') + await expect(calDdnLocator.last()).toContainText('Download') + + // can open the settings overlay + await barBtnLocator.last().click() + await expect(page.locator('.agenda-settings')).toBeVisible() + await page.locator('.agenda-settings .agenda-settings-actions > button').nth(1).click() + await expect(page.locator('.agenda-settings')).toBeHidden() + } + }) + } +}) diff --git a/playwright/tests/meeting/floor-plan.spec.js b/playwright/tests/meeting/floor-plan.spec.js new file mode 100644 index 000000000..c997308ef --- /dev/null +++ b/playwright/tests/meeting/floor-plan.spec.js @@ -0,0 +1,129 @@ +const { test, expect } = require('@playwright/test') +const { faker } = require('@faker-js/faker') +const seedrandom = require('seedrandom') +const meetingGenerator = require('../../helpers/meeting.js') +const viewports = require('../../helpers/viewports') +const { setTimeout } = require('timers/promises') + +const TEST_SEED = 123 + +// Set randomness seed +seedrandom(TEST_SEED.toString(), { global: true }) +faker.seed(TEST_SEED) + +// ==================================================================== +// FLOOR-PLAN-NEUE | All Viewports +// ==================================================================== + +test.describe('floor-plan', () => { + let meetingData + + test.beforeAll(async () => { + // Generate meeting data (without schedule data) + meetingData = meetingGenerator.generateAgendaResponse({ dateMode: 'past', skipSchedule: true }) + }) + + for (const vp of ['desktop', 'smallDesktop', 'tablet', 'mobile']) { + test(vp, async ({ page }) => { + // Intercept Meeting Data API + await page.route(`**/api/meeting/${meetingData.meeting.number}/agenda-data`, route => { + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify(meetingData) + }) + }) + + await page.setViewportSize({ + width: viewports[vp][0], + height: viewports[vp][1] + }) + + // Visit floor plan page and await Meeting Data API call to complete + await Promise.all([ + page.waitForResponse(`**/api/meeting/${meetingData.meeting.number}/agenda-data`), + page.goto(`/meeting/${meetingData.meeting.number}/floor-plan-neue`) + ]) + + // Wait for page to be ready + await page.locator('.floorplan h1').waitFor({ state: 'visible' }) + await setTimeout(500) + + // -> HEADER + + await test.step(`has IETF ${meetingData.meeting.number} title`, async () => { + await expect(page.locator('.floorplan h1').first()).toContainText(`IETF ${meetingData.meeting.number} Floor Plan`) + }) + await test.step('has meeting city subtitle', async () => { + await expect(page.locator('.floorplan h4').first()).toContainText(meetingData.meeting.city) + }) + await test.step('has meeting date subtitle', async () => { + await expect(page.locator('.floorplan h4').first()).toContainText(/[a-zA-Z] [0-9]{1,2} - ([a-zA-Z]+ )?[0-9]{1,2}, [0-9]{4}/i) + }) + + // -> NAV + + await test.step('has the correct navigation items', async () => { + const navItemsLocator = page.locator('.floorplan .meeting-nav > li') + await expect(navItemsLocator).toHaveCount(3) + await expect(navItemsLocator.first()).toContainText('Agenda') + await expect(navItemsLocator.nth(1)).toContainText('Floor plan') + await expect(navItemsLocator.last()).toContainText('Plaintext') + }) + + // -> FLOORS + + await test.step('can switch between floors', async () => { + const floorsLocator = page.locator('.floorplan .floorplan-floors > .nav-link') + const floorImageLocator = page.locator('.floorplan .floorplan-plan > img') + + await expect(floorsLocator).toHaveCount(meetingData.floors.length) + for (let idx = 0; idx < meetingData.floors.length; idx++) { + await expect(floorsLocator.nth(idx)).toContainText(meetingData.floors[idx].name) + await floorsLocator.nth(idx).click() + await expect(floorsLocator.nth(idx)).toHaveClass(/active/) + await expect(page.locator('.floorplan .floorplan-floors > .nav-link:not(.active)')).toHaveCount(meetingData.floors.length - 1) + // Wait for image to load + verify + await expect(floorImageLocator).toBeVisible() + await setTimeout(100) + await expect(await floorImageLocator.evaluate(node => node.naturalWidth)).toBeGreaterThan(1) + } + }) + + // -> ROOMS + + await test.step('can select rooms', async () => { + const roomsLocator = page.locator('.floorplan .floorplan-rooms > .list-group-item') + const floorImageLocator = page.locator('.floorplan .floorplan-plan > img') + const pinLocator = page.locator('.floorplan .floorplan-plan-pin') + const floor = meetingData.floors[0] + await page.locator('.floorplan .floorplan-floors > .nav-link').first().click() + await expect(roomsLocator).toHaveCount(floor.rooms.length) + for (let idx = 0; idx < floor.rooms.length; idx++) { + // Room List + const room = floor.rooms[idx] + await expect(roomsLocator.nth(idx).locator('strong')).toContainText(room.name) + await expect(roomsLocator.nth(idx).locator('strong + small')).toContainText(room.functionalName) + await expect(roomsLocator.nth(idx).locator('.badge')).toContainText(floor.short) + await roomsLocator.nth(idx).click() + await expect(roomsLocator.nth(idx)).toHaveClass(/active/) + await expect(page.locator('.floorplan .floorplan-rooms > .list-group-item:not(.active)')).toHaveCount(floor.rooms.length - 1) + // URL query segment + await expect(page.url()).toMatch(`room=${room.slug}`) + // Pin Drop + const planxRatio = (await floorImageLocator.evaluate(node => node.width)) / floor.width + const planyRatio = (await floorImageLocator.evaluate(node => node.height)) / floor.height + await expect(pinLocator).toBeVisible() + // eslint-disable-next-line no-useless-escape, quotes + const pinMarginLeft = await page.evaluate(`parseInt(window.getComputedStyle(document.querySelector('.floorplan .floorplan-plan-pin')).getPropertyValue('margin-left').match(/\\d+/))`) + const xPos = Math.round((room.left + (room.right - room.left) / 2) * planxRatio) - 25 + pinMarginLeft + const yPos = Math.round((room.top + (room.bottom - room.top) / 2) * planyRatio) - 40 + const offsetLeft = await pinLocator.evaluate(node => node.offsetLeft) + const offsetTop = await pinLocator.evaluate(node => node.offsetTop) + expect(offsetLeft).toBe(xPos) + expect(offsetTop).toBe(yPos) + } + }) + }) + } +}) diff --git a/yarn.lock b/yarn.lock index 3e90ff4c3..de95c28d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2424,6 +2424,15 @@ browserlist@latest: languageName: node linkType: hard +"builtins@npm:^5.0.1": + version: 5.0.1 + resolution: "builtins@npm:5.0.1" + dependencies: + semver: ^7.0.0 + checksum: 66d204657fe36522822a95b288943ad11b58f5eaede235b11d8c4edaa28ce4800087d44a2681524c340494aadb120a0068011acabe99d30e8f11a7d826d83515 + languageName: node + linkType: hard + "c8@npm:7.12.0": version: 7.12.0 resolution: "c8@npm:7.12.0" @@ -3999,6 +4008,24 @@ browserlist@latest: languageName: node linkType: hard +"eslint-plugin-n@npm:15.2.5": + version: 15.2.5 + resolution: "eslint-plugin-n@npm:15.2.5" + dependencies: + builtins: ^5.0.1 + eslint-plugin-es: ^4.1.0 + eslint-utils: ^3.0.0 + ignore: ^5.1.1 + is-core-module: ^2.10.0 + minimatch: ^3.1.2 + resolve: ^1.22.1 + semver: ^7.3.7 + peerDependencies: + eslint: ">=7.0.0" + checksum: 3be265957b3dda6a049841803335c17689cf98a4b3859eeed3e57b44850b241e7d20640890b2dea7e83816c938fc16274bf78d370f571e211d00d9a3c513f281 + languageName: node + linkType: hard + "eslint-plugin-node@npm:11.1.0": version: 11.1.0 resolution: "eslint-plugin-node@npm:11.1.0" @@ -5089,6 +5116,15 @@ browserlist@latest: languageName: node linkType: hard +"is-core-module@npm:^2.10.0, is-core-module@npm:^2.9.0": + version: 2.10.0 + resolution: "is-core-module@npm:2.10.0" + dependencies: + has: ^1.0.3 + checksum: 0f3f77811f430af3256fa7bbc806f9639534b140f8ee69476f632c3e1eb4e28a38be0b9d1b8ecf596179c841b53576129279df95e7051d694dac4ceb6f967593 + languageName: node + linkType: hard + "is-core-module@npm:^2.3.0, is-core-module@npm:^2.8.1": version: 2.9.0 resolution: "is-core-module@npm:2.9.0" @@ -6947,6 +6983,19 @@ browserlist@latest: languageName: node linkType: hard +"resolve@npm:^1.22.1": + version: 1.22.1 + resolution: "resolve@npm:1.22.1" + dependencies: + is-core-module: ^2.9.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e + languageName: node + linkType: hard + "resolve@patch:resolve@^1.10.1#~builtin, resolve@patch:resolve@^1.15.1#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin": version: 1.22.0 resolution: "resolve@patch:resolve@npm%3A1.22.0#~builtin::version=1.22.0&hash=07638b" @@ -6960,6 +7009,19 @@ browserlist@latest: languageName: node linkType: hard +"resolve@patch:resolve@^1.22.1#~builtin": + version: 1.22.1 + resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b" + dependencies: + is-core-module: ^2.9.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b + languageName: node + linkType: hard + "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -7055,6 +7117,7 @@ browserlist@latest: eslint-config-standard: 17.0.0 eslint-plugin-cypress: 2.12.1 eslint-plugin-import: 2.26.0 + eslint-plugin-n: 15.2.5 eslint-plugin-node: 11.1.0 eslint-plugin-promise: 6.0.1 eslint-plugin-vue: 9.4.0 @@ -7221,7 +7284,7 @@ browserlist@latest: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.6": +"semver@npm:^7.0.0, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.6, semver@npm:^7.3.7": version: 7.3.7 resolution: "semver@npm:7.3.7" dependencies: