From 3b24582ebc772b4f6be8e2e09a42a42e635de3b9 Mon Sep 17 00:00:00 2001 From: batche Date: Mon, 31 Oct 2022 18:10:33 +0100 Subject: [PATCH] Oauth --- Docs/Vue_ensemble_transcendance.html | 11 + package-lock.json | 123 ++ package.json | 5 + .../nestjs/api_back/dist/app.module.js.map | 2 +- .../auth/42/authentication.controller.d.ts | 7 + .../dist/auth/42/authentication.controller.js | 60 + .../auth/42/authentication.controller.js.map | 1 + .../dist/auth/42/authentication.module.d.ts | 2 + .../dist/auth/42/authentication.module.js | 23 + .../dist/auth/42/authentication.module.js.map | 1 + .../dist/auth/42/authentication.service.d.ts | 2 + .../dist/auth/42/authentication.service.js | 17 + .../auth/42/authentication.service.js.map | 1 + .../api_back/dist/auth/42/guards/guards.d.ts | 6 + .../api_back/dist/auth/42/guards/guards.js | 25 + .../dist/auth/42/guards/guards.js.map | 1 + .../dist/auth/42/strategy/strategy.d.ts | 9 + .../dist/auth/42/strategy/strategy.js | 35 + .../dist/auth/42/strategy/strategy.js.map | 1 + .../entities/friendship.entity.js.map | 2 +- .../requirements/nestjs/api_back/dist/main.js | 1 + .../nestjs/api_back/dist/main.js.map | 2 +- .../api_back/dist/tsconfig.build.tsbuildinfo | 2 +- .../dist/users/entities/user.entity.d.ts | 2 + .../dist/users/entities/user.entity.js | 8 + .../dist/users/entities/user.entity.js.map | 2 +- .../api_back/node_modules/.package-lock.json | 48 + .../api_back/node_modules/base64url/LICENSE | 20 + .../node_modules/base64url/dist/.gitkeep | 0 .../base64url/dist/base64url.d.ts | 11 + .../node_modules/base64url/dist/base64url.js | 37 + .../base64url/dist/pad-string.d.ts | 1 + .../node_modules/base64url/dist/pad-string.js | 20 + .../api_back/node_modules/base64url/index.js | 2 + .../node_modules/base64url/package.json | 35 + .../api_back/node_modules/base64url/readme.md | 127 ++ .../api_back/node_modules/oauth/.npmignore | 1 + .../api_back/node_modules/oauth/LICENSE | 8 + .../api_back/node_modules/oauth/Makefile | 7 + .../api_back/node_modules/oauth/Readme.md | 190 +++ .../oauth/examples/express-gdata/server.js | 168 +++ .../express-gdata/views/google_calendars.ejs | 21 + .../express-gdata/views/google_contacts.ejs | 24 + .../examples/express-gdata/views/layout.ejs | 9 + .../oauth/examples/github-example.js | 73 ++ .../oauth/examples/term.ie.oauth-HMAC-SHA1.js | 31 + .../oauth/examples/twitter-example.js | 75 ++ .../api_back/node_modules/oauth/index.js | 3 + .../api_back/node_modules/oauth/lib/_utils.js | 4 + .../api_back/node_modules/oauth/lib/oauth.js | 581 +++++++++ .../api_back/node_modules/oauth/lib/oauth2.js | 228 ++++ .../api_back/node_modules/oauth/lib/sha1.js | 334 ++++++ .../api_back/node_modules/oauth/package.json | 15 + .../node_modules/oauth/tests/oauth2tests.js | 304 +++++ .../node_modules/oauth/tests/oauthtests.js | 1064 +++++++++++++++++ .../node_modules/oauth/tests/sha1tests.js | 13 + .../node_modules/oauth/tests/shared.js | 26 + .../node_modules/passport-42/.eslintrc | 70 ++ .../api_back/node_modules/passport-42/LICENSE | 20 + .../node_modules/passport-42/README.md | 148 +++ .../node_modules/passport-42/lib/index.js | 8 + .../node_modules/passport-42/lib/profile.js | 65 + .../node_modules/passport-42/lib/strategy.js | 125 ++ .../node_modules/passport-42/package.json | 53 + .../passport-oauth2/.github/FUNDING.yml | 3 + .../node_modules/passport-oauth2/CHANGELOG.md | 19 + .../node_modules/passport-oauth2/LICENSE | 20 + .../node_modules/passport-oauth2/README.md | 122 ++ .../lib/errors/authorizationerror.js | 44 + .../lib/errors/internaloautherror.js | 49 + .../passport-oauth2/lib/errors/tokenerror.js | 36 + .../node_modules/passport-oauth2/lib/index.js | 16 + .../passport-oauth2/lib/state/null.js | 13 + .../passport-oauth2/lib/state/pkcesession.js | 89 ++ .../passport-oauth2/lib/state/session.js | 85 ++ .../passport-oauth2/lib/state/store.js | 88 ++ .../passport-oauth2/lib/strategy.js | 429 +++++++ .../node_modules/passport-oauth2/lib/utils.js | 32 + .../node_modules/passport-oauth2/package.json | 59 + .../api_back/node_modules/uid2/HISTORY.md | 21 + .../nestjs/api_back/node_modules/uid2/LICENSE | 21 + .../api_back/node_modules/uid2/README.md | 32 + .../api_back/node_modules/uid2/index.js | 55 + .../api_back/node_modules/uid2/package.json | 12 + .../nestjs/api_back/package-lock.json | 84 ++ .../requirements/nestjs/api_back/package.json | 1 + .../nestjs/api_back/src/app.module.ts | 1 + .../authentication.controller.spec.ts | 0 .../src/auth/42/authentication.controller.ts | 45 + .../auth/{ => 42}/authentication.module.ts | 3 +- .../{ => 42}/authentication.service.spec.ts | 0 .../auth/{ => 42}/authentication.service.ts | 0 .../api_back/src/auth/42/guards/guards.ts | 14 + .../api_back/src/auth/42/strategy/strategy.ts | 20 + .../src/auth/authentication.controller.ts | 7 - .../friendship/entities/friendship.entity.ts | 1 - srcs/requirements/nestjs/api_back/src/main.ts | 1 + .../src/users/entities/user.entity.ts | 6 + 98 files changed, 5734 insertions(+), 14 deletions(-) create mode 100644 Docs/Vue_ensemble_transcendance.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/authentication.controller.d.ts create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/authentication.controller.js create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/authentication.controller.js.map create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/authentication.module.d.ts create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/authentication.module.js create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/authentication.module.js.map create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/authentication.service.d.ts create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/authentication.service.js create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/authentication.service.js.map create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/guards/guards.d.ts create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/guards/guards.js create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/guards/guards.js.map create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/strategy/strategy.d.ts create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/strategy/strategy.js create mode 100644 srcs/requirements/nestjs/api_back/dist/auth/42/strategy/strategy.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/base64url/LICENSE create mode 100644 srcs/requirements/nestjs/api_back/node_modules/base64url/dist/.gitkeep create mode 100644 srcs/requirements/nestjs/api_back/node_modules/base64url/dist/base64url.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/base64url/dist/base64url.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/base64url/dist/pad-string.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/base64url/dist/pad-string.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/base64url/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/base64url/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/base64url/readme.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/.npmignore create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/LICENSE create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/Makefile create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/Readme.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/server.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/views/google_calendars.ejs create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/views/google_contacts.ejs create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/views/layout.ejs create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/examples/github-example.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/examples/term.ie.oauth-HMAC-SHA1.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/examples/twitter-example.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/lib/_utils.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/lib/oauth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/lib/oauth2.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/lib/sha1.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/tests/oauth2tests.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/tests/oauthtests.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/tests/sha1tests.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/oauth/tests/shared.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-42/.eslintrc create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-42/LICENSE create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-42/README.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-42/lib/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-42/lib/profile.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-42/lib/strategy.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-42/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/.github/FUNDING.yml create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/CHANGELOG.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/LICENSE create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/README.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/errors/authorizationerror.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/errors/internaloautherror.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/errors/tokenerror.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/null.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/pkcesession.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/session.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/store.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/strategy.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/utils.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/uid2/HISTORY.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/uid2/LICENSE create mode 100644 srcs/requirements/nestjs/api_back/node_modules/uid2/README.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/uid2/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/uid2/package.json rename srcs/requirements/nestjs/api_back/src/auth/{ => 42}/authentication.controller.spec.ts (100%) create mode 100644 srcs/requirements/nestjs/api_back/src/auth/42/authentication.controller.ts rename srcs/requirements/nestjs/api_back/src/auth/{ => 42}/authentication.module.ts (67%) rename srcs/requirements/nestjs/api_back/src/auth/{ => 42}/authentication.service.spec.ts (100%) rename srcs/requirements/nestjs/api_back/src/auth/{ => 42}/authentication.service.ts (100%) create mode 100644 srcs/requirements/nestjs/api_back/src/auth/42/guards/guards.ts create mode 100644 srcs/requirements/nestjs/api_back/src/auth/42/strategy/strategy.ts delete mode 100644 srcs/requirements/nestjs/api_back/src/auth/authentication.controller.ts diff --git a/Docs/Vue_ensemble_transcendance.html b/Docs/Vue_ensemble_transcendance.html new file mode 100644 index 00000000..ab74b3fc --- /dev/null +++ b/Docs/Vue_ensemble_transcendance.html @@ -0,0 +1,11 @@ + + + + +Untitled Diagram + + +
+ + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..60fc3659 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,123 @@ +{ + "name": "15_ft_transcendence", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "passport-42": "^1.2.6" + } + }, + "node_modules/base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/oauth": { + "version": "0.9.15", + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", + "integrity": "sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==" + }, + "node_modules/passport-42": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/passport-42/-/passport-42-1.2.6.tgz", + "integrity": "sha512-a1SraWSwH33NqRDe9ScG4MQwfj7RRBYLFtrJySn4tU4Ou7+caLxj6VQgaL4i+eZoKC6QAooL1Nqevn/W8vLXuQ==", + "dependencies": { + "passport-oauth2": "^1.4.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/passport-oauth2": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.6.1.tgz", + "integrity": "sha512-ZbV43Hq9d/SBSYQ22GOiglFsjsD1YY/qdiptA+8ej+9C1dL1TVB+mBE5kDH/D4AJo50+2i8f4bx0vg4/yDDZCQ==", + "dependencies": { + "base64url": "3.x.x", + "oauth": "0.9.x", + "passport-strategy": "1.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, + "node_modules/passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uid2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + } + }, + "dependencies": { + "base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" + }, + "oauth": { + "version": "0.9.15", + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", + "integrity": "sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==" + }, + "passport-42": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/passport-42/-/passport-42-1.2.6.tgz", + "integrity": "sha512-a1SraWSwH33NqRDe9ScG4MQwfj7RRBYLFtrJySn4tU4Ou7+caLxj6VQgaL4i+eZoKC6QAooL1Nqevn/W8vLXuQ==", + "requires": { + "passport-oauth2": "^1.4.0" + } + }, + "passport-oauth2": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.6.1.tgz", + "integrity": "sha512-ZbV43Hq9d/SBSYQ22GOiglFsjsD1YY/qdiptA+8ej+9C1dL1TVB+mBE5kDH/D4AJo50+2i8f4bx0vg4/yDDZCQ==", + "requires": { + "base64url": "3.x.x", + "oauth": "0.9.x", + "passport-strategy": "1.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" + } + }, + "passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==" + }, + "uid2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..f4fe1d0b --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "passport-42": "^1.2.6" + } +} diff --git a/srcs/requirements/nestjs/api_back/dist/app.module.js.map b/srcs/requirements/nestjs/api_back/dist/app.module.js.map index 2e777fa4..d5f82d93 100644 --- a/srcs/requirements/nestjs/api_back/dist/app.module.js.map +++ b/srcs/requirements/nestjs/api_back/dist/app.module.js.map @@ -1 +1 @@ -{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qDAAiD;AACjD,+CAA2C;AAC3C,uDAAmD;AACnD,6CAAgD;AAChD,2CAA8C;AAC9C,wEAAoE;AAsB7D,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,SAAS;IApBrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,0BAAW;YACpB,sCAAiB;YACjB,qBAAY,CAAC,OAAO,EAAE;YACtB,uBAAa,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;gBAC/B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;gBACzC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;gBACnC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;gBACvC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;gBACvC,gBAAgB,EAAE,IAAI;gBAGtB,WAAW,EAAE,IAAI;aACjB,CAAC;SACJ;QACC,WAAW,EAAE,CAAC,8BAAa,CAAC;QAC5B,SAAS,EAAE,CAAC,wBAAU,CAAC;KACxB,CAAC;GACW,SAAS,CAAG;AAAZ,8BAAS"} \ No newline at end of file +{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qDAAiD;AACjD,+CAA2C;AAC3C,uDAAmD;AACnD,6CAAgD;AAChD,2CAA8C;AAC9C,wEAAoE;AAuB7D,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,SAAS;IApBrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,0BAAW;YACpB,sCAAiB;YACjB,qBAAY,CAAC,OAAO,EAAE;YACtB,uBAAa,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;gBAC/B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;gBACzC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;gBACnC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;gBACvC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;gBACvC,gBAAgB,EAAE,IAAI;gBAGtB,WAAW,EAAE,IAAI;aACjB,CAAC;SACJ;QACC,WAAW,EAAE,CAAC,8BAAa,CAAC;QAC5B,SAAS,EAAE,CAAC,wBAAU,CAAC;KACxB,CAAC;GACW,SAAS,CAAG;AAAZ,8BAAS"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.controller.d.ts b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.controller.d.ts new file mode 100644 index 00000000..43efa0fa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.controller.d.ts @@ -0,0 +1,7 @@ +import { Response } from 'express'; +export declare class AuthenticationController { + login(): string; + redirect(res: Response): void; + status(): string; + logout(): string; +} diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.controller.js b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.controller.js new file mode 100644 index 00000000..0a95de4e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.controller.js @@ -0,0 +1,60 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AuthenticationController = void 0; +const common_1 = require("@nestjs/common"); +let AuthenticationController = class AuthenticationController { + login() { + return 'login'; + } + redirect(res) { + res.send(200); + } + status() { + return 'status'; + } + logout() { + return 'logout'; + } +}; +__decorate([ + (0, common_1.Get)('login'), + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", void 0) +], AuthenticationController.prototype, "login", null); +__decorate([ + (0, common_1.Get)('redirect'), + __param(0, (0, common_1.Res)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) +], AuthenticationController.prototype, "redirect", null); +__decorate([ + (0, common_1.Get)('status'), + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", void 0) +], AuthenticationController.prototype, "status", null); +__decorate([ + (0, common_1.Get)('logout'), + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", void 0) +], AuthenticationController.prototype, "logout", null); +AuthenticationController = __decorate([ + (0, common_1.Controller)('auth') +], AuthenticationController); +exports.AuthenticationController = AuthenticationController; +//# sourceMappingURL=authentication.controller.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.controller.js.map b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.controller.js.map new file mode 100644 index 00000000..81490d84 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.controller.js.map @@ -0,0 +1 @@ +{"version":3,"file":"authentication.controller.js","sourceRoot":"","sources":["../../../src/auth/42/authentication.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAsD;AAI/C,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAQpC,KAAK;QACJ,OAAO,OAAO,CAAC;IAChB,CAAC;IAQD,QAAQ,CAAQ,GAAa;QAC5B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAQD,MAAM;QACL,OAAO,QAAQ,CAAC;IACjB,CAAC;IAOD,MAAM;QACL,OAAO,QAAQ,CAAC;IACjB,CAAC;CACD,CAAA;AAjCA;IAAC,IAAA,YAAG,EAAC,OAAO,CAAC;;;;qDAGZ;AAOD;IAAC,IAAA,YAAG,EAAC,UAAU,CAAC;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;;;wDAEd;AAOD;IAAC,IAAA,YAAG,EAAC,QAAQ,CAAC;;;;sDAGb;AAMD;IAAC,IAAA,YAAG,EAAC,QAAQ,CAAC;;;;sDAGb;AAvCW,wBAAwB;IADpC,IAAA,mBAAU,EAAC,MAAM,CAAC;GACN,wBAAwB,CAwCpC;AAxCY,4DAAwB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.module.d.ts b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.module.d.ts new file mode 100644 index 00000000..4e4c8eab --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.module.d.ts @@ -0,0 +1,2 @@ +export declare class AuthenticationModule { +} diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.module.js b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.module.js new file mode 100644 index 00000000..cf9c559b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.module.js @@ -0,0 +1,23 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AuthenticationModule = void 0; +const common_1 = require("@nestjs/common"); +const users_module_1 = require("../../users/users.module"); +const authentication_service_1 = require("./authentication.service"); +const strategy_1 = require("./strategy/strategy"); +let AuthenticationModule = class AuthenticationModule { +}; +AuthenticationModule = __decorate([ + (0, common_1.Module)({ + imports: [users_module_1.UsersModule], + providers: [authentication_service_1.AuthenticationService, strategy_1.FortyTwoStrategy], + }) +], AuthenticationModule); +exports.AuthenticationModule = AuthenticationModule; +//# sourceMappingURL=authentication.module.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.module.js.map b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.module.js.map new file mode 100644 index 00000000..b9514c9b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.module.js.map @@ -0,0 +1 @@ +{"version":3,"file":"authentication.module.js","sourceRoot":"","sources":["../../../src/auth/42/authentication.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAqD;AACrD,qEAAiE;AACjE,kDAAuD;AAMhD,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;CAAG,CAAA;AAAvB,oBAAoB;IAJhC,IAAA,eAAM,EAAC;QACL,OAAO,EAAE,CAAC,0BAAW,CAAC;QACtB,SAAS,EAAE,CAAC,8CAAqB,EAAE,2BAAgB,CAAC;KACtD,CAAC;GACW,oBAAoB,CAAG;AAAvB,oDAAoB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.service.d.ts b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.service.d.ts new file mode 100644 index 00000000..753c38ac --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.service.d.ts @@ -0,0 +1,2 @@ +export declare class AuthenticationService { +} diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.service.js b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.service.js new file mode 100644 index 00000000..92eca182 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.service.js @@ -0,0 +1,17 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AuthenticationService = void 0; +const common_1 = require("@nestjs/common"); +let AuthenticationService = class AuthenticationService { +}; +AuthenticationService = __decorate([ + (0, common_1.Injectable)() +], AuthenticationService); +exports.AuthenticationService = AuthenticationService; +//# sourceMappingURL=authentication.service.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.service.js.map b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.service.js.map new file mode 100644 index 00000000..ecbef68f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/authentication.service.js.map @@ -0,0 +1 @@ +{"version":3,"file":"authentication.service.js","sourceRoot":"","sources":["../../../src/auth/42/authentication.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAGrC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAAG,CAAA;AAAxB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;GACA,qBAAqB,CAAG;AAAxB,sDAAqB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/guards/guards.d.ts b/srcs/requirements/nestjs/api_back/dist/auth/42/guards/guards.d.ts new file mode 100644 index 00000000..2d332d60 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/guards/guards.d.ts @@ -0,0 +1,6 @@ +import { ExecutionContext } from "@nestjs/common"; +declare const FortyTwoAuthGuard_base: import("@nestjs/passport").Type; +export declare class FortyTwoAuthGuard extends FortyTwoAuthGuard_base { + canActivate(context: ExecutionContext): Promise; +} +export {}; diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/guards/guards.js b/srcs/requirements/nestjs/api_back/dist/auth/42/guards/guards.js new file mode 100644 index 00000000..bded78f0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/guards/guards.js @@ -0,0 +1,25 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FortyTwoAuthGuard = void 0; +const common_1 = require("@nestjs/common"); +const passport_1 = require("@nestjs/passport"); +let FortyTwoAuthGuard = class FortyTwoAuthGuard extends (0, passport_1.AuthGuard)('42') { + async canActivate(context) { + const activate = (await super.canActivate(context)); + const request = context.switchToHttp().getRequest(); + console.log(request.user); + await super.logIn(request); + return activate; + } +}; +FortyTwoAuthGuard = __decorate([ + (0, common_1.Injectable)() +], FortyTwoAuthGuard); +exports.FortyTwoAuthGuard = FortyTwoAuthGuard; +//# sourceMappingURL=guards.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/guards/guards.js.map b/srcs/requirements/nestjs/api_back/dist/auth/42/guards/guards.js.map new file mode 100644 index 00000000..2f90a5bc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/guards/guards.js.map @@ -0,0 +1 @@ +{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../../src/auth/42/guards/guards.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA2E;AAC3E,+CAA6C;AAGtC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,IAAA,oBAAS,EAAC,IAAI,CAAC;IACpD,KAAK,CAAC,WAAW,CAAC,OAAyB;QAC5C,MAAM,QAAQ,GAAG,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAY,CAAC;QAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,QAAQ,CAAC;IACf,CAAC;CACF,CAAA;AARY,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;GACA,iBAAiB,CAQ7B;AARY,8CAAiB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/strategy/strategy.d.ts b/srcs/requirements/nestjs/api_back/dist/auth/42/strategy/strategy.d.ts new file mode 100644 index 00000000..c9e70600 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/strategy/strategy.d.ts @@ -0,0 +1,9 @@ +import { Profile } from "passport-42/lib"; +import { AuthenticationService } from "../authentication.service"; +declare const FortyTwoStrategy_base: new (...args: any[]) => any; +export declare class FortyTwoStrategy extends FortyTwoStrategy_base { + private readonly authenticationService; + constructor(authenticationService: AuthenticationService); + validate(accessToken: string, refreshToken: string, profile: Profile, callbackURL: string): Promise; +} +export {}; diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/strategy/strategy.js b/srcs/requirements/nestjs/api_back/dist/auth/42/strategy/strategy.js new file mode 100644 index 00000000..b2ec8dbc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/strategy/strategy.js @@ -0,0 +1,35 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FortyTwoStrategy = void 0; +const lib_1 = require("passport-42/lib"); +const passport_1 = require("@nestjs/passport"); +const common_1 = require("@nestjs/common"); +const authentication_service_1 = require("../authentication.service"); +let FortyTwoStrategy = class FortyTwoStrategy extends (0, passport_1.PassportStrategy)(lib_1.Strategy, "42") { + constructor(authenticationService) { + super({ + clientID: process.env.FORTYTWO_CLIENT_ID, + clientSecret: process.env.FORTYTWO_CLIENT_SECRET, + callbackURL: process.env.FORTYTWO_CALLBACK_URL, + scope: ["public"], + }); + this.authenticationService = authenticationService; + } + async validate(accessToken, refreshToken, profile, callbackURL) { + } +}; +FortyTwoStrategy = __decorate([ + (0, common_1.Injectable)(), + __metadata("design:paramtypes", [authentication_service_1.AuthenticationService]) +], FortyTwoStrategy); +exports.FortyTwoStrategy = FortyTwoStrategy; +//# sourceMappingURL=strategy.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/auth/42/strategy/strategy.js.map b/srcs/requirements/nestjs/api_back/dist/auth/42/strategy/strategy.js.map new file mode 100644 index 00000000..28082fbb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/auth/42/strategy/strategy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../../src/auth/42/strategy/strategy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAoD;AACpD,+CAAoD;AACpD,2CAA4C;AAC5C,sEAAkE;AAG3D,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,IAAA,2BAAgB,EAAC,cAAQ,EAAE,IAAI,CAAC;IACnE,YAA6B,qBAA4C;QAC3E,KAAK,CAAC;YACJ,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;YACxC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;YAChD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;YAC9C,KAAK,EAAE,CAAC,QAAQ,CAAC;SAClB,CAAC,CAAC;QAN4B,0BAAqB,GAArB,qBAAqB,CAAuB;IAO1E,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,YAAoB,EAAE,OAAgB,EAAE,WAAmB;IAE/F,CAAC;CACF,CAAA;AAbY,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAE0C,8CAAqB;GAD/D,gBAAgB,CAa5B;AAbY,4CAAgB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/friendship/entities/friendship.entity.js.map b/srcs/requirements/nestjs/api_back/dist/friendship/entities/friendship.entity.js.map index e3fd6c97..3cec87dc 100644 --- a/srcs/requirements/nestjs/api_back/dist/friendship/entities/friendship.entity.js.map +++ b/srcs/requirements/nestjs/api_back/dist/friendship/entities/friendship.entity.js.map @@ -1 +1 @@ -{"version":3,"file":"friendship.entity.js","sourceRoot":"","sources":["../../../src/friendship/entities/friendship.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qCAAmI;AACnI,kEAAwD;AAExD,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC3B,mCAAe,CAAA;IACf,kCAAc,CAAA;IACd,kCAAc,CAAA;IACd,iCAAa,CAAA;AACd,CAAC,EALW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAK3B;AAGM,IAAM,UAAU,GAAhB,MAAM,UAAU;CAmBtB,CAAA;AAlBA;IAAC,IAAA,gCAAsB,GAAE;;sCACd;AAEX;IAAC,IAAA,0BAAgB,GAAE;8BACZ,IAAI;wCAAC;AAGZ;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;+CAC9B;AAEpB;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;+CAC9B;AAGpB;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,CAAC,SAAS,EAAC,CAAC;;0CAC5D;AAlBb,UAAU;IADtB,IAAA,gBAAM,EAAC,aAAa,CAAC;GACT,UAAU,CAmBtB;AAnBY,gCAAU"} \ No newline at end of file +{"version":3,"file":"friendship.entity.js","sourceRoot":"","sources":["../../../src/friendship/entities/friendship.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qCAAmI;AACnI,kEAAwD;AAExD,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC3B,mCAAe,CAAA;IACf,kCAAc,CAAA;IACd,kCAAc,CAAA;IACd,iCAAa,CAAA;AACd,CAAC,EALW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAK3B;AAGM,IAAM,UAAU,GAAhB,MAAM,UAAU;CAkBtB,CAAA;AAjBA;IAAC,IAAA,gCAAsB,GAAE;;sCACd;AAEX;IAAC,IAAA,0BAAgB,GAAE;8BACZ,IAAI;wCAAC;AAGZ;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;+CAC9B;AAEpB;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;+CAC9B;AAEpB;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,CAAC,SAAS,EAAC,CAAC;;0CAC5D;AAjBb,UAAU;IADtB,IAAA,gBAAM,EAAC,aAAa,CAAC;GACT,UAAU,CAkBtB;AAlBY,gCAAU"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/main.js b/srcs/requirements/nestjs/api_back/dist/main.js index 618952b4..84f71ee5 100644 --- a/srcs/requirements/nestjs/api_back/dist/main.js +++ b/srcs/requirements/nestjs/api_back/dist/main.js @@ -13,6 +13,7 @@ async function bootstrap() { enableImplicitConversion: true, }, })); + app.setGlobalPrefix('api/v2'); await app.listen(3000); } bootstrap(); diff --git a/srcs/requirements/nestjs/api_back/dist/main.js.map b/srcs/requirements/nestjs/api_back/dist/main.js.map index 1c9bc11b..f47a7440 100644 --- a/srcs/requirements/nestjs/api_back/dist/main.js.map +++ b/srcs/requirements/nestjs/api_back/dist/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,2CAAgD;AAChD,6CAAyC;AAEzC,KAAK,UAAU,SAAS;IAEtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;IAGhD,GAAG,CAAC,cAAc,CACnB,IAAI,uBAAc,CAAC;QAElB,SAAS,EAAE,IAAI;QAEf,oBAAoB,EAAE,IAAI;QAE1B,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE;YACjB,wBAAwB,EAAE,IAAI;SAC9B;KACD,CAAC,CACA,CAAC;IACF,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,2CAAgD;AAChD,6CAAyC;AAEzC,KAAK,UAAU,SAAS;IAEtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;IAGhD,GAAG,CAAC,cAAc,CACnB,IAAI,uBAAc,CAAC;QAElB,SAAS,EAAE,IAAI;QAEf,oBAAoB,EAAE,IAAI;QAE1B,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE;YACjB,wBAAwB,EAAE,IAAI;SAC9B;KACD,CAAC,CACA,CAAC;IACF,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,EAAE,CAAC"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/tsconfig.build.tsbuildinfo b/srcs/requirements/nestjs/api_back/dist/tsconfig.build.tsbuildinfo index fe21111b..9bcd06d0 100644 --- a/srcs/requirements/nestjs/api_back/dist/tsconfig.build.tsbuildinfo +++ b/srcs/requirements/nestjs/api_back/dist/tsconfig.build.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.es2017.full.d.ts","../node_modules/reflect-metadata/index.d.ts","../node_modules/@nestjs/common/cache/cache.constants.d.ts","../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../node_modules/rxjs/dist/types/internal/Subscription.d.ts","../node_modules/rxjs/dist/types/internal/Subscriber.d.ts","../node_modules/rxjs/dist/types/internal/Operator.d.ts","../node_modules/rxjs/dist/types/internal/Observable.d.ts","../node_modules/rxjs/dist/types/internal/types.d.ts","../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../node_modules/rxjs/dist/types/internal/operators/auditTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferToggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/catchError.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatestAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatest.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatestWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounceTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/defaultIfEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../node_modules/rxjs/dist/types/internal/operators/delayWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctUntilChanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctUntilKeyChanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/elementAt.d.ts","../node_modules/rxjs/dist/types/internal/operators/endWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../node_modules/rxjs/dist/types/internal/operators/findIndex.d.ts","../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../node_modules/rxjs/dist/types/internal/Subject.d.ts","../node_modules/rxjs/dist/types/internal/operators/groupBy.d.ts","../node_modules/rxjs/dist/types/internal/operators/ignoreElements.d.ts","../node_modules/rxjs/dist/types/internal/operators/isEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../node_modules/rxjs/dist/types/internal/operators/mapTo.d.ts","../node_modules/rxjs/dist/types/internal/Notification.d.ts","../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/flatMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeScan.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../node_modules/rxjs/dist/types/internal/observable/ConnectableObservable.d.ts","../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../node_modules/rxjs/dist/types/internal/operators/observeOn.d.ts","../node_modules/rxjs/dist/types/internal/operators/onErrorResumeNext.d.ts","../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishBehavior.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishReplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../node_modules/rxjs/dist/types/internal/operators/raceWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeatWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../node_modules/rxjs/dist/types/internal/operators/retryWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/refCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../node_modules/rxjs/dist/types/internal/operators/sampleTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../node_modules/rxjs/dist/types/internal/operators/sequenceEqual.d.ts","../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../node_modules/rxjs/dist/types/internal/operators/shareReplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipUntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipWhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/startWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/subscribeOn.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchScan.d.ts","../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeUntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeWhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttleTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/throwIfEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeInterval.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeoutWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../node_modules/rxjs/dist/types/internal/operators/toArray.d.ts","../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowToggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/withLatestFrom.d.ts","../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipWith.d.ts","../node_modules/rxjs/dist/types/operators/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/Action.d.ts","../node_modules/rxjs/dist/types/internal/Scheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/TestMessage.d.ts","../node_modules/rxjs/dist/types/internal/testing/SubscriptionLog.d.ts","../node_modules/rxjs/dist/types/internal/testing/SubscriptionLoggable.d.ts","../node_modules/rxjs/dist/types/internal/testing/ColdObservable.d.ts","../node_modules/rxjs/dist/types/internal/testing/HotObservable.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsyncScheduler.d.ts","../node_modules/@types/node/ts4.8/assert.d.ts","../node_modules/@types/node/ts4.8/assert/strict.d.ts","../node_modules/@types/node/ts4.8/globals.d.ts","../node_modules/@types/node/ts4.8/async_hooks.d.ts","../node_modules/@types/node/ts4.8/buffer.d.ts","../node_modules/@types/node/ts4.8/child_process.d.ts","../node_modules/@types/node/ts4.8/cluster.d.ts","../node_modules/@types/node/ts4.8/console.d.ts","../node_modules/@types/node/ts4.8/constants.d.ts","../node_modules/@types/node/ts4.8/crypto.d.ts","../node_modules/@types/node/ts4.8/dgram.d.ts","../node_modules/@types/node/ts4.8/diagnostics_channel.d.ts","../node_modules/@types/node/ts4.8/dns.d.ts","../node_modules/@types/node/ts4.8/dns/promises.d.ts","../node_modules/@types/node/ts4.8/domain.d.ts","../node_modules/@types/node/ts4.8/events.d.ts","../node_modules/@types/node/ts4.8/fs.d.ts","../node_modules/@types/node/ts4.8/fs/promises.d.ts","../node_modules/@types/node/ts4.8/http.d.ts","../node_modules/@types/node/ts4.8/http2.d.ts","../node_modules/@types/node/ts4.8/https.d.ts","../node_modules/@types/node/ts4.8/inspector.d.ts","../node_modules/@types/node/ts4.8/module.d.ts","../node_modules/@types/node/ts4.8/net.d.ts","../node_modules/@types/node/ts4.8/os.d.ts","../node_modules/@types/node/ts4.8/path.d.ts","../node_modules/@types/node/ts4.8/perf_hooks.d.ts","../node_modules/@types/node/ts4.8/process.d.ts","../node_modules/@types/node/ts4.8/punycode.d.ts","../node_modules/@types/node/ts4.8/querystring.d.ts","../node_modules/@types/node/ts4.8/readline.d.ts","../node_modules/@types/node/ts4.8/repl.d.ts","../node_modules/@types/node/ts4.8/stream.d.ts","../node_modules/@types/node/ts4.8/stream/promises.d.ts","../node_modules/@types/node/ts4.8/stream/consumers.d.ts","../node_modules/@types/node/ts4.8/stream/web.d.ts","../node_modules/@types/node/ts4.8/string_decoder.d.ts","../node_modules/@types/node/ts4.8/test.d.ts","../node_modules/@types/node/ts4.8/timers.d.ts","../node_modules/@types/node/ts4.8/timers/promises.d.ts","../node_modules/@types/node/ts4.8/tls.d.ts","../node_modules/@types/node/ts4.8/trace_events.d.ts","../node_modules/@types/node/ts4.8/tty.d.ts","../node_modules/@types/node/ts4.8/url.d.ts","../node_modules/@types/node/ts4.8/util.d.ts","../node_modules/@types/node/ts4.8/v8.d.ts","../node_modules/@types/node/ts4.8/vm.d.ts","../node_modules/@types/node/ts4.8/wasi.d.ts","../node_modules/@types/node/ts4.8/worker_threads.d.ts","../node_modules/@types/node/ts4.8/zlib.d.ts","../node_modules/@types/node/ts4.8/globals.global.d.ts","../node_modules/@types/node/ts4.8/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/timerHandle.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsyncAction.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/VirtualTimeScheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/TestScheduler.d.ts","../node_modules/rxjs/dist/types/testing/index.d.ts","../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../node_modules/rxjs/dist/types/internal/observable/dom/animationFrames.d.ts","../node_modules/rxjs/dist/types/internal/BehaviorSubject.d.ts","../node_modules/rxjs/dist/types/internal/ReplaySubject.d.ts","../node_modules/rxjs/dist/types/internal/AsyncSubject.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsapScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/QueueScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AnimationFrameScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationFrame.d.ts","../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../node_modules/rxjs/dist/types/internal/util/isObservable.d.ts","../node_modules/rxjs/dist/types/internal/lastValueFrom.d.ts","../node_modules/rxjs/dist/types/internal/firstValueFrom.d.ts","../node_modules/rxjs/dist/types/internal/util/ArgumentOutOfRangeError.d.ts","../node_modules/rxjs/dist/types/internal/util/EmptyError.d.ts","../node_modules/rxjs/dist/types/internal/util/NotFoundError.d.ts","../node_modules/rxjs/dist/types/internal/util/ObjectUnsubscribedError.d.ts","../node_modules/rxjs/dist/types/internal/util/SequenceError.d.ts","../node_modules/rxjs/dist/types/internal/util/UnsubscriptionError.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindCallback.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindNodeCallback.d.ts","../node_modules/rxjs/dist/types/internal/AnyCatcher.d.ts","../node_modules/rxjs/dist/types/internal/observable/combineLatest.d.ts","../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../node_modules/rxjs/dist/types/internal/observable/forkJoin.d.ts","../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromEvent.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromEventPattern.d.ts","../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../node_modules/rxjs/dist/types/internal/observable/onErrorResumeNext.d.ts","../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../node_modules/rxjs/dist/types/internal/observable/throwError.d.ts","../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../node_modules/rxjs/dist/types/internal/config.d.ts","../node_modules/rxjs/dist/types/index.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../node_modules/@nestjs/common/enums/index.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../node_modules/@nestjs/common/services/logger.service.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/index.d.ts","../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../node_modules/@nestjs/common/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/constants.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","../node_modules/@nestjs/common/module-utils/index.d.ts","../node_modules/@nestjs/common/cache/interfaces/cache-manager.interface.d.ts","../node_modules/@nestjs/common/cache/interfaces/cache-module.interface.d.ts","../node_modules/@nestjs/common/cache/cache.module-definition.d.ts","../node_modules/@nestjs/common/cache/cache.module.d.ts","../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/index.d.ts","../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/index.d.ts","../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/index.d.ts","../node_modules/@nestjs/common/decorators/index.d.ts","../node_modules/@nestjs/common/cache/decorators/cache-key.decorator.d.ts","../node_modules/@nestjs/common/cache/decorators/cache-ttl.decorator.d.ts","../node_modules/@nestjs/common/cache/decorators/index.d.ts","../node_modules/@nestjs/common/cache/interceptors/cache.interceptor.d.ts","../node_modules/@nestjs/common/cache/interceptors/index.d.ts","../node_modules/@nestjs/common/cache/interfaces/index.d.ts","../node_modules/@nestjs/common/cache/index.d.ts","../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../node_modules/@nestjs/common/exceptions/index.d.ts","../node_modules/@nestjs/common/file-stream/streamable-options.interface.d.ts","../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../node_modules/@nestjs/common/file-stream/index.d.ts","../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","../node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","../node_modules/@nestjs/common/pipes/file/index.d.ts","../node_modules/@nestjs/common/pipes/index.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../node_modules/@nestjs/common/serializer/index.d.ts","../node_modules/@nestjs/common/services/console-logger.service.d.ts","../node_modules/@nestjs/common/services/index.d.ts","../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../node_modules/@nestjs/common/utils/index.d.ts","../node_modules/@nestjs/common/index.d.ts","../src/app.service.ts","../src/app.controller.ts","../node_modules/typeorm/metadata/types/RelationTypes.d.ts","../node_modules/typeorm/metadata/types/DeferrableType.d.ts","../node_modules/typeorm/metadata/types/OnDeleteType.d.ts","../node_modules/typeorm/metadata/types/OnUpdateType.d.ts","../node_modules/typeorm/decorator/options/RelationOptions.d.ts","../node_modules/typeorm/metadata/types/PropertyTypeInFunction.d.ts","../node_modules/typeorm/common/ObjectType.d.ts","../node_modules/typeorm/common/EntityTarget.d.ts","../node_modules/typeorm/metadata/types/RelationTypeInFunction.d.ts","../node_modules/typeorm/metadata-args/RelationMetadataArgs.d.ts","../node_modules/typeorm/driver/types/ColumnTypes.d.ts","../node_modules/typeorm/decorator/options/ValueTransformer.d.ts","../node_modules/typeorm/decorator/options/ColumnCommonOptions.d.ts","../node_modules/typeorm/decorator/options/ColumnOptions.d.ts","../node_modules/typeorm/metadata-args/types/ColumnMode.d.ts","../node_modules/typeorm/metadata-args/ColumnMetadataArgs.d.ts","../node_modules/typeorm/common/ObjectLiteral.d.ts","../node_modules/typeorm/schema-builder/options/TableColumnOptions.d.ts","../node_modules/typeorm/schema-builder/table/TableColumn.d.ts","../node_modules/typeorm/naming-strategy/NamingStrategyInterface.d.ts","../node_modules/typeorm/metadata/ForeignKeyMetadata.d.ts","../node_modules/typeorm/metadata/RelationMetadata.d.ts","../node_modules/typeorm/metadata-args/EmbeddedMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/RelationIdMetadataArgs.d.ts","../node_modules/typeorm/metadata/RelationIdMetadata.d.ts","../node_modules/typeorm/metadata/RelationCountMetadata.d.ts","../node_modules/typeorm/metadata/types/EventListenerTypes.d.ts","../node_modules/typeorm/metadata-args/EntityListenerMetadataArgs.d.ts","../node_modules/typeorm/metadata/EntityListenerMetadata.d.ts","../node_modules/typeorm/metadata-args/UniqueMetadataArgs.d.ts","../node_modules/typeorm/metadata/UniqueMetadata.d.ts","../node_modules/typeorm/metadata/EmbeddedMetadata.d.ts","../node_modules/typeorm/metadata/ColumnMetadata.d.ts","../node_modules/typeorm/driver/types/CteCapabilities.d.ts","../node_modules/typeorm/driver/types/MappedColumnTypes.d.ts","../node_modules/typeorm/driver/Query.d.ts","../node_modules/typeorm/driver/SqlInMemory.d.ts","../node_modules/typeorm/schema-builder/SchemaBuilder.d.ts","../node_modules/typeorm/driver/types/DataTypeDefaults.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaIndexOptions.d.ts","../node_modules/typeorm/decorator/options/SpatialColumnOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaColumnOptions.d.ts","../node_modules/typeorm/decorator/options/JoinColumnOptions.d.ts","../node_modules/typeorm/decorator/options/JoinTableMultipleColumnsOptions.d.ts","../node_modules/typeorm/decorator/options/JoinTableOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaRelationOptions.d.ts","../node_modules/typeorm/find-options/OrderByCondition.d.ts","../node_modules/typeorm/metadata/types/TableTypes.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaUniqueOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaCheckOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaExclusionOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaRelationIdOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchema.d.ts","../node_modules/typeorm/logger/LoggerOptions.d.ts","../node_modules/typeorm/driver/types/DatabaseType.d.ts","../node_modules/typeorm/logger/Logger.d.ts","../node_modules/typeorm/cache/QueryResultCacheOptions.d.ts","../node_modules/typeorm/cache/QueryResultCache.d.ts","../node_modules/typeorm/common/MixedList.d.ts","../node_modules/typeorm/data-source/BaseDataSourceOptions.d.ts","../node_modules/typeorm/driver/types/ReplicationMode.d.ts","../node_modules/typeorm/schema-builder/options/ViewOptions.d.ts","../node_modules/typeorm/schema-builder/view/View.d.ts","../node_modules/typeorm/schema-builder/options/TableForeignKeyOptions.d.ts","../node_modules/typeorm/schema-builder/table/TableForeignKey.d.ts","../node_modules/typeorm/driver/types/UpsertType.d.ts","../node_modules/typeorm/driver/Driver.d.ts","../node_modules/typeorm/find-options/JoinOptions.d.ts","../node_modules/typeorm/find-options/FindOperatorType.d.ts","../node_modules/typeorm/find-options/FindOperator.d.ts","../node_modules/typeorm/platform/PlatformTools.d.ts","../node_modules/typeorm/driver/mongodb/typings.d.ts","../node_modules/typeorm/find-options/EqualOperator.d.ts","../node_modules/typeorm/find-options/FindOptionsWhere.d.ts","../node_modules/typeorm/find-options/FindOptionsSelect.d.ts","../node_modules/typeorm/find-options/FindOptionsRelations.d.ts","../node_modules/typeorm/find-options/FindOptionsOrder.d.ts","../node_modules/typeorm/find-options/FindOneOptions.d.ts","../node_modules/typeorm/find-options/FindManyOptions.d.ts","../node_modules/typeorm/common/DeepPartial.d.ts","../node_modules/typeorm/repository/SaveOptions.d.ts","../node_modules/typeorm/repository/RemoveOptions.d.ts","../node_modules/typeorm/find-options/mongodb/MongoFindOneOptions.d.ts","../node_modules/typeorm/find-options/mongodb/MongoFindManyOptions.d.ts","../node_modules/typeorm/schema-builder/options/TableUniqueOptions.d.ts","../node_modules/typeorm/schema-builder/table/TableUnique.d.ts","../node_modules/typeorm/subscriber/event/TransactionCommitEvent.d.ts","../node_modules/typeorm/subscriber/event/TransactionRollbackEvent.d.ts","../node_modules/typeorm/subscriber/event/TransactionStartEvent.d.ts","../node_modules/typeorm/subscriber/event/UpdateEvent.d.ts","../node_modules/typeorm/subscriber/event/RemoveEvent.d.ts","../node_modules/typeorm/subscriber/event/InsertEvent.d.ts","../node_modules/typeorm/subscriber/event/LoadEvent.d.ts","../node_modules/typeorm/subscriber/event/SoftRemoveEvent.d.ts","../node_modules/typeorm/subscriber/event/RecoverEvent.d.ts","../node_modules/typeorm/subscriber/EntitySubscriberInterface.d.ts","../node_modules/typeorm/subscriber/BroadcasterResult.d.ts","../node_modules/typeorm/subscriber/Broadcaster.d.ts","../node_modules/typeorm/schema-builder/options/TableCheckOptions.d.ts","../node_modules/typeorm/metadata-args/CheckMetadataArgs.d.ts","../node_modules/typeorm/metadata/CheckMetadata.d.ts","../node_modules/typeorm/schema-builder/table/TableCheck.d.ts","../node_modules/typeorm/schema-builder/options/TableExclusionOptions.d.ts","../node_modules/typeorm/metadata-args/ExclusionMetadataArgs.d.ts","../node_modules/typeorm/metadata/ExclusionMetadata.d.ts","../node_modules/typeorm/schema-builder/table/TableExclusion.d.ts","../node_modules/typeorm/driver/mongodb/MongoQueryRunner.d.ts","../node_modules/typeorm/query-builder/QueryPartialEntity.d.ts","../node_modules/typeorm/query-runner/QueryResult.d.ts","../node_modules/typeorm/query-builder/result/InsertResult.d.ts","../node_modules/typeorm/query-builder/result/UpdateResult.d.ts","../node_modules/typeorm/query-builder/result/DeleteResult.d.ts","../node_modules/typeorm/entity-manager/MongoEntityManager.d.ts","../node_modules/typeorm/repository/MongoRepository.d.ts","../node_modules/typeorm/find-options/FindTreeOptions.d.ts","../node_modules/typeorm/repository/TreeRepository.d.ts","../node_modules/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.d.ts","../node_modules/typeorm/driver/types/IsolationLevel.d.ts","../node_modules/typeorm/repository/UpsertOptions.d.ts","../node_modules/typeorm/entity-manager/EntityManager.d.ts","../node_modules/typeorm/repository/Repository.d.ts","../node_modules/typeorm/migration/MigrationInterface.d.ts","../node_modules/typeorm/migration/Migration.d.ts","../node_modules/typeorm/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/cockroachdb/CockroachConnectionOptions.d.ts","../node_modules/typeorm/driver/mysql/MysqlConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/mysql/MysqlConnectionOptions.d.ts","../node_modules/typeorm/driver/postgres/PostgresConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/postgres/PostgresConnectionOptions.d.ts","../node_modules/typeorm/driver/sqlite/SqliteConnectionOptions.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/DefaultAuthentication.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/NtlmAuthentication.d.ts","../node_modules/typeorm/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/sqlserver/SqlServerConnectionOptions.d.ts","../node_modules/typeorm/driver/oracle/OracleConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/oracle/OracleConnectionOptions.d.ts","../node_modules/typeorm/driver/mongodb/MongoConnectionOptions.d.ts","../node_modules/typeorm/driver/cordova/CordovaConnectionOptions.d.ts","../node_modules/typeorm/driver/sqljs/SqljsConnectionOptions.d.ts","../node_modules/typeorm/driver/react-native/ReactNativeConnectionOptions.d.ts","../node_modules/typeorm/driver/nativescript/NativescriptConnectionOptions.d.ts","../node_modules/typeorm/driver/expo/ExpoConnectionOptions.d.ts","../node_modules/typeorm/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts","../node_modules/typeorm/driver/sap/SapConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/sap/SapConnectionOptions.d.ts","../node_modules/typeorm/driver/aurora-postgres/AuroraPostgresConnectionOptions.d.ts","../node_modules/typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts","../node_modules/typeorm/driver/capacitor/CapacitorConnectionOptions.d.ts","../node_modules/typeorm/connection/BaseConnectionOptions.d.ts","../node_modules/typeorm/driver/spanner/SpannerConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/spanner/SpannerConnectionOptions.d.ts","../node_modules/typeorm/data-source/DataSourceOptions.d.ts","../node_modules/typeorm/entity-manager/SqljsEntityManager.d.ts","../node_modules/typeorm/query-builder/RelationLoader.d.ts","../node_modules/typeorm/query-builder/RelationIdLoader.d.ts","../node_modules/typeorm/data-source/DataSource.d.ts","../node_modules/typeorm/metadata-args/TableMetadataArgs.d.ts","../node_modules/typeorm/metadata/types/TreeTypes.d.ts","../node_modules/typeorm/metadata/types/ClosureTreeOptions.d.ts","../node_modules/typeorm/metadata-args/TreeMetadataArgs.d.ts","../node_modules/typeorm/metadata/EntityMetadata.d.ts","../node_modules/typeorm/metadata-args/IndexMetadataArgs.d.ts","../node_modules/typeorm/metadata/IndexMetadata.d.ts","../node_modules/typeorm/schema-builder/options/TableIndexOptions.d.ts","../node_modules/typeorm/schema-builder/table/TableIndex.d.ts","../node_modules/typeorm/schema-builder/options/TableOptions.d.ts","../node_modules/typeorm/schema-builder/table/Table.d.ts","../node_modules/typeorm/query-runner/QueryRunner.d.ts","../node_modules/typeorm/query-builder/QueryBuilderCte.d.ts","../node_modules/typeorm/query-builder/Alias.d.ts","../node_modules/typeorm/query-builder/JoinAttribute.d.ts","../node_modules/typeorm/query-builder/relation-id/RelationIdAttribute.d.ts","../node_modules/typeorm/query-builder/relation-count/RelationCountAttribute.d.ts","../node_modules/typeorm/query-builder/SelectQuery.d.ts","../node_modules/typeorm/query-builder/SelectQueryBuilderOption.d.ts","../node_modules/typeorm/query-builder/WhereClause.d.ts","../node_modules/typeorm/query-builder/QueryExpressionMap.d.ts","../node_modules/typeorm/query-builder/Brackets.d.ts","../node_modules/typeorm/query-builder/WhereExpressionBuilder.d.ts","../node_modules/typeorm/query-builder/UpdateQueryBuilder.d.ts","../node_modules/typeorm/query-builder/DeleteQueryBuilder.d.ts","../node_modules/typeorm/query-builder/SoftDeleteQueryBuilder.d.ts","../node_modules/typeorm/query-builder/InsertOrUpdateOptions.d.ts","../node_modules/typeorm/query-builder/InsertQueryBuilder.d.ts","../node_modules/typeorm/query-builder/RelationQueryBuilder.d.ts","../node_modules/typeorm/query-builder/NotBrackets.d.ts","../node_modules/typeorm/query-builder/QueryBuilder.d.ts","../node_modules/typeorm/query-builder/SelectQueryBuilder.d.ts","../node_modules/typeorm/metadata-args/RelationCountMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/NamingStrategyMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/JoinColumnMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/JoinTableMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/EntitySubscriberMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/InheritanceMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/DiscriminatorValueMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/EntityRepositoryMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/TransactionEntityMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/TransactionRepositoryMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/GeneratedMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/MetadataArgsStorage.d.ts","../node_modules/typeorm/connection/ConnectionManager.d.ts","../node_modules/typeorm/globals.d.ts","../node_modules/typeorm/container.d.ts","../node_modules/typeorm/common/RelationType.d.ts","../node_modules/typeorm/error/TypeORMError.d.ts","../node_modules/typeorm/error/CannotReflectMethodParameterTypeError.d.ts","../node_modules/typeorm/error/AlreadyHasActiveConnectionError.d.ts","../node_modules/typeorm/persistence/SubjectChangeMap.d.ts","../node_modules/typeorm/persistence/Subject.d.ts","../node_modules/typeorm/error/SubjectWithoutIdentifierError.d.ts","../node_modules/typeorm/error/CannotConnectAlreadyConnectedError.d.ts","../node_modules/typeorm/error/LockNotSupportedOnGivenDriverError.d.ts","../node_modules/typeorm/error/ConnectionIsNotSetError.d.ts","../node_modules/typeorm/error/CannotCreateEntityIdMapError.d.ts","../node_modules/typeorm/error/MetadataAlreadyExistsError.d.ts","../node_modules/typeorm/error/CannotDetermineEntityError.d.ts","../node_modules/typeorm/error/UpdateValuesMissingError.d.ts","../node_modules/typeorm/error/TreeRepositoryNotSupportedError.d.ts","../node_modules/typeorm/error/CustomRepositoryNotFoundError.d.ts","../node_modules/typeorm/error/TransactionNotStartedError.d.ts","../node_modules/typeorm/error/TransactionAlreadyStartedError.d.ts","../node_modules/typeorm/error/EntityNotFoundError.d.ts","../node_modules/typeorm/error/EntityMetadataNotFoundError.d.ts","../node_modules/typeorm/error/MustBeEntityError.d.ts","../node_modules/typeorm/error/OptimisticLockVersionMismatchError.d.ts","../node_modules/typeorm/error/LimitOnUpdateNotSupportedError.d.ts","../node_modules/typeorm/error/PrimaryColumnCannotBeNullableError.d.ts","../node_modules/typeorm/error/CustomRepositoryCannotInheritRepositoryError.d.ts","../node_modules/typeorm/error/QueryRunnerProviderAlreadyReleasedError.d.ts","../node_modules/typeorm/error/CannotAttachTreeChildrenEntityError.d.ts","../node_modules/typeorm/error/CustomRepositoryDoesNotHaveEntityError.d.ts","../node_modules/typeorm/error/MissingDeleteDateColumnError.d.ts","../node_modules/typeorm/error/NoConnectionForRepositoryError.d.ts","../node_modules/typeorm/error/CircularRelationsError.d.ts","../node_modules/typeorm/error/ReturningStatementNotSupportedError.d.ts","../node_modules/typeorm/error/UsingJoinTableIsNotAllowedError.d.ts","../node_modules/typeorm/error/MissingJoinColumnError.d.ts","../node_modules/typeorm/error/MissingPrimaryColumnError.d.ts","../node_modules/typeorm/error/EntityPropertyNotFoundError.d.ts","../node_modules/typeorm/error/MissingDriverError.d.ts","../node_modules/typeorm/error/DriverPackageNotInstalledError.d.ts","../node_modules/typeorm/error/CannotGetEntityManagerNotConnectedError.d.ts","../node_modules/typeorm/error/ConnectionNotFoundError.d.ts","../node_modules/typeorm/error/NoVersionOrUpdateDateColumnError.d.ts","../node_modules/typeorm/error/InsertValuesMissingError.d.ts","../node_modules/typeorm/error/OptimisticLockCanNotBeUsedError.d.ts","../node_modules/typeorm/error/MetadataWithSuchNameAlreadyExistsError.d.ts","../node_modules/typeorm/error/DriverOptionNotSetError.d.ts","../node_modules/typeorm/error/FindRelationsNotFoundError.d.ts","../node_modules/typeorm/error/NamingStrategyNotFoundError.d.ts","../node_modules/typeorm/error/PessimisticLockTransactionRequiredError.d.ts","../node_modules/typeorm/error/RepositoryNotTreeError.d.ts","../node_modules/typeorm/error/DataTypeNotSupportedError.d.ts","../node_modules/typeorm/error/InitializedRelationError.d.ts","../node_modules/typeorm/error/MissingJoinTableError.d.ts","../node_modules/typeorm/error/QueryFailedError.d.ts","../node_modules/typeorm/error/NoNeedToReleaseEntityManagerError.d.ts","../node_modules/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.d.ts","../node_modules/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.d.ts","../node_modules/typeorm/error/SubjectRemovedAndUpdatedError.d.ts","../node_modules/typeorm/error/PersistedEntityNotFoundError.d.ts","../node_modules/typeorm/error/UsingJoinColumnIsNotAllowedError.d.ts","../node_modules/typeorm/error/ColumnTypeUndefinedError.d.ts","../node_modules/typeorm/error/QueryRunnerAlreadyReleasedError.d.ts","../node_modules/typeorm/error/OffsetWithoutLimitNotSupportedError.d.ts","../node_modules/typeorm/error/CannotExecuteNotConnectedError.d.ts","../node_modules/typeorm/error/NoConnectionOptionError.d.ts","../node_modules/typeorm/error/index.d.ts","../node_modules/typeorm/decorator/options/ColumnWithLengthOptions.d.ts","../node_modules/typeorm/decorator/options/ColumnNumericOptions.d.ts","../node_modules/typeorm/decorator/options/ColumnEnumOptions.d.ts","../node_modules/typeorm/decorator/options/ColumnEmbeddedOptions.d.ts","../node_modules/typeorm/decorator/options/ColumnHstoreOptions.d.ts","../node_modules/typeorm/decorator/options/ColumnWithWidthOptions.d.ts","../node_modules/typeorm/decorator/columns/Column.d.ts","../node_modules/typeorm/decorator/columns/CreateDateColumn.d.ts","../node_modules/typeorm/decorator/columns/DeleteDateColumn.d.ts","../node_modules/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts","../node_modules/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts","../node_modules/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts","../node_modules/typeorm/decorator/columns/PrimaryGeneratedColumn.d.ts","../node_modules/typeorm/decorator/columns/PrimaryColumn.d.ts","../node_modules/typeorm/decorator/columns/UpdateDateColumn.d.ts","../node_modules/typeorm/decorator/columns/VersionColumn.d.ts","../node_modules/typeorm/decorator/options/ViewColumnOptions.d.ts","../node_modules/typeorm/decorator/columns/ViewColumn.d.ts","../node_modules/typeorm/decorator/columns/ObjectIdColumn.d.ts","../node_modules/typeorm/decorator/listeners/AfterInsert.d.ts","../node_modules/typeorm/decorator/listeners/AfterLoad.d.ts","../node_modules/typeorm/decorator/listeners/AfterRemove.d.ts","../node_modules/typeorm/decorator/listeners/AfterSoftRemove.d.ts","../node_modules/typeorm/decorator/listeners/AfterRecover.d.ts","../node_modules/typeorm/decorator/listeners/AfterUpdate.d.ts","../node_modules/typeorm/decorator/listeners/BeforeInsert.d.ts","../node_modules/typeorm/decorator/listeners/BeforeRemove.d.ts","../node_modules/typeorm/decorator/listeners/BeforeSoftRemove.d.ts","../node_modules/typeorm/decorator/listeners/BeforeRecover.d.ts","../node_modules/typeorm/decorator/listeners/BeforeUpdate.d.ts","../node_modules/typeorm/decorator/listeners/EventSubscriber.d.ts","../node_modules/typeorm/decorator/options/IndexOptions.d.ts","../node_modules/typeorm/decorator/options/EntityOptions.d.ts","../node_modules/typeorm/decorator/relations/JoinColumn.d.ts","../node_modules/typeorm/decorator/relations/JoinTable.d.ts","../node_modules/typeorm/decorator/relations/ManyToMany.d.ts","../node_modules/typeorm/decorator/relations/ManyToOne.d.ts","../node_modules/typeorm/decorator/relations/OneToMany.d.ts","../node_modules/typeorm/decorator/relations/OneToOne.d.ts","../node_modules/typeorm/decorator/relations/RelationCount.d.ts","../node_modules/typeorm/decorator/relations/RelationId.d.ts","../node_modules/typeorm/decorator/entity/Entity.d.ts","../node_modules/typeorm/decorator/entity/ChildEntity.d.ts","../node_modules/typeorm/decorator/entity/TableInheritance.d.ts","../node_modules/typeorm/decorator/options/ViewEntityOptions.d.ts","../node_modules/typeorm/decorator/entity-view/ViewEntity.d.ts","../node_modules/typeorm/decorator/tree/TreeLevelColumn.d.ts","../node_modules/typeorm/decorator/tree/TreeParent.d.ts","../node_modules/typeorm/decorator/tree/TreeChildren.d.ts","../node_modules/typeorm/decorator/tree/Tree.d.ts","../node_modules/typeorm/decorator/Index.d.ts","../node_modules/typeorm/decorator/options/UniqueOptions.d.ts","../node_modules/typeorm/decorator/Unique.d.ts","../node_modules/typeorm/decorator/Check.d.ts","../node_modules/typeorm/decorator/Exclusion.d.ts","../node_modules/typeorm/decorator/Generated.d.ts","../node_modules/typeorm/decorator/EntityRepository.d.ts","../node_modules/typeorm/find-options/operator/Any.d.ts","../node_modules/typeorm/find-options/operator/ArrayContainedBy.d.ts","../node_modules/typeorm/find-options/operator/ArrayContains.d.ts","../node_modules/typeorm/find-options/operator/ArrayOverlap.d.ts","../node_modules/typeorm/find-options/operator/Between.d.ts","../node_modules/typeorm/find-options/operator/Equal.d.ts","../node_modules/typeorm/find-options/operator/In.d.ts","../node_modules/typeorm/find-options/operator/IsNull.d.ts","../node_modules/typeorm/find-options/operator/LessThan.d.ts","../node_modules/typeorm/find-options/operator/LessThanOrEqual.d.ts","../node_modules/typeorm/find-options/operator/ILike.d.ts","../node_modules/typeorm/find-options/operator/Like.d.ts","../node_modules/typeorm/find-options/operator/MoreThan.d.ts","../node_modules/typeorm/find-options/operator/MoreThanOrEqual.d.ts","../node_modules/typeorm/find-options/operator/Not.d.ts","../node_modules/typeorm/find-options/operator/Raw.d.ts","../node_modules/typeorm/find-options/FindOptionsUtils.d.ts","../node_modules/typeorm/logger/AdvancedConsoleLogger.d.ts","../node_modules/typeorm/logger/SimpleConsoleLogger.d.ts","../node_modules/typeorm/logger/FileLogger.d.ts","../node_modules/typeorm/repository/AbstractRepository.d.ts","../node_modules/typeorm/data-source/index.d.ts","../node_modules/typeorm/repository/BaseEntity.d.ts","../node_modules/typeorm/driver/sqlserver/MssqlParameter.d.ts","../node_modules/typeorm/connection/ConnectionOptionsReader.d.ts","../node_modules/typeorm/connection/ConnectionOptions.d.ts","../node_modules/typeorm/connection/Connection.d.ts","../node_modules/typeorm/migration/MigrationExecutor.d.ts","../node_modules/typeorm/naming-strategy/DefaultNamingStrategy.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.d.ts","../node_modules/typeorm/schema-builder/RdbmsSchemaBuilder.d.ts","../node_modules/typeorm/util/InstanceChecker.d.ts","../node_modules/typeorm/repository/FindTreesOptions.d.ts","../node_modules/typeorm/util/TreeRepositoryUtils.d.ts","../node_modules/typeorm/index.d.ts","../node_modules/@nestjs/typeorm/dist/interfaces/entity-class-or-schema.type.d.ts","../node_modules/@nestjs/typeorm/dist/common/typeorm.decorators.d.ts","../node_modules/@nestjs/typeorm/dist/common/typeorm.utils.d.ts","../node_modules/@nestjs/typeorm/dist/common/index.d.ts","../node_modules/@nestjs/typeorm/dist/interfaces/typeorm-options.interface.d.ts","../node_modules/@nestjs/typeorm/dist/interfaces/index.d.ts","../node_modules/@nestjs/typeorm/dist/typeorm.module.d.ts","../node_modules/@nestjs/typeorm/dist/index.d.ts","../node_modules/@nestjs/typeorm/index.d.ts","../node_modules/class-transformer/types/interfaces/decorator-options/expose-options.interface.d.ts","../node_modules/class-transformer/types/interfaces/decorator-options/exclude-options.interface.d.ts","../node_modules/class-transformer/types/interfaces/decorator-options/transform-options.interface.d.ts","../node_modules/class-transformer/types/interfaces/decorator-options/type-discriminator-descriptor.interface.d.ts","../node_modules/class-transformer/types/interfaces/decorator-options/type-options.interface.d.ts","../node_modules/class-transformer/types/interfaces/metadata/exclude-metadata.interface.d.ts","../node_modules/class-transformer/types/interfaces/metadata/expose-metadata.interface.d.ts","../node_modules/class-transformer/types/enums/transformation-type.enum.d.ts","../node_modules/class-transformer/types/enums/index.d.ts","../node_modules/class-transformer/types/interfaces/target-map.interface.d.ts","../node_modules/class-transformer/types/interfaces/class-transformer-options.interface.d.ts","../node_modules/class-transformer/types/interfaces/metadata/transform-fn-params.interface.d.ts","../node_modules/class-transformer/types/interfaces/metadata/transform-metadata.interface.d.ts","../node_modules/class-transformer/types/interfaces/metadata/type-metadata.interface.d.ts","../node_modules/class-transformer/types/interfaces/class-constructor.type.d.ts","../node_modules/class-transformer/types/interfaces/type-help-options.interface.d.ts","../node_modules/class-transformer/types/interfaces/index.d.ts","../node_modules/class-transformer/types/ClassTransformer.d.ts","../node_modules/class-transformer/types/decorators/exclude.decorator.d.ts","../node_modules/class-transformer/types/decorators/expose.decorator.d.ts","../node_modules/class-transformer/types/decorators/transform-instance-to-instance.decorator.d.ts","../node_modules/class-transformer/types/decorators/transform-instance-to-plain.decorator.d.ts","../node_modules/class-transformer/types/decorators/transform-plain-to-instance.decorator.d.ts","../node_modules/class-transformer/types/decorators/transform.decorator.d.ts","../node_modules/class-transformer/types/decorators/type.decorator.d.ts","../node_modules/class-transformer/types/decorators/index.d.ts","../node_modules/class-transformer/types/index.d.ts","../node_modules/class-validator/types/validation/ValidationError.d.ts","../node_modules/class-validator/types/validation/ValidatorOptions.d.ts","../node_modules/class-validator/types/validation-schema/ValidationSchema.d.ts","../node_modules/class-validator/types/container.d.ts","../node_modules/class-validator/types/validation/ValidationArguments.d.ts","../node_modules/class-validator/types/decorator/ValidationOptions.d.ts","../node_modules/class-validator/types/decorator/common/Allow.d.ts","../node_modules/class-validator/types/decorator/common/IsDefined.d.ts","../node_modules/class-validator/types/decorator/common/IsOptional.d.ts","../node_modules/class-validator/types/decorator/common/Validate.d.ts","../node_modules/class-validator/types/validation/ValidatorConstraintInterface.d.ts","../node_modules/class-validator/types/decorator/common/ValidateBy.d.ts","../node_modules/class-validator/types/decorator/common/ValidateIf.d.ts","../node_modules/class-validator/types/decorator/common/ValidateNested.d.ts","../node_modules/class-validator/types/decorator/common/ValidatePromise.d.ts","../node_modules/class-validator/types/decorator/common/IsLatLong.d.ts","../node_modules/class-validator/types/decorator/common/IsLatitude.d.ts","../node_modules/class-validator/types/decorator/common/IsLongitude.d.ts","../node_modules/class-validator/types/decorator/common/Equals.d.ts","../node_modules/class-validator/types/decorator/common/NotEquals.d.ts","../node_modules/class-validator/types/decorator/common/IsEmpty.d.ts","../node_modules/class-validator/types/decorator/common/IsNotEmpty.d.ts","../node_modules/class-validator/types/decorator/common/IsIn.d.ts","../node_modules/class-validator/types/decorator/common/IsNotIn.d.ts","../node_modules/class-validator/types/decorator/number/IsDivisibleBy.d.ts","../node_modules/class-validator/types/decorator/number/IsPositive.d.ts","../node_modules/class-validator/types/decorator/number/IsNegative.d.ts","../node_modules/class-validator/types/decorator/number/Max.d.ts","../node_modules/class-validator/types/decorator/number/Min.d.ts","../node_modules/class-validator/types/decorator/date/MinDate.d.ts","../node_modules/class-validator/types/decorator/date/MaxDate.d.ts","../node_modules/class-validator/types/decorator/string/Contains.d.ts","../node_modules/class-validator/types/decorator/string/NotContains.d.ts","../node_modules/@types/validator/lib/isBoolean.d.ts","../node_modules/@types/validator/lib/isEmail.d.ts","../node_modules/@types/validator/lib/isFQDN.d.ts","../node_modules/@types/validator/lib/isIBAN.d.ts","../node_modules/@types/validator/lib/isISO31661Alpha2.d.ts","../node_modules/@types/validator/lib/isISO4217.d.ts","../node_modules/@types/validator/lib/isURL.d.ts","../node_modules/@types/validator/lib/isTaxID.d.ts","../node_modules/@types/validator/index.d.ts","../node_modules/class-validator/types/decorator/string/IsAlpha.d.ts","../node_modules/class-validator/types/decorator/string/IsAlphanumeric.d.ts","../node_modules/class-validator/types/decorator/string/IsDecimal.d.ts","../node_modules/class-validator/types/decorator/string/IsAscii.d.ts","../node_modules/class-validator/types/decorator/string/IsBase64.d.ts","../node_modules/class-validator/types/decorator/string/IsByteLength.d.ts","../node_modules/class-validator/types/decorator/string/IsCreditCard.d.ts","../node_modules/class-validator/types/decorator/string/IsCurrency.d.ts","../node_modules/class-validator/types/decorator/string/IsEmail.d.ts","../node_modules/class-validator/types/decorator/string/IsFQDN.d.ts","../node_modules/class-validator/types/decorator/string/IsFullWidth.d.ts","../node_modules/class-validator/types/decorator/string/IsHalfWidth.d.ts","../node_modules/class-validator/types/decorator/string/IsVariableWidth.d.ts","../node_modules/class-validator/types/decorator/string/IsHexColor.d.ts","../node_modules/class-validator/types/decorator/string/IsHexadecimal.d.ts","../node_modules/class-validator/types/decorator/string/IsMacAddress.d.ts","../node_modules/class-validator/types/decorator/string/IsIP.d.ts","../node_modules/class-validator/types/decorator/string/IsPort.d.ts","../node_modules/class-validator/types/decorator/string/IsISBN.d.ts","../node_modules/class-validator/types/decorator/string/IsISIN.d.ts","../node_modules/class-validator/types/decorator/string/IsISO8601.d.ts","../node_modules/class-validator/types/decorator/string/IsJSON.d.ts","../node_modules/class-validator/types/decorator/string/IsJWT.d.ts","../node_modules/class-validator/types/decorator/string/IsLowercase.d.ts","../node_modules/class-validator/types/decorator/string/IsMobilePhone.d.ts","../node_modules/class-validator/types/decorator/string/IsISO31661Alpha2.d.ts","../node_modules/class-validator/types/decorator/string/IsISO31661Alpha3.d.ts","../node_modules/class-validator/types/decorator/string/IsMongoId.d.ts","../node_modules/class-validator/types/decorator/string/IsMultibyte.d.ts","../node_modules/class-validator/types/decorator/string/IsSurrogatePair.d.ts","../node_modules/class-validator/types/decorator/string/IsUrl.d.ts","../node_modules/class-validator/types/decorator/string/IsUUID.d.ts","../node_modules/class-validator/types/decorator/string/IsFirebasePushId.d.ts","../node_modules/class-validator/types/decorator/string/IsUppercase.d.ts","../node_modules/class-validator/types/decorator/string/Length.d.ts","../node_modules/class-validator/types/decorator/string/MaxLength.d.ts","../node_modules/class-validator/types/decorator/string/MinLength.d.ts","../node_modules/class-validator/types/decorator/string/Matches.d.ts","../node_modules/libphonenumber-js/types.d.ts","../node_modules/libphonenumber-js/index.d.ts","../node_modules/class-validator/types/decorator/string/IsPhoneNumber.d.ts","../node_modules/class-validator/types/decorator/string/IsMilitaryTime.d.ts","../node_modules/class-validator/types/decorator/string/IsHash.d.ts","../node_modules/class-validator/types/decorator/string/IsISSN.d.ts","../node_modules/class-validator/types/decorator/string/IsDateString.d.ts","../node_modules/class-validator/types/decorator/string/IsBooleanString.d.ts","../node_modules/class-validator/types/decorator/string/IsNumberString.d.ts","../node_modules/class-validator/types/decorator/string/IsBase32.d.ts","../node_modules/class-validator/types/decorator/string/IsBIC.d.ts","../node_modules/class-validator/types/decorator/string/IsBtcAddress.d.ts","../node_modules/class-validator/types/decorator/string/IsDataURI.d.ts","../node_modules/class-validator/types/decorator/string/IsEAN.d.ts","../node_modules/class-validator/types/decorator/string/IsEthereumAddress.d.ts","../node_modules/class-validator/types/decorator/string/IsHSL.d.ts","../node_modules/class-validator/types/decorator/string/IsIBAN.d.ts","../node_modules/class-validator/types/decorator/string/IsIdentityCard.d.ts","../node_modules/class-validator/types/decorator/string/IsISRC.d.ts","../node_modules/class-validator/types/decorator/string/IsLocale.d.ts","../node_modules/class-validator/types/decorator/string/IsMagnetURI.d.ts","../node_modules/class-validator/types/decorator/string/IsMimeType.d.ts","../node_modules/class-validator/types/decorator/string/IsOctal.d.ts","../node_modules/class-validator/types/decorator/string/IsPassportNumber.d.ts","../node_modules/class-validator/types/decorator/string/IsPostalCode.d.ts","../node_modules/class-validator/types/decorator/string/IsRFC3339.d.ts","../node_modules/class-validator/types/decorator/string/IsRgbColor.d.ts","../node_modules/class-validator/types/decorator/string/IsSemVer.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsBoolean.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsDate.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsNumber.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsEnum.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsInt.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsString.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsArray.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsObject.d.ts","../node_modules/class-validator/types/decorator/array/ArrayContains.d.ts","../node_modules/class-validator/types/decorator/array/ArrayNotContains.d.ts","../node_modules/class-validator/types/decorator/array/ArrayNotEmpty.d.ts","../node_modules/class-validator/types/decorator/array/ArrayMinSize.d.ts","../node_modules/class-validator/types/decorator/array/ArrayMaxSize.d.ts","../node_modules/class-validator/types/decorator/array/ArrayUnique.d.ts","../node_modules/class-validator/types/decorator/object/IsNotEmptyObject.d.ts","../node_modules/class-validator/types/decorator/object/IsInstance.d.ts","../node_modules/class-validator/types/decorator/decorators.d.ts","../node_modules/class-validator/types/validation/ValidationTypes.d.ts","../node_modules/class-validator/types/validation/Validator.d.ts","../node_modules/class-validator/types/register-decorator.d.ts","../node_modules/class-validator/types/metadata/ValidationMetadataArgs.d.ts","../node_modules/class-validator/types/metadata/ValidationMetadata.d.ts","../node_modules/class-validator/types/metadata/ConstraintMetadata.d.ts","../node_modules/class-validator/types/metadata/MetadataStorage.d.ts","../node_modules/class-validator/types/index.d.ts","../src/friendship/entities/friendship.entity.ts","../src/users/entities/user.entity.ts","../src/users/dto/create-users.dto.ts","../node_modules/@nestjs/mapped-types/dist/mapped-type.interface.d.ts","../node_modules/@nestjs/mapped-types/dist/intersection-type.helper.d.ts","../node_modules/@nestjs/mapped-types/dist/omit-type.helper.d.ts","../node_modules/@nestjs/mapped-types/dist/partial-type.helper.d.ts","../node_modules/@nestjs/mapped-types/dist/pick-type.helper.d.ts","../node_modules/@nestjs/mapped-types/dist/type-helpers.utils.d.ts","../node_modules/@nestjs/mapped-types/dist/index.d.ts","../node_modules/@nestjs/mapped-types/index.d.ts","../src/users/dto/update-users.dto.ts","../src/common/dto/pagination-query.dto.ts","../src/users/users.service.ts","../src/users/users.controller.ts","../src/users/users.module.ts","../node_modules/@nestjs/config/dist/types/config-object.type.d.ts","../node_modules/@nestjs/config/dist/types/config.type.d.ts","../node_modules/@nestjs/config/dist/types/no-infer.type.d.ts","../node_modules/@nestjs/config/dist/types/path-value.type.d.ts","../node_modules/@nestjs/config/dist/types/index.d.ts","../node_modules/@nestjs/config/dist/interfaces/config-factory.interface.d.ts","../node_modules/dotenv-expand/lib/main.d.ts","../node_modules/@nestjs/config/dist/interfaces/config-module-options.interface.d.ts","../node_modules/@nestjs/config/dist/interfaces/index.d.ts","../node_modules/@nestjs/config/dist/config.module.d.ts","../node_modules/@nestjs/config/dist/config.service.d.ts","../node_modules/@nestjs/config/dist/utils/register-as.util.d.ts","../node_modules/@nestjs/config/dist/utils/get-config-token.util.d.ts","../node_modules/@nestjs/config/dist/utils/index.d.ts","../node_modules/@nestjs/config/dist/index.d.ts","../node_modules/@nestjs/config/index.d.ts","../src/friendship/dto/create-friendship.dto.ts","../src/friendship/dto/update-friendship.dto.ts","../src/friendship/friendship.service.ts","../src/friendship/friendship.controller.ts","../src/friendship/friendships.module.ts","../src/app.module.ts","../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../node_modules/@nestjs/core/adapters/index.d.ts","../node_modules/@nestjs/core/injector/module-token-factory.d.ts","../node_modules/@nestjs/core/injector/compiler.d.ts","../node_modules/@nestjs/core/injector/modules-container.d.ts","../node_modules/@nestjs/core/injector/container.d.ts","../node_modules/@nestjs/core/injector/module-ref.d.ts","../node_modules/@nestjs/core/injector/module.d.ts","../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../node_modules/@nestjs/core/application-config.d.ts","../node_modules/@nestjs/core/constants.d.ts","../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../node_modules/@nestjs/core/discovery/index.d.ts","../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/index.d.ts","../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../node_modules/@nestjs/core/helpers/index.d.ts","../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../node_modules/@nestjs/core/metadata-scanner.d.ts","../node_modules/@nestjs/core/scanner.d.ts","../node_modules/@nestjs/core/injector/injector.d.ts","../node_modules/@nestjs/core/injector/instance-loader.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader-options.interface.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader.d.ts","../node_modules/@nestjs/core/injector/index.d.ts","../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../node_modules/@nestjs/core/middleware/builder.d.ts","../node_modules/@nestjs/core/middleware/index.d.ts","../node_modules/@nestjs/core/nest-application-context.d.ts","../node_modules/@nestjs/core/nest-application.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../node_modules/@nestjs/core/nest-factory.d.ts","../node_modules/@nestjs/core/repl/repl.d.ts","../node_modules/@nestjs/core/repl/index.d.ts","../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../node_modules/@nestjs/core/router/interfaces/index.d.ts","../node_modules/@nestjs/core/router/request/request-constants.d.ts","../node_modules/@nestjs/core/router/request/index.d.ts","../node_modules/@nestjs/core/router/router-module.d.ts","../node_modules/@nestjs/core/router/index.d.ts","../node_modules/@nestjs/core/services/reflector.service.d.ts","../node_modules/@nestjs/core/services/index.d.ts","../node_modules/@nestjs/core/index.d.ts","../src/main.ts","../src/auth/authentication.controller.ts","../src/auth/authentication.service.ts","../src/auth/authentication.module.ts","../src/routes/routes.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/cookiejar/index.d.ts","../node_modules/@types/eslint/helpers.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@types/eslint-scope/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/mime/Mime.d.ts","../node_modules/@types/mime/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/jest-matcher-utils/node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/typebox.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/passport/index.d.ts","../node_modules/@types/passport-strategy/index.d.ts","../node_modules/@types/passport-local/index.d.ts","../node_modules/@types/prettier/index.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/buffer/index.d.ts","../node_modules/@types/superagent/index.d.ts","../node_modules/@types/supertest/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"9b087de7268e4efc5f215347a62656663933d63c0b1d7b624913240367b999ea","affectsGlobalScope":true},{"version":"3260e3386d9535b804205bdddb5618a9a27735bd22927f48ad54363abcd23d45","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"3284e33a45d6aa8324691ac5737d08695e35e99b5f69fdc9ef21b3c7e7fd8449","e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","1a25c4d02a013b4690efa24ab48184a2c10b1906a379565ba558b2c3ba679a6d","ba6f9c5491bcf018dbbc813e1dd488beb26f876b825007ba76db485df341a8ee","75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","fa3d0cd03fa17459d9ddd98b120b4bb084da39f0391cbdce480a6ef74be0cc7a","e3fd84e6470b7e0679c4073ee5ce971d324182486dde5a49b67cae29168b51d2","dd8331d0a5190a4735ce6c152e420230188c4966067a756673c36dd7ba72b10e","cfdf36cfc0721c29f58651fc12f0f5a349d29da3a63180afc5b3d77b95653f82",{"version":"d57e7ff5243e0dcd04cf2edf9ad9520af40edd6eba31c14c3f405f0c437fa379","affectsGlobalScope":true},"0f882d4ae58f431454030289154feb0132e1b00ca5c3197c6b749bd098aed73a","7ff7f4632a6e7b6872fb1843f3c0df495b49840eae2a23c6fbc943f863da8c29","d267771149e172ade39e3ef96b4063209d5a7e8291702fe03983aa52f2b3d5f6","a78590b0efcef281236e3234520c348d63be1d4561b63b20e6c3b6fc18b37dfb","4d59c6a10b6c79a0927c79efa89b3c9f71d174ec14ec2792076cfd2330d0cf8e","a496f51933422872de22729b7a0233589325a1a1707cccd05cd914098944a202","75b6663bc569724017997481b6b3774065c204b316cb4f5ad7df3b5162d2dce1","06a38095ad4368314366bc08f7cbc0fe274ef7321ec611005d0bdd9c6565e4d5","4599793db9aed9b84677f0ca1cf7ef3c69bb91cda4fe4329cbab778ca4d80a58","ad0028f96921778931fb8419d8de33b10908314fa99699de1702020f69235da1","ccd2a35321c0786bd3808042dc43b960cac13f2cc660ac37a0087e12bc97d2fc","df524ed01de4f19efb44bded628dbba9f840148be4b6cfe096e29d4b01589de3","2e3981b9cee48174ff85ae15019fd72933f7023a4ed05094740f7e6f7775623c","836ebdc3b9e4c006acc4f405b7e558e56d47830e05c40d991b1e27fe8bc91157","2cc6b617c6120ba64b5778ccd4b74c951adc3a3941bb6b39f47d48701c44af39","eca02b99615a8f1652e21399d832618e38bf166c0747c9247349bc901a2f7741","7f7d6d42e5780e86f5b860a6f95179fae06a368b3af28c1c4230397c47021a59","4740a7d11ab3b381be0f269f1903fb3ff226a2fba55a01756b2997e67cd853f2","863dbc4e77f0353e6f9d6bc0e2b4622d5c07ff6f099ff66cafd7924b2ff4dd3f","bf034a18ed7e2a058f9e48c4c2480a124138fbd3586a80c77736a9ec079d12a8","f88758992a0bf13d095520aacd4381fb456ff121fb9aa184e6eb0eecb26cfadc","c249e9ae33bfcad97deec3c73c9ed2656e112fbdf22deace0b39724be6a5dcf0","d8b45924965c0c4fc0b946c0b6d597aa8d5de9cdf5c727e3d39422d17efec438","d07ea953cfea0c4bd11641912846bd955f4fd26ad2b7b8a279d69c7ab9cb3add","feddabf6ab0eb191e721f0126f3db8688db97c77a1234968bde7a2d70c4ae513","dbbda62ea5f4d1f8b40cc2b7e2e2fae424abbb4715a04a3659cb8b317f7b228b","cde0568b836865a24f4ee5859462004a326dfb76d514e6f56c8e78feedebed58","7f5cb3a03588ed46d52a6c2138315d930cd6ffb5c2134247cd07bc23cbea0b5a","7797f4c91491dcb0f21fa318fd8a1014990d5a72f8a32de2af06eb4d4476a3b5","f39fb20b83c3f9853c13d4ac95533760979d3023c0a5affe2c0a62d91ab3afd8","e4fca08aed8afb32bb8643d7469810bc8681115fe398e56a028df9e73b2d867f","2622639d24718ddfccc33a9a6daf5a2dd94d540ca41e3da00fe365d2c3f25db3","078966067552650f44ca96c68eddbb8539f30ee48a9ab3f24abdcf0a4037b535","2cd6250c43dba360377481c98d48db6ab1532a7527339edb0deffddc28ba66b1","7a9d600990fbe263a23daebed9ba1bbc5761e45679a7e2b2774a42756ef077a2","66bc155515fbea8c31a4efccbbac44de7c037b01f3aa00b76312cf7252725d30","5703288ddbfc4f7845cdbf80c6af17c8cde2a228757479796c2378b1662fcd48","0dfd353f0c16dd5107a7e0713dc52d0a2538293b0a0eac6000a017f9c0a60b56","9cd683a4663ef4d9c6486f1b8a34c73bdbc344d69490931bfe2fbcada12ab35b","42f6a409bad5259ece69df25d2b8ace2ff2ade45fe6386ee45203bdd9329f971","d3b1a8b87a5e77d70056325e137a0e04d984b991546fdd3c1034ff4102d603c4","2eb162efd6dba5972b9f8f85141d900d09da4fba23864f287f98f9890a05e95f","3f878fb5be9ebe8bd0ac5c22515d42b8b72d3745ef7617e73e9b2548ccbdf54b","e9ed562b7599c8c8c01595891480a30f9945a93a46456d22ee67ebf346b7538a","e7bf975a98cecefe2e8902fb7da9314675ecdce553aea722aaec97327668e18b","3d36f93648518338c875d9f77a8eab52905365483dbb3afe43ed68f1b712b67c","4fa54df9184d291bd78b36f5063372042cd995460e906cb14014e40d1442a326","b4e32bd5e3b493e4ea6b5ec69a4c02aa1fdaa78e1df9a863bb07604de8f9d123","f6bd1aa152ca2b5064e06282ee3137842ae6825b6b09aa89a2ff063b976a56f3","bce2390bb3a76f8bf2ba4397c66db5277bf3e698ee614347e5eb79d7fc0942c6","fbdc8d7cc7daf4101bf567512c67fb990d8fe300e0ba7f213171192177f44aa0","298e0da6d858e39fc0c1eebfa4f5c8af487868c6f2e98c3ef800537d402fb5c3","3b6457fb3866562d279377f923cf3758c80ed7bfcc19414b72a24d0a98188e0c","4fb5d7efb3520b92c1b767ce18968057c5e70886d7fb3416c487231df9275af9","df2303a61eb57b2717d17123e82bc0f3fd60f6e4673cb5506192dfe23c9480bf","b104960f4c5f807535ab43282356b2fe29c5d14a02035c623ac2012be3d5f76c","a35ca245eb852b70b20300546443abb1fcbac6e5066e4baaa092af4ea614d9b5","55da140feab55f10a538a9879a97c4be3df4934cbd679665c91a7263a86095e1","1a39e51e3362aec7d4edec9b317ff83916fe0471f86ddf2d3ef3af5952e87d9e","4b3f36b96f129a8e125c91d41a05f711e73b3285f80bceb3a1aecb13c97c4502","852779920fc4220bc42ec6d3c9b6164e23ea9371a788531b48b4005fe0cb4392","9a82e1b959524c1abfeeb024ee1a400234130a341f2b90a313ce4e37833b7dd2","515b97cede17d91c9669cc1c7fb7a8a5f0a5f2d8999f925a5f70b4ebea93723e","08e8e57241f874bdbf69ab2b65cb0ee18b4183d5c9452937da49b934fc679c4b","944af466f063d4bd090ab9d988c620b90a014e919d5f78963f6074a136ea225e","644addd4811636da491c9546654bc005ba8599f23df6d731d91eba86f3137fc2","a9249493114b181814728cbfeb7234738193a4169b654ec4705d48d7a4d25222","aad6f20d6eb01192ae02294361faa6e1f320d72447b56f433db853bbe80b15ca","876fbedec2f494eb6f834ce8636b07d581c657d205d81a3ba894eff0facc6b84","58527aa45f11c9b259a6a9d78b397f35020bfbb104f4d3bb177039b5c18146bd","91b8b61d45b5d22f3458a4ac82e03b464a0926bab795a920fe0eca805ec476eb","2744532f8fb960eb78497ac660db719f503a10c801f87131d26fd9cbef75dcef","6884287c54891ac19cfbe056f3ed29cab1732a00dec69bd3b140ce62c11783c6","abc3487041159734b8611d9d6fd85de6892f11ebe8c2583baedfc1f87c53757c","cb46657d3237f80742d5701ebcced8f6e5cf8938442354387d6c77d7048dfae6","76281a3b799bbd17ec8e6de7d2fa45ccf749049fd53f00857daf0dbc449616b8","661f322e45545a554e4ffc38db6c4068a66e1323baf66acb0d8a9fa28195a669","91d70dce48c2a2bb55f0b851cf1bdba4202f107f1e8fdf45f94ff6be4b8e8f99","ce978e20a6f26f606b535f0d6deb384ae6a73f8d0bd0dfca0925f5317cad1f25","f2d3567210ca4d559d8297d6c4402599c93e3bc7485054192d38db5e132fbc0a","887d8058aeeade45984fdb8696147078bc630d3fea15ab2b7baacde0fe281fb7","ad27aa59d346179ac449bd3077d245f213152879e4027356306ccf1722d61d51","ea546a7ed9eaa71ba78d4d392509dadea4bafed283269dd6c4b09e7d8824e986","4ec0f2a141a9ae7d3557b8efe630ac2021bc3a9ac61238b59293f4cf2f196e82","b2db743c71652e03c52d51445af58d0af3316231faa92b66018b29c7ba975f6c","0863a5876c85fbaffbb8ec8aeda8b5042deb6932616139706d2b82cde9d3f7c7","1294b8ecdd212362323f349dd83b5c94ea77bfee4dad24fc290980a3c8af6ce3","ba9c46725e2a0bd9df59d3a1e801cc60f90db3ef7817131c53945dce2b8c0c56","281d373eeabf80c4851f8de991e6abe4d385c30379d80897bbc3df3dcac99cee","624c5dce95672d9dcca40d9d9d82ef855f5f902292f43aa265cc8fd963c6ce84","8a48d9c6184992d1c3ed5daa55f83d708c37582916926a5555a900608f804b60","605dd288c636cf9b5317fe76dec75d3c7fb855fdcd3ee8cb4fea7d7091ca6fb4","95addea67857d4e568a02e429b15458cec203876b2ea5f5ea18ccfeeb91b8ce0","b5a615b0ad865ffa562980a10bda162ac1744fd363b4edc2cfc664222071cbcf","bbccd721363897950a55ce09529503f25a69522e5c91a22679b66e941e5f8654","d3a1e70795c38d7851b6e4f3b441c5ffdae171d6e2576a2204b7d79059aeea66","d7b8d41887c5fccfe19802c4336d34348b752abf0d98839575699d71deff60be","063fe3004728b8516a4d799ee16f9a71801ba24e0443dd98638cef1bd4353a7c","b8a0236f47d9037efdaf93da602415ae425dababe097fc92f83fd47ce9aaa69f","fab7912fc3ff45fce2f5d5febc9494c4d0a85d6c63fff68f21e4669c32eaacb9","f6c3fcb9d75d8aea778236fd9327ceb935b41865dbf3beac698be77e0ae9018d","b20bc124abd8ee572d0d756713ff987b116cdae908a6fcbc40e80d4b999f56b4","a599f3f450ad62c3fdc0c3fd25cddcc9332ffb44327087947d48914a8da81364","645dff895168aa82350c9aa60aa0b3621b84289fef043be842f45a9c6c0ac6e2","f068ff5b7fb3bdc5380e0c677e21de829bd25cdac63a9b083fdc220fcb225280","09d2fdca6ea6c135897a26976ad3c0db724adaf23ef4e38ad852b1d8efef1ae6","15de5b7739bf7e40213a200853bf78455ee5958af08eda786605a54a7f25ade6","f3acb439e08f0c2c78c712a876dc6c2080302c46916f1d63b7dbe509616ce9ae","37862e711637ebd927907a82cbf0143ea30e95eb165df554926c43936b1d77a9","89e253db2c2cc9a510c521f14dd2b1aae4de2556ee5159ad8d118d3587e3a880","3d0a172cee184a0f4111a7bd7fbb8729af3f54b30c06a2677d85c20ea9c811ab","d6a07e5e8dee6dc63c7ecd9c21756babf097e1537fbc91ddfec17328a063f65d","6fdc88b1287c276b55b7f7c4c7b49587813c763eea9751ce0baf0a7e61cd5d89","6a02443704052768bd021f24783aa104b02ae4444e9b735317bf13c6b857a11e","37987b0fe9800cf25473c882ce07bccdab2763c5681c1a2d16816aead46aa8d1","c84c03c721154068e1a60d83e9e85819bd3ef70b824ac2edc498aa31c06e5781","c23a403716784b53cf6ce9ffff9dcdb959b7cacdf115294a3377d96b6df1e161","c96fb6a0c1e879f95634ab0ff439cbb6fff6227b26bbf0153bef9ed0aabba60d","db936079fe6396aad9bf7ad0479ffc9220cec808a26a745baebb5f9e2ef9dbc7","06bc0b9cc7bf0b92534f1517fe5adde1f23f60cc6cc5c59f8e1c65db48a40067","919a753b0cbb12ccc606c62e2d34884d75a48ba19b1dda497c72621b11dac088","2c27e33ee0bf722988da00abd582cc9b806ce3fd9153a864800a339ad13f3fcf","92d7b3a5aa5dc872e54cbad2a7094b3ea4f72c7901de1d07b4c334ff658297f0","7a52922b38e9686d5bdc6e75774929eec6688d26c1dfe4a03ddec77ede468e87","aa5efca2833d89b55248f1889a6433dab1b1f41768e9a75f8ce35f9bf56c5ec4","0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"4ffef5c4698e94e49dcf150e3270bad2b24a2aeab48b24acbe7c1366edff377d","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","3a0c45fe95e8f0e2c5247d48acf3a522d2ef29f1ab0effb3c59a9c4fdd5edbcd","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","20c468256fd68d3ef1fa53526e76d51d6aa91711e84d72c0343589b99238287e","81290114466b1a05503a1142be27f5b85b033c95eb4291359aaeeb0b8b9bdbfb","8d4c16a26d59e3ce49741a7d4a6e8206b884e226cf308667c7778a0b2c0fee7f","ee3bad055a79f188626b1a7046f04ab151fdd3581e55c51d32face175bd9d06f","d61c7c41eb1960b1285e242fd102c162b65c0522985b839fadda59874308a170",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"1dbccafbca82a60fdfb0fb3c28e2493ff76d06647a512dcf72a086022e8b6f91","d10f4929cd610c26926d6784fc3f9f4120b789c03081b5d65fb2d2670a00fa04","fb0989383c6109f20281b3d31265293daefdd76d0d30551782c1654e93704f48","a4210a84a82b3e7a8cec5b2f3616e46d523f4f10cc1576d8f2fb89d0987b341e",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","22d48bfb37261136423ac687f1fa7bd4dda3083f767416d409a8260cf92bc8fc","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","f142151303f0792b81eff90b554081d2b78b146a83a4bc573228338e70afa420","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","698ab660b477b9c2cd5ccbd99e7e7df8b4a6134c1f5711fa615ed7aab51cb7f7","33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637","a4471d2bdba495b2a6a30b8765d5e0282fa7009d88345a9528f73c37869d3b93",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","c9d70d3d7191a66a81cb554557f8ed1cf736ea8397c44a864fe52689de18865a","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"e3685a8957b4e2af64c3f04a58289ee0858a649dbcd963a2b897fe85858ae18a","3da085d344bf625767c5b1fcada31a5d94ebefc4e36bf18a676ca37460bc4e4e","006855ddea8674d084173a768f88519dc154be94eba5e2120262a33709832b9b","17dd843a266f99ca4b3a1257538bd1cc69dc5c7f2f23c3891f0430615b8c9c1c","5430364886c721a30475253356162b6c27871718094cb3e69e2bcea71a17e533","1218398da7c8dc4add10bdb3aa2856aad54b123d847eaf574d1d694ac269bfb5","189014f3213ee7457dbeea04dca10ca5d9ed2062cd39641aca5f3b4c75de9d99","b637cd92688a6cdf4f8f184ff529dc2bc7f15692828e2c0c66a60e6972f400c7","7061e83d6792897077bcac039fccf7325234004769f591c63a8cf8478bf551bb","7ab905865063322f2bba361d0f2ef93520f64a382bac13b127479860ad99f62e","277a358d61376fce7ac3392402909c96cf6a0a613146549fc0165ccff953e012","50614c808e099a1d4413786f3783d9eeaaa74b267f2c87fcf8a893287e91c301","f4cb6530f248e87cefa74ef623206fec805f6252f885f8e14ef3d1a5872cef2d","38c332caadd8391566552395d592076470a5e7423f70964620eabf05c02907cd","eb17b5bf1fc763a644c21d76572c0e41e351c3f6dfcde649428d5d829f7294d2","cb124162c87b29ff5121e3ee5bb29c782f101e0135d6c2644ab1b31d530a435e","406d6f5d3707c488362fb40d1c1f8a7b0a42b70554b427160185d93e430228f5","2e9776410c5bc290d9432a9215c67398a273e514a79b9e15f32ecddfde8a03be","313ff8df074b81d3e4f088ff3a3a06df3d9b0d0c7f55469ccc2ac887ecb6b867","c718475bca06806cc243e77777641cb67ba68f2c57321a4773ebb47760a3bcf2","96e6bf811343caab5112b68880905c5d20d9257054afac6c18e718a4c549ed27","a2793bc73ba63ca7d259cb0f0b61d0023820170d08a1f9715006c8042d060165","d5011b38165771fdf75a9a06d6d379a1fc7edd7eb695ebdc52319fb6e3c6d81f","88417fb19d339304e9616a38ea513251047c9e300c81f9467fc317df8a582e71","3e8e2d132f726dddbda57819f5391504e585cb3beab6b32203064e7e40618583","6e23627cd3f10418b5b2db102fdcf557b75f2837f266d88afac6b18f333bb1bc","866046dcea88f23d766a65487ee7870c4cf8285a4c75407c80a5c26ed250ef8d","019f4f1cbc781cc15c6173f8be5ef907405722194ab297127b3c3426e5368339","41f4413eac08210dfc1b1cdb5891ad08b05c79f5038bdf8c06e4aedaa85b943d","c79f1c8b51d8475dde8d2973f740f43ca34b1f0a95d93649cd76c1ee20abba19","35f0d2bd2c5c05c0cb19095bf5b7c44365b1c88efe6285370855b90417277a64","8264b129f4c4eb4799703f8e5ee2223a184d1cdbfc782158b1f40a88a4435a1f","527ddda6f8be1279f3294714534c49d6e90f238cea325519882ebf88d7ec5bd2","b23877792e8bd00271d0ec5d401b68e4228540a4316de3d9dfb697b955c161a4","35b2eb1de01633db90d41abe93730b29984856fcc840b4c2801bfd3761a2097b","95f0c9127b879c2fc7e31f8e09ff45bb4aae302e60f4b9ceaf4d9ee6bc51ec66","2a6b4655a6edce9e07c7d826848f72533c9991d40bc36e3f85558ad20e87ce2d","6e3d29fdc96ebbb2ac672d2dae710c689c1ea0d0e9469e0847616f3c38fd085f","d505055b8fadd42da235c85947911d8d198ad70c5f5775991e7821d4f89c90f5","8b5a5852099dca7d7e7a7cef6d681dc1586aafacdb963ca180fe5cabbfa3a24b","0d1aa3341d1ad2064adada71c5d01a2f572e4aac09410e5616d90894105a0eb9","52494ca5a884da3bf11b8165ab31429715f0970d9c6383240c5666f4bd713e01","162fafa2291749df2ab4516854aa781fcee1d9fca2ecd85fb48ae794c0700ce2","b4b9b51ee6f6309cda2e539245235a8caeca2b1d6bf12b5e5c162d17333c450f","d2ffe8356f060b88c1c5cf1fa874a4b779fb87fd1977084876e8be9eab6bf485","c76053984b39150d00ade365b096a8bc21a4a7f2ee9e0a926711b00f8e7bf701","956b510767e3d6f362ea5800510635197723737af5d19ae07ee987ea4a90bfa5","cd1a8ff61f5063d7e6e2094e25d35c90b499961b63911f2f4ae0ff5555c2b4d7","1cf09b5945779e9bc75c4dcd805fb149c28fc90da3335186ef620647a3c540e1","9cdc0b9a313090ec45b34ea1eb02fbace433f509e753634b043e9b83038261e6","c93474cff0088351a65d3cad24037874a26a5371a48528563e56efe31cb3d8bb","b4580df8ea7f62d7b06588001952bf69426e6b03cf3d2569f5f608e45f29ba08","de27f7bb9be9d8a2b4557ec6503b8a315f74d598ce9a0ab81b5ed5610e1a8e81","fe3c378dcefa7ed8b21bd6822f5d7838b1119836da75ae1e1fb485d27b8ffb62","7365bf3333d4277b6fe374ed055624e5ec080dbb919e2d78f1cb75a3f1a4b4f6","a5fbf3bc5c16ab5c84465ba7a043a4bee4c2b20bd3633d50d80118a3844edbaf","0923e4ac8c894ad507bd2daee0df66b699de88467201381ece011ba5a080e1ff","e4f6626f827ea509255647e1b6db82145a2eb1a6b46202655e7d9bb19145c33b","26e23972c40f378f0301d8d7025ea895557c2865a1a31c8ea9c3fff0dbc27075","bfddbff94132b423ad1d71bdbefb1d388c21a74ac1a8742df9324e5bf6109058","795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","6e87c0c1cf06fe7dd6e545d72edefd61d86b4f13d2f9d34140e8168af94a7b7d","cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","b8d9df5c49858df86ffa6c497f1840528963c14ca0dea7684e813b008fe797b3","340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","b1f8c85b27619ccfae9064e433b3b32a11d93d54de5a1afdaeca23c8b30e38a5","0ed6417b905cddb85f98281cb3b5b137d393955521993d9ce069d5e2d6b26ee8","f9ceab53f0d273ccaa68ef125974305dc26fe856af9a5be401ca72d0f78659d4","99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","8e1453c4f07194ab558fa0648cc30356c7536b134a8d7516edf86fd93706c222","eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","ebf6ea6f412af15674333149f7f6561c0de9e36a4d4b350daccf6c5acbbf9fa3","1d6cc6dc76a777be3856c8892addb58d60b8957730951f9ab8b721e4f7fdf7e9","7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","1f9cc8013b709369d82a9f19813cd09cd478481553a0e8262b3b7f28ab52b0b2","a314a39426700ba2b5a76c01bab321bbe79cfef898dae996e930b017fc2b0af9","7f2c10fc5de794bf7ddad2ff13b46e2b7f89ced296c1c372c5fdb94fc759d20d","6ea6e80bf94a93e4841d57878bba521822ca5e2ec7cbb626196a8efc2766eb79","fc4439e09b1562f72a4dcaa193b1ff070e0217ac94d240282871b0642953f049","8a10bdd9317aa91b37ee4b6dbd40529d0cd16353f04cf7c27b29c5604a28e8c3","fdaf3475e11582e137bd84fa19f6bdbf23623f79cecc48a4037e8fa5756ba340","5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","6b8861483f8d90261908256836f1b8951d1f4ac9a2a965e920fb18603c8d1d0a","72afd0094250e7f765576466170a299d0959a4799dbf28eb56ba70ca4772a8b4","44ec212fbf43580505de3d6054376ced252c534ced872c53698047387213efb9","4880c2a2caa941aff7f91f51948ebfb10f15283ff0b163f8ea2a74499add61aa","19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","b1048a866abac5d678376310d28fd258fd4d663942ac915a5fa90e585cf598f8","c9c6eed8faed23fc697b79d421ac443594a3458ae2a60150083ee1e860171971","9cc2a5c3e3c4be782a2300d356b94286764166acf2a6eedc83c6f7a53c0397f7","9ddf8e9069327faa75d20135cab675779844f66590249769c3d35dd2a38c2ba9","d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","69196fa55fab9cd52c4eecba6051902bd5adff63ecf65e0546cb484b5a279fb1","35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","2d3e2fc347ca7d1241058a82d68c2dd457c96ff024cdad3c380cde3fd072cc4f","b75aa590b103f8491e1c943f9bc4989df55323d7e68fba393d3de11f4aae6bb8","4894a2c13e65af4fea49a2013e9123fe767a26ae51adb156e1a48dffba1e82f7","fc2a131847515b3dff2f0e835633d9a00a9d03ed59e690e27eec85b7b0522f92","90433c678bc26751eb7a5d54a2bb0a14be6f5717f69abb5f7a04afc75dce15a4","55ae9554811525f24818e19bdc8779fa99df434be7c03e5fc47fa441315f0226","7210df9e28cc71105d8938508a8bf99e7bf7df1f18548d774d7c2accbfb3332e","b842238362d1d1879242576ea63d436daa335613559ef0aff586825638d2d47a","e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","e6b74c07c5a4e65b27f5a419467e021f61d45255d625bacffe502bd226ffc41d","e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","3ce6884df19ea1f29b33f1aa8529eb2b061ce71ed50828e4fd3b065f1d2e93ec","cd0eeda77ab149135d817ac1e1cd1e88f73bf37fe5a652b5c14e124e676201cf","cbc15ecf15b73c132087c185178ba51b7a786ff4a51b6f52a50b01aeb3d48353","8ca60a0840c741e66d4421defe62d44226167a4750fcfa080f760a8f9487fd1d","6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","c18f4f72a68275b7602e5968b862cb9b7b76ea4a1ac1b3e622f99e0b672569e8","0fdb1ed509382bd388896d3770655b0cda8c80c36f8c54b3899992f7a3a8665c","d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","f55fc3e536ab193aaabb9b6ded5f93181f81294ee65fe3199c9f4415f0f1e53c","ec8053ec564993a885ba2e2c31408369270a190a332a29fac7a825bb7e60b37c","542ecc66e4fcc33f46695ae22b1d14c075054a78c019915d556636be642465af","476b5c25e85b94e15d761bb9503f55fb11e81167df451f187f5080fca825273b","72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","52ff5e1ea35c54428b46c75fd14f87b7a7158a8f4a1ecfc4a9b996a03185c738","605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","0d276d377a0bf0f35e8d7a5b871922ebfa6aff1757d1bbe27a7982b15ce78516","9cbb45413acfdf0cc384d884de88c3f951319004450c88a2bcdad62a11bd21d9","d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","ced87f58b05e2b07e314754f0a7ab17e2df9c37ee2d429948024b2c6418d6c9f","3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","3ac0b94ba8f884f63d38450ce9e29ecd59ff00805ffdd609193d7532b8605459","a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","2828dabf17a6507d39ebcc58fef847e111dcf2d51b8e4ff0d32732c72be032b3","c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","473bf3574a48185f71b70fe839fb1a340a176d80ea7f50dee489c2dc8e81613f","2b14b50de7e32a9882511d1b06be4eb036303bc72ce4a10f93a224382731500d","eeb24fa259f000f6b51a1fe89123f55de081eb2a0ef8d8f847afd67af49cfb68","91d8f3c1c3ae5efb8564ec7cb1f8ac8bf5714eb94078fb50a761ab811963e324","e21bb2cfbcdd8ce7eebb72422f3660806724f2b16cd6ce126d527511abb3a379","c04146836a55ea071b435298335e47f569db0e4d3ae420e35c83e448f944192f","31f71fe23daabea143fc8bd21dae0d5908227180fcda38ad3674df70351f9761","68b39aecfe15b3b5b08c7de7c531e1d4c0d06095019ecd9357e67d27e4f681c0","4e1579c45e1a102078b0d24d7d05301657cf7cb2e77e2ade0c05d74e7922188b","0cb819e67e1b9dd575f53cce1a1f7267d22772b37ca60cd2516f24533b04e437","8d907f5e50623adc4e85632f1d233635dadde838208273310a11cbabb653b497","c802e72abaf33b77a58b9581d2f8e611a5fb0c94fdc4ea101ee59a78dd6ca746","8e64d7568722e6f6674e399c9e785ff23be6f970675da012f1c6f9b118b82a16","540e0eda4a2a78372dfd06a35bddca942f7ef6ca111d50be5a03836808270b6d","caafdf3ef4ee8163d9d4dcfe6bcb68a23b6c639480139407f682e13cedb473b6","ab5a144caffaf363fdb9a4ce41b1d70fc9e9efcf666f94ce463d4b239fd108c0","f171acb46af0a675915a5f5b73905d49a7255eecbc7b934878886af243d6783f","fbe89dae6da8f8e1d2c8e88014db73db978099027af2bc57883034af40e5b04a","33a9f0b6918da8adb508a6a052bf19c35d1eab2f77feed5cd1ee05201f498dd8","e80b39c0514911ee7b9130f12f9a48e7fde7e5740b7f2eea329299bd8f4c8a19","dd14d9057877b9a03fbac9e927910de0f44d2d9325e85057e6573f99560e18a1","cd57825cdf7b92345ebdd7b6f6a906731c3be41a86215c68bd83bd730ad2ff55","34916ef889a5d6dff6f613b8884e125ecc59883357126d7f69bdeb793d66fc1d","e66be854335b1fa96aa810524a94d14f324617c2d5f5437933044b0d76fe897f","42cf47eccccdd04432b96fa186c0705b89bff6689e3222c82d444b77ba458b11","641acdfefef7b22bc327a25c3923f93dbeb47ad8d74186f020bcf490978041ca","305da33cf8c29dbc59b8dd392d1c95e478bead6c18842349654a9cdb63f0b59a","3c11addb000e273a744992873f30b1a25eab9f0248f3ea6dadd1716a4ac37228","f5e0f3e2a52ac4c095380a0ec5ef2991a23773b91f42a3f97f32f2b50100713b","b9c89b4a2435c171e0a9a56668f510a376cb7991eaecef08b619e6d484841735","b85baa660305c65d45f97f5b227b1505a8023955f1bf27da178232e7be99cc12","d5dd266b6f5c9c24f6b4001e172615626a51e350b3267b4af3970e4fb2c57fab","89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","ac10457b51ee4a3173b7165c87c795eadd094e024f1d9f0b6f0c131126e3d903","b2f2311d7085a1feec3f6a85d7cc8bdaf1d976de1874c1f92940ad8ce6a34d39","954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","4ee1e0fea72cd6a832c65af93b62fbf39b009e3711384bb371b48c9abba66781","d35fb65da678a4971822249d657f564ff6bdb6618428642235c4858ebafb2379","b27a613e49e00740db23e2e267b8e44e51ee85a448e787b7fa7c7a7be7316104","4d54136f3080a92f0b031115719321fa25bd855582c30f7f6b6e78969ffe7ec5","6c7554f14f08d3264e220f6ac82cf00e3b6a3bd15ec676bd97bf0e06da79e18d","a2506732a96c864f9336a4fc0403f7f4f3831cfe1db4a40ddf95866dbe2d28ef","8aa451aa2c6e762f359e6fae74e2903f6e3304b1a5ae19c1da548128ddf25add","2e756f5c2e33e9b28aebe174d147a19b46f2364027050acb8c8c2f83e005b2ec","434ea45c930ac3accf5951ac80af2da02a3e0945d33f1e59dbd3a50498cb519b","dc5f64a739746e51c220dceef9b4de820a1daa2dea3254d63bba9988ddcb500b","ab555ebf13e4f021233b5dbd6876eb2a4514aa651693ba9fa38d1e7e7df3b841","6b3233127e08357fda5142130d43a222ed0dac32861ac6c72f8288c0c79cf749","0d4dab75055c9279cb1dcb693cf8568bd724e4f653fd95a3a82ad2e267c4dda6","5b3a3cb1fddc72107030fb0e13f015deff38eb738e50f3db4dfa5eaa2adeabc2","df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","32f19b665839b1382b21afc41917cda47a56e744cd3df9986b13a72746d1c522","405fa7000efd4f0317eb31fa76ed40bad16be48ef2efc88b53bbe439fae74aaa","3e5a089877b3647b42c6f8d8284ff26e57fd3d94f1b1736080079796b994a89e","fde8122ba963e8f7ef9da2a35029632dc8637e9740c9d8cc9745d94ca42e6762","5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","a33c72cfb6c71ffe8074a297ebd448d8a3b504895fc7b64c13d3aaee48b2a02c","9f96b9fd0362a7bfe6a3aa70baa883c47ae167469c904782c99ccc942f62f0dc","5df9a68835c1e020625127d8c951c90808d319c811fc3a780d24f64053192ea4","71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","67f7637f370ee8c18fe060c901e071db2c4368de90a5c58cf1f959d12b0c2f7e",{"version":"e1ff31050a58b42b49a749d4ae725e2ad20c5e59a0d524cc0f6e85468065dd8d","signature":"653711fba8904aa27fd8911b63cf526e7b334e13a292da4cefdbbe179ac3f3f2"},{"version":"260f889b9e2b69f77be1155348eb345166aec664b3efff6720053c6844a41f28","signature":"ef022c91ea9e75ab4082f2e881f9c4db7b346be2da706e876b253bebce5e6140"},"266f841bfbb4358874546e9b55f87c99f0b88e28c42544be9cdf7676a9bbdc9a","905fd426fbc5b7ed3d7f7caa57e1bb66f515f54c7a7e52e79bfdc5599fd62025","c3218428a1422d031abb242c791f76882a959391d676697c52c58feb123cc739","8744deeec972d07732ef9260eff40135ef860660f5613440a0e2060f9263c39e","78f7fad319e4ac305ffe8e03027423279b53a8af4db305096aa75d446b1ec7af","f855d47e6066386d0c85b891c9ee4870b34b43d55dcb3563e59e60c0759be6e4","42f44c5a2957b5ebddf155f15c111f281c3446e55bddd6a6cb9505d7a683ee58","b19fc2f23b90bdec3fd4c82e4925531bbcb14faf01b5b193177c400589cc3e38","461b9c8ab90a70f0fe45eace1c7f21ea6f71df10d8c8b97ecde58af9be90a978","3d9d985d41e536fcf79fc95082925c2f1ae5ade75814ad2bd70c0944747f7ac4","6487db18e561de4119f4aab0bbcc6b31aba3f3e5cfe78cef5af018acbe40ef13","b0e6f1b1569779cf567317c2265d67460d1d3b4de4e79126533109d87dc16d50","18cb8be1326ffa4158abd8d84c9b0a189c0f52201f12f7af2d2af830c077f2bf","b08fc2b6ccd4d3db42af01b3c6390fc1e30dc1d95496d9a8ee5f9319c2e4883f","4c608b30e56a915fa9ae7392127d2c2dc1c6840eb5b031f4c52f1011403ecc79","80c538ee6a62249e77ba3de07efb23d4a7ca8946499c065261bf5079f1cd3cf0","ad4277862bdcbe1cf5c1e0d43b39770e1ccc033da92f5b9ff75ca8c3a03a569b","46a86c47400a564df04a1604fcac41cb599ebbada392527a1462c9dfe4713d78","f342dcb96ad26855757929a9f6632704b7013f65786573d4fdcd4da09f475923","f10f3eaf960d85799ad9e65d8a1d0ac75c07a04991fb527ea17454eb4601d129","f3bb275073b5db8931c042d347fdce888775436a4774836221af57fdccec32ff","03cb8cb2f8ef002a5cac9b8c9a0c02e5fd09de128b9769c5b920a6cbfc080087","3e5ebc3a6a938a03a361f4cdb9a26c9f5a1bac82b46273e11d5d37cd8eccc918","a0a7800e71c504c21f3051a29f0f6f948f0b8296c9ebffeb67033822aabf92e0","6a219f12b3e853398d51192736707e320699a355052687bad4729784649ff519","4294a84634c56529e67301a3258448019e41c101de6b9646ea41c0ecdc70df92","be632f03039023eca4074ace79a71d48475f9bc4f07a4362bfe104d1fe1fa095","27f24ba43083d406b372e9eff72dbc378afa0503dac1c1dd32499cc92fc9cb22","12594611a054ca7fe69962f690a4e79922d563b4b434716eb855d63a9d11a78f","1440eca2d8bc47ebdbc5a901b369de1b7b39c3297e5b4ac9631899f49ea9740b","fc9897fbada879bda954603ea204c6e5df913262a90ad848b5efaab182b58033","93443b2da120bea58eb48bd7da86559d4cf868dc2d581eebf9b48b51ba1e8894","092b55cc1f0591a55edbd4d7cb84b905dbc82ba5ab0c830004be50b82ea2149a","c2956026078814be6dc01515213aeb1eb816e81715085952bbc97b7c81fe3f6d","ac3a69c529ab256532825b08902aec65d0d88c66963e39ae19a3d214953aedc5","fe29108f3ddf7030c3d573c5226ebe03213170b3beca5200ca7cb33755184017","04d5bfb0a0eecd66c0b3f522477bf69065a9703be8300fbea5566a0fc4a97b9d","d5e3e13faca961679bed01d80bc38b3336e7de598ebf9b03ec7d31081af735ad","de05a488fb501de32c1ec0af2a6ddfe0fdef46935b9f4ffb3922d355b15da674","9f00f2bc49f0c10275a52cb4f9e2991860d8b7b0922bfab6eafe14178377aa72","1cf086abc7abb48f994d986b3cc6bdf70c343a5661315f6bb982378b21b55435","7cd2a28853ccfdcfff5e37a401cd54a3eacea580c977f137563ec012ca977028","c6688fd4c2a8a24c9b80da3660a7a06b93ed37d12d84f3ba4aa071ffc125e75f","3c725b4c73af44a1eedda6cbbea47d8fdc71d464e13633750aebe0af76bc2469","d8b8f783622d25039d66c910e13dc683914f384dcff6a5e959c41ee2be6085bc","30f116226d0e53c6cbbdbc967479d5c8036935f771b2af51987c2e8d4cc7fc6a","96d0b30941869a9762d553f8a7ced3dc9f66fb6027e4b7808ef758864a844c6a","0a394432809e8d612d8bf21ed34524906b158fd284d2c616461ee57d88376ec1","eae8c7cbcb175b997ce8e76cd6e770eca5dba07228f6cb4a44e1b0a11eb87685","b3ded8e50b3cdf548d7c8d3b3b5b2105932b04a2f08b392564f4bc499407e4e5","4ed2d8fb4c598719985b8fbef65f7de9c3f5ae6a233fc0fe20bd00193c490908","512a079a1a3de2492c80aa599e173b2ea8cc6afb2800e3e99f14330b34155fe1","a438d636201117d2dfaccbecbe3ae212347dc57f549afeda459ec8dc0f508e27","8e3842ba15690ab4b340893a4552a8c3670b8f347fbb835afe14be98891eef10","c20fe75426bf9281b4b5ac93243ca7d93c55d9e9f5146b755028a2136302bef7","b76ff8ee30b04f14b888058638b1327800df8cf326b0ff1cb4284cb8f39e6e42","a49e3af85d547004bcd8535e19b328cd39f7164abcb4e10e52763e167740abbb","9b1f38160faedf5b9fa8b547c095c9f657c64f0704d8cc9b0691627cee7aee90","abcb5db28886eec7437cb341a42fec07580fb1fbc927d1bd4f0f22b558a7aa9a","4beea7fcc7712d7eb49d4981179562b82f5b684d87e18c32bee8d255f69f4582","9d2e963a1608ebeea2728bea165742680cab4dea64542b7382a70644f82da649","9d1d33309b69e7a14fcaff4c9e948071a3de86492d6a45ab74a6b5106d093fee","dcd467dc444953a537502d9e140d4f2dc13010664d4216cc8e6977b3c5c3efa3","7beb07ab8013f30190843b263131b359e2a379c5c7ff3a364093ca8c093e888a","e1e94e41f47a4496566a9f40e815687a2eca1e7b7910b67704813cf61248b869","557ba6713b2a6fefd943399d5fb6c64e315dc461e9e05eaa6300fdbeeda5d0a1","79234a44f019c436d072867fbd81401c5cb978b749eeac2541fc97185dbed4bf","948ec1e9074e490efbdf11e27eae725994c54a714a64ae81699ee112b293c459","1a014a8365354f37ea245349a4361d3b46589be7921fe7f1dbf408cc0f084bab","14432323be617a60f1a59b9b5fba6e17fb3567b4797956ca72d31cf81e7c609d","0f864e4e7f9d46c2b3390c00a6b0c482cd49bd620680645c86260954f10130d1","efee7c7b369dcf46f5bae916b2e42bb7a5b8ccff86244ed22ca7061f740c853b","0682933253acfbb335f3a35237f64333554cf22f162ea33ffc8abf5c41fe25b6","d6db974317fd9ff66a923555464850dcf87976054a7adacf09d53323f64686d1","e8eda00c336e56a738808b630c7f6a21c62e27852dd9479e62d6832ba6cdfe3d","420e5c4a985fe8cc85cab454cd63ee795bcc31946dbd5ef2a62f35b4ecfca822","43d0992dbb69eeda881e711657320e1c8594323f6c2a6d1e6589b7cd059db299","0a23b9a5fb15b5884b7ee4da8d33f355cf1fec35dc1fbf1c46cd8d23bc0e937b","a9417a980a4300048d179d0295e5b7dd76e4db7b566344779ee576cbd084b3c4","b96760c030c41fa078b35ea05fc3e7e4d2a81710a8329271d42b6abc110d5dbe","79e547f62ab32021b1cacf1e874fa3d0696468f5ac2a76783b90392a4d900cc7","1154ed167b954ffb24a95ec3b11b1519a597024e7fda1df63c144962bc523aaf","174a3381f98fc78c451528cb1aa1baaa37a51852ec6fa90d42efd876301537c1","c175dc4e81528d24cfd7b3830dd6e3f4bbba756f0eafad12b055bc7c66ece4ac","1a17bcbc124a098987f7b1adbbcd412f8372ecb37e352b1c50165dac439eee5e","0ef49170735d9e5902f55b72465accadd0db93cae52544e3c469cbc8fbdbf654","f68a30e88dfa7d12d8dd4609bc9d5226a31d260bf3526de5554feed3f0bf0cb6","1fffef141820a0556f60aa6050eccb17dbcdc29ecd8a17ee4366573fd9c96ce3","d2598c755c11170e3b5f85cd0c237033e783fd4896070c06c35b2246879612b8","8d2044a28963c6c85a2cf4e334eb49bb6f3dd0c0dfe316233148a9be74510a0e","4c1f2da4e18122d57a16e4c6ea4b6fe60ea4f65b14e77cb20339f9158b27ca12","54a4f21be5428d7bff9240efb4e8cae3cb771cad37f46911978e013ff7289238","2411942fcfd1c06aa6a24a12e12819366c5cf0556600c73a3f02f10d5f11d5f1","cc4483c79688bd3f69c11cb3299a07d5dcf87646c35b869c77cde553c42893cf","faf76eeb5dd5d4d1e37c6eb875d114fa97297c2b50b10e25066fed09e325a77a","b741703daf465b44177ef31cc637bde5cd5345e6c048d5807108e6e868182b01","bbca0eb1a05fd2e38f4ffc686ba36ffece50c11ba13420cc662a73433c94bf74","d8acc6f92c85e784acbbc72036156a4c1168a18cba5390c7d363040479c39396","abf8ff4b01b0b2744d00314df2b7dad119edc90782542ebddd6c180d7cdaa882","5eb09226bfa1928721a438e37c004647fc19d8d1f4817bddcc350e57fb32935f","5994ed389d7fc28c03dad647ecb62e5349160bde443b0c7a54e0e10d6368bcbd","e1ff7df643e1aa1dbf1863113a913358844ed66f1af452e774834b0008e578b2","c5114285d0283d05e09cd959e605a4f76e5816c2fbe712241993fd66496083e5","2752e949c871f2cbd146efa21ebc34e4693c0ac8020401f90a45d4e150682181","c349cea980e28566998972522156daac849af8a9e4a9d59074845e319b975f5d","0370682454d1d243b75a7c7031bc8589531a472e927b67854c1b53b55ee496ea","cf6b4dbb5a1ac9ece24761c3a08682029851b292b67113a93b5e2bfd2e64e49d","1e4052b30bfb40b37a9600ede826d619ffa5573f5aba117d93fd9be8464b4366","f8d6929424cb89a1762f64c599c7b04f6d081ffdf292f41c872aaa4232d053bf","d1b5663356da50b06bf7a8c547dd30161d6435f8061678437c06efe2d1c3f66c","ef19d5fe42541f8b529bccd10f488d12caefa3b57a0deb1ed6143219cba716b4","84b5e6269d7cf53008a479eeb533ef09d025eafb4febe3729301b8d4daf37ff2","04196b5d9edd60b9648daa329c3355d7c95f33b7e520e7835eb21002174a8b8c","9f11466e95596aa782a117881a9a39367bf03cc9c220e7993ef494b91de367a7","e25ed7c94d5e9ce4609631f10ca935a57bf9d717a90e0e3cf7bebfcce63857e4","c8eeffebe6c2c6800f73aa59d1436d4dadbad7f3ddda02a831ffa66114c3122d","08622c670eede318814c2e8641fc2e28bbc814c7ca80ad9446317ca129a81938","4283d88023e6e9645626475e392565464eae99068f17e324cfc40a27d10fe94f","7173502081d153bd441c3c6e053984bf390961fc248e5f7d4b41ae7747839359","a4c246df2480db5313112879a9c538cabeff36b9129ca6137437caef5f92af3f","1bb406234b0cef01286fb25803c6fe5c79eb5a9a52218c93d8e2f34086b932f4","956fbf891730710de96ef68c2d08a029c9d2bfa88ec81078099a38c5c9cfa37f","833f0c05b6f98feea4028eda2de08ea075a5094c01805399a6d93657dbab1ccf","371ab2e2daed8d299bfe0c5fbf1e5a588235854c5f705704540f61e3127cdbb4","ab159dda8873292919fb0d498cafd4c922c2969928eced2b834062b4ffc2d7c7","360c7f3c4d4e3a39576da1969a11081097fdffe388bf6d2d62a13ae77f0b0942","3e855437e99a09e54d2813e8e0ddcc78caf14dc9709c35ac93cdc35f2b581abd","5d6a095deeceaeff22c90fc3fdc773034fa6db61384f7b0cd115fd3e142e430c","32f9169fb6cad29917b3f1670550df48ba30dee34dcb0bffaed13947b2e0d2d2","8dbf2e0d9d0ba5141b59a5a47483e27743944f28d25a34512fddad8045fa6b11","75b57ff865193c2edb98c06343a5a309c63a45048f0d01835429ace09faa5b9f","59c2cbf84c22fae87f4f506f36a7258a72b931b602115067dfd6008ee526f8c0","1e09cd1bc6b6baa0733e1e799c4533105ea79cbb109937c71e8c870e14693216","ba25681012e5117866a2456dd3557e24aa5a946ed641126aa4469880db526883","2b1e058a8c3944890c7ce7c712ecfd0f2645420ee67537ac031d7afe6feda6e0","175dbcd1f226eebd93fd9628e9180fb537bb1171489b33db7b388ef0f4e73b37","69ec6331ee3a7cd6bade5d5f683f1705c1041ff77432aa18c50d2097e61f93db","06f34a0f2151b619314fc8a54e4352a40fd5606bda50623c326c3be365cc1ef9","7ef2a14da62d77cb343dc94f7b0dd394030f779a8009c4d0bb7ea829f26973b4","bac6ed30fccf995d09aa07347cf226c19468897e83fc462bdd10540ba015ddca","6c3d3586d8fff56a9763c47133b4a9230480534471b38c7a2f688eac5d819164","1b91b4d73641b4434ca2603b42e20f6a579cc5d2e29dd09676721cd64e9fd6a3","cbd5bddc5bb478cb452abc0eb6468376aaca693efa65f8627ee35821d631eddd","70a3659d557bb683091f9d318762a330a3acb3954f5e89e5134d24c9272192f1","d9fe2c804f7db2f19e4323601278b748dc2984798f265c37cd37bb84e6c88ab8","3525647a73ae2124fa8f353f0a078b44ff1ee6f82958c2bb507de61575f12fff","d7238315cbd18ebeed93f41ad756a0ed9759824b9b158c3d7a1e0b71682d8966","eeba7376ce9721610d3282a4159f3c60154b7b3877fb251f7b3211b085cfdc18","54b0cc65b2e86cc59adf157b32b4fde2143ac2ed733f91a26f06c90d93ed9fe6","788c870cac6b39980a5cc41bf610b1873952ecdd339b781f0687d42682ffc5dc","d51a2e050c8a131b13ec9330a0869e5ac75b9ac4ebde52d5f474e819510b5263","3544b854dccadff219b992b2e5dadfbd7a8e0b9815d6d56006775a17e6500568","6c034655fa83236bd779cacfc1d5b469d6e2150a1993e66ecca92376a8b2c6a7","4d90d2c0e2da72b122cbd8578bf5324a9a98cf1bd370804261eeb2447ddc753f","658cf468a05b2b591fcd5455a76d9927face59ac4a21b4965982b3c234f5d289","107289b58a6017f681fc245443183ce9f5abee99bc4574782854613143d2f689","18006f71012652a98486900031259844ab599473acd3ea89052d9276f27e7c0f","4fed67df4d254bc1196516fd0858e2be233d13a96b8cda58b1e9c9aabf2b74a4","480c58b4780afc8ae54bc51e488b99dac649e79ea172ee5e40a0b860db8af8aa","a905f2f6785e3971bd97c42191394209d97f2aefb11841f7353dd9789821fa8c","e099c5ebddf80ae7285d380c7dd3b5d49c1347346ced51ae121b846833a8d102","f737b3fc4b3a8e22d773f346ce67ac7ccb257c683269ff66d94e81d0a817c972","2f13a677ab7cf82953a8f156d43286d76e7d48f56132f7a8b3a72f908b99fac7","a096ec0badb5f63acd58ab838159b70e5e5e6351cbfa91cc4272bb81325539b8","244511898fec5159e9e5d00880e33745a947a09cb9007922dbecc60e007cda6c","90d202ace592f7b51b131a5890ec93e4df774c8677a485391c280cef0ea53f48","b34e1861949a545916696ef40f4a7fe71793661e72dd4db5e04cacc60ef23f7a","c6b3ef690156e63364dc2132fb98b9cbb2c86eff764dabe59e48b8be7794eeaa","a3ee2eb87d12e95e37defeffbe209e0901190a82f234cafd67de3d2e2a08eb4a","5c60d93010bd9b998fa8ba50e1f9914458643b3756edbdc5fa8ff53d2e6762db","69dd38e25b0a8ecd40638fadcb47935834a02b2b631bc4811484ef9fa4a7c83b","fdabf0c2593658f129c87c8052c5f8bff9a959f8dd2c5b6522ff3d10f64ad9d5","7ed8c65a78b5116d015b22bcac6a413f8c60edf5396cff3d474b5065a10720a2","d2ff82b084732349284d12417b09d44c35f86b01302c13acb618628c0ff88a79","6dcb8b38f73dde15ebad7f6851a02008b624176b4ceaebd1805b3764ec0529d7","74ffa4541a56571f379060acaf9ab86da6c889dfe1f588425807e0117e62bba5","cf4dc15ca9dc6c0995dd2a9264e5ec37d09d9d551c85f395034e812abdf60a99","d8cb5df191b81f6360ebcdd98f28e0a34271e4dec731325e6edb8eb59389ff01","4cb49e79595c6413fcb01af55a8a574705bf385bd2ec5cf8b777778952e2914a","d6b44382b2670f38c8473e7c16b6e8a9bfa546b396b920afc4c53410eeb22abf","3b5c6f451b7ad87e3fcd2008d3a6cb69bd33803e541e9c0fe35754201389158f","548ef4a7ba09bdd5a03e3be32ecfd4efac910d86691444f80f56d95bd65d6d9d","5915aa2829219dab6124f5a331d31fbf14e08270129b5e46132ad4e6f325dd9d","6f0636a51f36e9886c8f8ddee4e7c55b973fa0e0639f89181a78cd02aa3b835c","7232467057ec57666b884924f84fd21cd3a79cc826430c312e61a5bc5758f879","77c4c9f71f3736ed179043a72c4fad9832023855804fbe5261a956428b26a7a6","f5aa57712223d7438799be67b0c4a0e5ac3841f6397b5e692673944374f58a83","774c37f8faed74c238915868ccc36d0afedfbafb1d2329d6a230966457f57cbd","bc41b711477270e8d6f1110d57863284d084b089a22592c7c09df8d4cc3d1d20","7ae43fe28c94e4eb59f4e6dea5eebde79e8f05baed783af710745b143e1c7522","a94cf65711623cc14027a285d75bfec24d74031267d7242e400cb37e5e1b66d4","228ed3721f42cc25bfebceef33754ce4766414d975ff71d012f01f141dbe3549","08985cdb65bbfe3c70d0037794a3d0f0a5613f55c278c77277a7acc17205db57","f808ee8ab220e4aae3b66269d5d9a4a60099e90c06cf3d6b5930d98241223f87","28ca3153af5ac17cf793730ed75c7f7b4efe73706ff90d0a9760b11162662f43","c86fea295c21ea01c93410eba2ec6e4f918b97d0c3bf9f1bb1960eabe417e7eb","05d41b3e7789381ff4d7f06d8739bf54cc8e75b835cb28f22e59c1d212e48ff3","6fbcfc270125b77808679b682663c7c6ad36518f5a528c5f7258bcd635096770","94169a40e1ac690c161c8e61b388d298ab202c9b95a885532d2e54686e24adb3","f63be9b46a22ee5894316cf71a4ba7581809dd98cf046109060a1214ee9e2977","dd3cc41b5764c9435b7cae3cc830be4ee6071f41a607188e43aa1edeba4fbb3e","b2dbb9485701a1d8250d9a35b74afd41b9a403c32484ed40ed195e8aa369ae70","5aa7565991c306061181bd0148c458bcce3472d912e2af6a98a0a54904cd84fc","9629e70ae80485928a562adb978890c53c7be47c3b3624dbb82641e1da48fd2f","c33d86e1d4753d035c4ea8d0fdb2377043bc894e4227be3ceabc8e6a5411ab2e","f9ec74382c95cbc85804daf0e9dabed56511a6dfb72f8a2868aa46a0b9b5eafc","be32c0a0576265a4dee467f328c5945805a832e6268d312ed768cae1f2666fa6","af9692ce3b9db8b94dcfbaa672cb6a87472f8c909b83b5aeea043d6e53e8b107","1d16150c6560d5830ba826de9b2b8e776e52ce59b051d082605cc1f74dc9607c","3d313ac3b3b188659739203dfab38560303464ffafa899dd8d0f94dea9f645af","690e6a9ba3e36cdd57d83edd2892997bd861aca0e4ebbcc08bd62019381dbc53","90878ed33999d4ff8da72bd2ca3efb1cde76d81940767adc8c229a70eb9332b2","d7236656e70e3a7005dba52aa27b2c989ba676aff1cab0863795ac6185f8d54f","e327901e9f31d1ad13928a95d95604ee4917d72ad96092da65612879d89aba42","868914e3630910e58d4ad917f44b045d05303adc113931e4b197357f59c3e93e","7d59adb080be18e595f1ce421fc50facd0073672b8e67abac5665ba7376b29b9","275344839c4df9f991bcf5d99c98d61ef3ce3425421e63eeb4641f544cb76e25","c4f1cc0bd56665694e010a6096a1d31b689fa33a4dd2e3aa591c4e343dd5181c","81c3d9b4d90902aa6b3cbd22e4d956b6eb5c46c4ea2d42c8ff63201c3e9676da","5bfc3a4bd84a6f4b992b3d285193a8140c80bbb49d50a98c4f28ad14d10e0acc","a7cf6a2391061ca613649bc3497596f96c1e933f7b166fa9b6856022b68783ab","864c844c424536df0f6f745101d90d69dd14b36aa8bd6dde11268bb91e7de88e","c74a70a215bbd8b763610f195459193ab05c877b3654e74f6c8881848b9ddb7f","3fa94513af13055cd79ea0b70078521e4484e576f8973e0712db9aab2f5dd436","48ffc1a6b67d61110c44d786d520a0cba81bb89667c7cdc35d4157263bfb7175","7cb4007e1e7b6192af196dc1dacd29a0c3adc44df23190752bef6cbbc94b5e0b","3d409649b4e73004b7561219ce791874818239913cac47accc083fad58f4f985","051908114dee3ca6d0250aacb0a4a201e60f458085177d5eda1fc3cde2e570f3","3744239074f9d681192bc60dea91e30360e28c96207f53d2e80d64956ac8e63a","d82609394127fb33eed0b58e33f8a0f55b62b21c2b6c10f1d7348b4781e392cb","b0f8a6436fbaf3fb7b707e2551b3029650bfaeb51d4b98e089e9a104d5b559b5","eae0ac4f87d56dcf9fbcf9314540cc1447e7a206eee8371b44afa3e2911e520c","b585e7131070c77b28cc682f9b1be6710e5506c196a4b6b94c3028eb865de4a7","b92ac4cc40d551450a87f9154a8d088e31cff02c36e81db2976d9ff070ba9929","6f99b4a552fbdc6afd36d695201712901d9b3f009e340db8b8d1d3415f2776f5","43700e8832b12f82e6f519b56fae2695e93bb18dddb485ddea6583a0d1482992","e8165ea64af5de7f400d851aeea5703a3b8ac021c08bebc958859d341fa53387","6db546ea3ced87efda943e6016c2a748e150941a0704af013dfe535936e820e1","f521c4293b6d8f097e885be50c2fef97de3dd512ad26f978360bb70c766e7eae","a0666dfd499f319cc51a1e6d9722ed9c830b040801427bbdd2984b73f98d292a","a7d86611d7882643dd8c529d56d2e2b698afd3a13a5adc2d9e8157b57927c0da","7e4615c366c93399f288c7bfbaa00a1dc123578be9d8ac96b15d489efc3f4851","f2e6c87a2c322ee1473cb0bd776eb20ee7bff041bc56619e5d245134ab73e83d","ee89bc94431b2dfaf6a7e690f8d9a5473b9d61de4ddcb637217d11229fe5b69f","a19c1014936f60281156dd4798395ad4ab26b7578b5a6a062b344a3e924a4333","5608be84dd2ca55fc6d9b6da43f67194182f40af00291198b6487229403a98fe","4a800f1d740379122c473c18343058f4bd63c3dffdef4d0edba668caa9c75f54","8e6868a58ca21e92e09017440fdb42ebfe78361803be2c1e7f49883b7113fdc2","2fbb72a22faefa3c9ae0dfb2a7e83d7b3d82ec625a74a8800a9da973511b0672","3e8c1a811bad9e5cd313c3d90c39a99867befa746098cdad81a9578ac3392541","d88f78b4e272864f414d98e5ed0996cd09f7a3bb01c5b7528320386f7383153d","0b9c34da2c6f0170e6a357112b91f2351712c5a537b76e42adfee9a91308b122","47adac87ec85a52ed2562cb4a3b441383551727ed802e471aa05c12e7cc7e27e","d1cacf181763c5d0960986f6d0abd1a36fc58fc06a707c9f5060b6b5526179ca","92610d503212366ff87801c2b9dc2d1bccfa427f175261a5c11331bc3588bb3f","805e2737ce5d94d7da549ed51dfa2e27c2f06114b19573687e9bde355a20f0ff","77fece0e88132fb5383810d303de6152ea8f2ff1ed2cd4ac1abd69a7fc570cc5","a37b576e17cf09938090a0e7feaec52d5091a1d2bbd73d7335d350e5f0e8be95","98971aa63683469692fef990fcba8b7ba3bae3077de26ac4be3e1545d09874b8","c6d36fa611917b6177e9c103a2719a61421044fb81cdd0accd19eba08d1b54de","77081112c1ca3ad1670df79cdfd28a1f2fd6334a593623aaf7268c353798e5c3","5eb39c56462b29c90cb373676a9a9a179f348a8684b85990367b3bbc6be5a6e9","d77a02413f5b0f845a39546255af68ab04c906b07c5f3385f9b6fb64fb75d5f1","731d07940d9b4313122e6cc58829ea57dcc5748003df9a0cad7eb444b0644685","b3ead4874138ce39966238b97f758fdb06f56a14df3f5e538d77596195ece0b5","032b40b5529f2ecce0524974dbec04e9c674278ae39760b2ee0d7fce1bb0b165","c25736b0cb086cd2afa4206c11959cb8141cea9700f95a766ad37c2712b7772b","033c269cd9631b3f56bb69a9f912c1f0d6f83cf2cff4d436ee1c98f6e655e3b5","bd6d692a4a950abbfabe29131420abe804e7f3cc187c3c451f9811e9cf4408ce","a9b6411417d4bffd9a89c41dc9dedda7d39fb4fa378eaa0ab55ec9ea1a94eb6a","1329e7cd7aca4d223ef5a088d82bc3f6f302ce70581c8d3823a050ea155eec3b","09248c76437c5b1efce189b4050c398f76a9385135af75c5fb46308b0d1432e0","b8df115bf7b30cceeb4550c0be507082b9930ee6268539a1a1aaffb0791cc299","dde00f41a2d2b1e70df6df8ac33de7cb3a658956212c7bee326245cc01c990c2","033e92c17274b826e6732a6dbf044487c581223995e17e6fd8d655d1dd202947","5cd5a999e218c635ea6c3e0d64da34a0f112757e793f29bc097fd18b5267f427","cc14b99b4e1bbedab2e3fbf058ed95231d8ced691f0645f2a206c32464f1bd7b","e6db934da4b03c1f4f1da6f4165a981ec004e9e7d956c585775326b392d4d886","53e65282ab040a9f535f4ad2e3c8d8346034d8d69941370886d17055874b348d","6ecb85c8cbb289fe72e1d302684e659cc01ef76ae8e0ad01e8b2203706af1d56","35ab64ba795a16668247552da22f2efe1c5fbc5bc775392c534747be7f91df04","34283015304de5df8d6e3740b9bca58e40513ec6333b3fb0a3fa3aa4c43b856b","4a397c8a3d1cccf28751bcca469d57faeb637e76b74f6826e76ad66a3c57c7b8","34c1bb0d4cf216f2acb3d013ad2c79f906fe89ce829e23a899029dfa738f97e0","b70b5b3d14d125d6dcc16a9ac43cafe8801f644954ac36cb2918723f9cbbd4fe","b50f05738b1e82cbb7318eb35a7aaf25036f5585b75bbf4377cfa2bad15c40bf","c682cb23f38a786bb37901b3f64727bd3c6210292f5bb36f3b11b63fbe2b23ee","d6592cf10dc7797d138af32800d53ff4707fdcd6e053812ce701404f5f533351","7363a9bfd7b8bc068189ccebfa395383b9c84f115e8a0bf2a71f4de68f28d5ad","9584dd669a3bf285e079502ebbb683e7da0bf7f7c1eb3d63f6ef929350667541","41a10e2db052a8bf53ed4d933d9b4f5caa30bdaee5a9d978af95f6641ce44860","8c5c602045ffdfebeffc7a71cd2bf201fe147a371274b5fcbded765a92f2af78","6392ce794eef6f9b57818264bb0eeb24a46cf923f7695a957c15d3d087fbb6cc","b10f123e8100aa98723c133af16f1226a6360ec5b6990a0fe82b165d289549db","93d20368cdb5fff7f7398bfc9b2b474b2a2d5867277a0631a33b7db7fd53d5b4","b1e69b9834104482fabf7fba40e86a282ee10e0600ffd75123622f4610b0ef9e","ad5bb6c450cb574289db945ff82be103ed5d0ad8ee8c76164cee7999c695ae01","217761e8a5482b3ad20588a801521c2f5f9f7fb2fbb416d4eff3aff9b57f8471","7ad780687331f05998c62277d73b6f15ee3e8045b0187a515ffc49c0ad993606","e9aa5ccb42e118f5418721d2ac8c0ebdebeb9502007db9b4c1b7c9b8d493013e","d300868212b3cc4d13228f5dc2e9880d5959dc742c0c55be2fc43bcda8504c8f","0c55daad827669843bd2401f1ddd163b74d9f922680b08ae6e162ceb6c11b078","fe45a9bc654dfd1550c9466c0dad9c8017f2626476ed9d25c65ddfc1943f6b74","03abcbc7b5b68887525be71a194dd7f9f68276b5fb5b8989abae9a91585ddc33","5055e86e689cfe39104ab71298757e5aac839c2ea9d1f12299e76fa79303d47d","42266c387025558423c19d624f671352aac3e449c23906cb636f9ae317b72d7e","b8263f60855a11e955b7a229dd3554b9df204e03ce3f221079687a242545050b","af1af59e70d7cd03669420193574e8b8d2667213e1c874f17fcbf78e3e96d185","9b21e8a79f4213c1cf29f3c408f85a622f9eb6f4902549ccb9a2c00717a0b220","d556e498591413e254793f9d64d3108b369a97bd50f9dd4015b5552888e975ef","e2c652c7a45072e408c1749908ca39528d3a9a0eb6634a8999b8cf0e35ef20c8","ec08224b320739d26aaf61cead7f1e0f82e6581df0216f6fe048aa6f5042cb8c","4eadaa271acca9bd20fc6ac1ea5e4bf9ab6698b8ccf3ec07c33df4970f8130f1","3a0a397189726902c046697f7bf38fecb557a79d5a644aac9ec983024b4c3d17","46f1df33bc635aa84313579ff51a7269707b58a8a32728e4e5fc7ab47816b44a","5ecd8fdeb6c87db9c320eefbfa9ea27efccbdce853ed38d5ba58e2da482edf1f","19a4d116285e7d77e91411966930761a2204ce2d20915afdb12652681a4a88d7","c30ca82112586c5dae7477d7e82cc91a7e0d1e658c581f9ec3df07c4485bba84","68fca1813d17ee736f41124ccc958d0364cdef79ad1222951bfacc36b2630a58","7813329e568df1d42e5a6c52312b1a7c69700e35a561cf085158c345be155b22","561067dc7b6b7635277d3cad0a0e11f698d377063dd2c15dfac43ef78847eef4","438247e782a8a9b9abdce618e963667cf95157cc6d3f5194a452d3c7d9e9655c","253f79802f33f405c1807f33efa7d78e0a26143ee694297d4f8e1477c7ed5e28","f1e8eca509487806fdf979349cfcdb6ffdeb20f11b7e95666c4309d12dcd9ba6","83724b26b711d85d6cfc9dd92fd5d666ffaae27fcfb1a0110401b98814ea26c0","869a27c929366c3c864013a991fd4c4c86af73eba25513e8ae915f814d3d349c","756e3f41a7f2501a34e1a070283c7f5550e200eeb43fed3c806e3f2edd924a75","59935cc13dcb7c3c7825e770a61e6696bfd11b65e3e47c28acc410dbdf8461c0","85e2808cc73ab3ac07774802b34a6ff0d7e1e46c26de7bc2dbe08e04b3340edb","f766e5cdea938e0c9d214533fd4501ab0ee23ab4efca9edba334fa02d2869f11","eb380820a3a1feda3a182a3d078da18e0d5b7da08ae531ce11133a84b479678c","7fba5cc3088ad9acada3daeff52dae0f2cac8d84d19508abd78af5924dc96bea","ddaa88853f1ee35622267a9d95450cd00c80d6d920ff7acb438c5a6d265ba549","6e31c6594fa94eac6d3a41d969e46e5d12f611e8821c321486b427a06537f1b1","162356906f31fed8dec4b496c757a33e2c322ee2577637731846cb6c1dd311ea","105f944f1de6917982fd4a0154bd7b2758efa8641add4a8d157d5d381578f835","f780879a2ca63dbb59b36f772bc28dccd2840f1377d8d632e8c978b99c26a45f","335c2e013b572967a9a282a70f9dded38631189b992381f1df50e966c7f315d6","b2241e9c697bcec55b33a462ab09b6eaf9a06e3891ae21c25d70270cf0565168","c90f8038c75600e55db93d97bab73c0ab8fb618d75392d1d1ad32e2f6e9c7908","ca083f3bf68e813b5bded56ecbf177636aa75833eb86c7b40e3d75b8ce4c2f78","3c8bf00283ef468da8389119d3f5662c81106e302c8810f40ea86b1018df647e","67b248e4bac845c5139898b44cbd3e1213674bcc9831039701b5f0f957243a24","63d49516f359186f7b3e3115f2c829ed75c319b34022c97b56beead032a073b7","9f5f256c7b5cc4a98ef557ea9720f81e96319d569f731c897ddb4514936242b4","a20ded6c920f6e566537e93d69cbad79bc57d7e3ce85686003078cf88c1c9cfc","40b2d781df7b4a76d33454cb917c3883655ec1d8d05424b7a80d01610ad5082f","703ea2acd8b4741248897a5709cd46e22fcd9d13f01ff3481322a86505f0b77c","51ebaff0cba6b3adf43f13b57bb731d56946cabd06d14cf9dfc7c5eaa8f95770","9b4d4b0f6ed5dcb58459b3b6c83ce49ae20c92782382f0db111a9feeed40feac","88331dcab25eb03a0de8ea2d2a48b7d1df81b380e043c6560469d14c5452745b","c1b1433f217ceec10a94733abcf3a00f3324e9b48068188d9dfd6d03916c60c5","bcaf468eea143f8e68ca40e5da58d640656b4f36697170c339042500be78ac5d","92de961d1db5fe075db8c0b6414a6eec430adaf9022465fe9d0a23f437aafcb3","709b537e6cfef7ac19802d3d17d4ad4dd6c520284035688ec8cfe9e366efe335","7355edff7686f91edbca25e0fe9d6c3359df2520d48d3dc6d857aa47047f8ddf","08c5f1482614fe9bd9d10660abbcfeec30c64ddf758c319527581a21382ff57c","7960c50e56a66998e08c5d5e6c56e19e481384e27d50a8b0a85f08e21db940a2","f9568a3a6c74013aee8b09d73ef04175596b51ce6f5d9dcd4885418170fe9306","bd3910ccd4fcd05ebd83fbfeb62f5a82a6674c85c6c0e4755c16298df7abe4d7","2bfad224656e6eea9e6e59683cd0b8468f557969dd3d3acdcaaf47ee3d295604","b28b6875a761fd153ebf120fecb359660de80fd36e90c9b3d72a12318bd5d789","e4e30e82a21af99ab47223d894f8000a374d8f63dfd41dbf32f9f0c0437473e6","093c1fb38b09f197f34982ccc01e81ebcb189b10aa9b4c18a3ab0ec43550757f","73b0fd6255f24e82be861f800a264f0175984062b6ccca3052578b03ed6f397b","4a3f7c6f02cb01eb7a9800548b41cfa03a57e476fc92a72869983f37efa8067a","248de9c5d798c5e4e9ec8776f5fae1b4e7f4c9309f07c87b689c725dab966816","e15db0d01139d39213a40639352debd92786f311e0421c21ac97c2ca4003a299","c1cc2a1ac9ae043fd05e07193d408c0f0bf4628e54c19871621ce1049d4c200e","d005c21b9c42bd1ccde99f183dc2d3c992be407aa63c4ba3371e4f81cf36b2aa","9a7638d62db8cfa1466093d7d413fdf85c5e4a7c663ed76f2bfc8739c8e01505","1c101a4f280e868c9a0303c112f61bccc5c9aedf83039bd4294aaf05b39f85fd","c338859b98f8a11f80e3e47e33767299e7a4facdf0870c01c8694fa8fa048d16","4f64016165565f743356812e33ac22f5ef91891738927e413121f502b186210c","b113e9770d5be136c5e2add9e6cdf40d85051762ff2391f71d552975e66b1500","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","b6e995b5ef6661f5636ff738e67e4ec90150768ef119ad74b473c404304408a1","5d470930bf6142d7cbda81c157869024527dc7911ba55d90b8387ef6e1585aa1","074483fdbf20b30bd450e54e6892e96ea093430c313e61be5fdfe51588baa2d6","b7e6a6a3495301360edb9e1474702db73d18be7803b3f5c6c05571212acccd16","aa7527285c94043f21baf6e337bc60a92c20b6efaa90859473f6476954ac5f79","dd3be6d9dcd79e46d192175a756546630f2dc89dab28073823c936557b977f26","8d0566152618a1da6536c75a5659c139522d67c63a9ae27e8228d76ab0420584","ba06bf784edafe0db0e2bd1f6ecf3465b81f6b1819871bf190a0e0137b5b7f18","a0500233cb989bcb78f5f1a81f51eabc06b5c39e3042c560a7489f022f1f55a3","220508b3fb6b773f49d8fb0765b04f90ef15caacf0f3d260e3412ed38f71ef09","1ad113089ad5c188fec4c9a339cb53d1bcbb65682407d6937557bb23a6e1d4e5","e56427c055602078cbf0e58e815960541136388f4fc62554813575508def98b6","1f58b0676a80db38df1ce19d15360c20ce9e983b35298a5d0b4aa4eb4fb67e0f","3d67e7eb73c6955ee27f1d845cae88923f75c8b0830d4b5440eea2339958e8ec","11fec302d58b56033ab07290a3abc29e9908e29d504db9468544b15c4cd7670d","c66d6817c931633650edf19a8644eea61aeeb84190c7219911cefa8ddea8bd9a","ab1359707e4fc610c5f37f1488063af65cda3badca6b692d44b95e8380e0f6c2","37deda160549729287645b3769cf126b0a17e7e2218737352676705a01d5957e","d80ffdd55e7f4bc69cde66933582b8592d3736d3b0d1d8cc63995a7b2bcca579","c9b71952b2178e8737b63079dba30e1b29872240b122905cbaba756cb60b32f5","b596585338b0d870f0e19e6b6bcbf024f76328f2c4f4e59745714e38ee9b0582","e6717fc103dfa1635947bf2b41161b5e4f2fabbcaf555754cc1b4340ec4ca587","c36186d7bdf1f525b7685ee5bf639e4b157b1e803a70c25f234d4762496f771f","026726932a4964341ab8544f12b912c8dfaa388d2936b71cc3eca0cffb49cc1d","83188d037c81bd27076218934ba9e1742ddb69cd8cc64cdb8a554078de38eb12","7d82f2d6a89f07c46c7e3e9071ab890124f95931d9c999ba8f865fa6ef6cbf72","4fc523037d14d9bb6ddb586621a93dd05b6c6d8d59919a40c436ca3ac29d9716","e69d0b59db23f59172cb087ee44a71438f809bd214d4f4105abd6090b341cbdc","d5c1d4db425938fb1e0ff528b3edb945d4d851c001ab6e1528c62eb16813d96e","86f89124a90fae1b90421bcce1e0ba58614383ca72403bfc03ff89761b050a4d","5a6fbec8c8e62c37e9685a91a6ef0f6ecaddb1ee90f7b2c2b71b454b40a0d9a6","e7435f2f56c50688250f3b6ef99d8f3a1443f4e3d65b4526dfb31dfd4ba532f8","6fc56a681a637069675b2e11b4aa105efe146f7a88876f23537e9ea139297cf9","33b7f4106cf45ae7ccbb95acd551e9a5cd3c27f598d48216bda84213b8ae0c7e","542c82f0d719084ec6dde3ce4a69be8db0f5fa3ea1e38129f95ee6897b82de78","c5079a23a0200a682ec3db25bc789d6cee4275b676a86ec1a3964d919b977e6a","8bcb884d06860a129dbffa3500d51116d9d1040bb3bf1c9762eb2f1e7fd5c85c","e55c0f31407e1e4eee10994001a4f570e1817897a707655f0bbe4d4a66920e9e","a37c2194c586faa8979f50a5c5ca165b0903d31ee62a9fe65e4494aa099712c0","6602339ddc9cd7e54261bda0e70fb356d9cdc10e3ec7feb5fa28982f8a4d9e34","7ffaa736b8a04b0b8af66092da536f71ef13a5ef0428c7711f32b94b68f7c8c8","7b4930d666bbe5d10a19fcc8f60cfa392d3ad3383b7f61e979881d2c251bc895","46342f04405a2be3fbfb5e38fe3411325769f14482b8cd48077f2d14b64abcfb","8fa675c4f44e6020328cf85fdf25419300f35d591b4f56f56e00f9d52b6fbb3b","ba98f23160cfa6b47ee8072b8f54201f21a1ee9addc2ef461ebadf559fe5c43a","45a4591b53459e21217dc9803367a651e5a1c30358a015f27de0b3e719db816b","9ef22bee37885193b9fae7f4cad9502542c12c7fe16afe61e826cdd822643d84","b0451895b894c102eed19d50bd5fcb3afd116097f77a7d83625624fafcca8939","bce17120b679ff4f1be70f5fe5c56044e07ed45f1e555db6486c6ded8e1da1c8","7590477bfa2e309e677ff7f31cb466f377fcd0e10a72950439c3203175309958","3f9ebd554335d2c4c4e7dc67af342d37dc8f2938afa64605d8a93236022cc8a5","1c077c9f6c0bc02a36207994a6e92a8fbf72d017c4567f640b52bf32984d2392","600b42323925b32902b17563654405968aa12ee39e665f83987b7759224cc317","32c8f85f6b4e145537dfe61b94ddd98b47dbdd1d37dc4b7042a8d969cd63a1aa","0da77bc7e34afccd7d35dcc0d99db05b56235a536c69082c15f2a07ceb7ceae0","f364fb93abf1e50fa93e38b4cb32c99adb43e8c8044482da5b9bf29aa27eaf75","a460b56ced5a21969a819245f9f36b2b55aa2129e87159957d400d3dc0847529","e53e817cec71dc843700a1571356271d3e13abf8cb9d32f33b4a214c6dcdd1e0","252eb4750d0439d1674ad0dc30d2a2a3e4655e08ad9e58a7e236b21e78d1d540","e344b4a389bb2dfa98f144f3f195387a02b6bdb69deed4a96d16cc283c567778","ecb3f7a39c52816137f9a87278225ce7f522c6e493c46bb2fff2c2cc2ba0e2d4","31d26ca7224d3ef8d3d5e1e95aefba1c841dcb94edcdf9aaa23c7de437f0e4a2","c5b3da7e2ecd5968f723282aba49d8d1a2e178d0afe48998dad93f81e2724091","3e4ba3ecd2f4b94e22c38ff57b944e43591cac6fd4d83e3f58157f04524d8da6","4b8e57cbc17c20af9d4824447c89f0749f3aa1ec7267e4b982c95b1e2a01fab7","37d6dd79947b8c3f5eb759bd092d7c9b844d3655e547d16c3f2138d8d637674e","c96700cd147d5926d56ec9b45a66d6c8a86def5e94806157fa17c68831a6337f","f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","e252a2f541e86ee889bcab952a0f9844e7d5a62284b06cd09d67d67063b2519d","d618d077158335a50ae6bb789d93dd29b62f930195a2e909e94f0afadad5680a","ae0eeabdb4b4129356ba04ce086c675af383a9ab2b275950d73067842ccd91e4","54f664311746f12a5b0b93a6a58b12a52660e3ff74f06aa0e9c275f46bd22d0e","506bc8f4d2d639bebb120e18d3752ddeee11321fd1070ad2ce05612753c628d6","4069e28d9ec7bb86c714d2d11b5811ebca88c114c12df3fb56b8fec4423dcf18","1977f62a560f3b0fc824281fd027a97ce06c4b2d47b408f3a439c29f1e9f7e10","627570f2487bd8d899dd4f36ecb20fe0eb2f8c379eff297e24caba0c985a6c43","445bbd11741254b30eb904776cbebc72b9d13b35e6a04a0dda331a7bbafe2428","85c9be6b38726347f80c528c950302900db744b558a95206c4de12e1d99b2dee","735baa325c8211ac962fa5927fa69d3702666d1247ceb16bf94c789ccd7bef26","9e82194af3a7d314ccbc64bb94bfb62f4bfea047db3422a7f6c5caf2d06540a9","c32373a44722e84517acd1f923284ce32514fecf3dd93cc5ae52111dc6aa682a","952a9eab21103b79b7a6cca8ad970c3872883aa71273f540285cad360c35da40","8ba48776335db39e0329018c04486907069f3d7ee06ce8b1a6134b7d745271cc","e6d5809e52ed7ef1860d1c483e005d1f71bab36772ef0fd80d5df6db1da0e815","6ee38318bdaa2852d9309e92842f099a9f40c5d3c5aff3833066c02ffd42dade","12ae46c46c5e2405ad3d7e96e2638f1d183095fa8cf8a876d3b3b4d6ba985f5b","e4b1e912737472765e6d2264b8721995f86a463a1225f5e2a27f783ecc013a7b","da09c0171b55ccdf5329e38c5249c0878e7aec151c2a4390c630a2bc1383e768","c40d552bd2a4644b0617ec2f0f1c58618a25d098d2d4aa7c65fb446f3c305b54","ecb4c715f74eb8b0e289c87483f8a4933dfa566f0745b4c86231a077e2f13fea","424ddba00938bb9ae68138f1d03c669f43556fc3e9448ed676866c864ca3f1d6","a0fe12181346c8404aab9d9a938360133b770a0c08b75a2fce967d77ca4b543f","3cc6eb7935ff45d7628b93bb6aaf1a32e8cb3b24287f9e75694b607484b377b3","51451e948351903941a53ed002977984413a3e6a24f748339dd1ed156a6122bf","efd463021ccc91579ed8ae62584176baab2cd407c555c69214152480531a2072","29647c3b79320cfeecb5862e1f79220e059b26db2be52ea256df9cf9203fb401","e8cdefd2dc293cb4866ee8f04368e7001884650bb0f43357c4fe044cc2e1674f","582a3578ebba9238eb0c5d30b4d231356d3e8116fea497119920208fb48ccf85","185eae4a1e8a54e38f36cd6681cfa54c975a2fc3bc2ba6a39bf8163fac85188d","e6e7ac06b50b2693488813f8de73613934d9aa2eb355cdffd2ef898db60c9af1","5b504f247d6388daa92ffb5bbd3ffc5fc5a1ebd3ff928f90b6285b620455dd04","cee72255e129896f0240ceb58c22e207b83d2cc81d8446190d1b4ef9b507ccd6","3b54670e11a8d3512f87e46645aa9c83ae93afead4a302299a192ac5458aa586","c2fc4d3a130e9dc0e40f7e7d192ef2494a39c37da88b5454c8adf143623e5979","2e693158fc1eedba3a5766e032d3620c0e9c8ad0418e4769be8a0f103fdb52cd","516275ccf3e66dc391533afd4d326c44dd750345b68bb573fc592e4e4b74545f","07c342622568693847f6cb898679402dd19740f815fd43bec996daf24a1e2b85","fcfe042dc3134375bc247267993c55a931237910e5e5f410b804118341c777d4","ffb038772fa32bfb0b6cb74c1fe6f609335d086d715589aae790c33ee698801d","6aacd53b14c96a0cd21435cae68eabe6d9a3d78dc5442ec6edcf391efd7989ef","a4096686f982f6977433ee9759ecbef49da29d7e6a5d8278f0fbc7b9f70fce12","2eb279b2ae63cf59b419eb41c4ccd8f0850a7114c0a6a0da386286799f62c38b","9c9b902ae773d4c1ca6bb8f05e06b1dc6ffe7514463e3ee9b9e28153014836ee","86df53d43eccf5f18b4bc8f876932bd8a4a2a9601eb06bbba13f937f3b2a2377","2147f8d114cf58c05106c3dccea9924d069c69508b5980ed4011d2b648af2ffe","edb8332e0c7c7ec8f8f321c96d29c80d5e90de63efdb1b96ad8299d383d4b6b9","fe61f001bd4bd0a374daa75a2ba6d1bb12c849060a607593a3d9a44e6b1df590","cfe8221c909ad721b3da6080570553dea2f0e729afbdbcf2c141252cf22f39b5","34e89249b6d840032b9acdec61d136877f84f2cd3e3980355b8a18f119809956","6f36ff8f8a898184277e7c6e3bf6126f91c7a8b6a841f5b5e6cb415cfc34820e","4b6378c9b1b3a2521316c96f5c777e32a1b14d05b034ccd223499e26de8a379c","07be5ae9bf5a51f3d98ffcfacf7de2fe4842a7e5016f741e9fad165bb929be93","cb1b37eda1afc730d2909a0f62cac4a256276d5e62fea36db1473981a5a65ab1","195f855b39c8a6e50eb1f37d8f794fbd98e41199dffbc98bf629506b6def73d7","da32b37d9dec18a1e66ce7a540c1a466c0a7499a02819a78c049810f8c80ec8f","108314a60f3cb2454f2d889c1fb8b3826795399e5d92e87b2918f14d70c01e69","d75cc838286d6b1260f0968557cd5f28495d7341c02ac93989fb5096deddfb47","d531dc11bb3a8a577bd9ff83e12638098bfc9e0856b25852b91aac70b0887f2a","19968b998a2ab7dfd39de0c942fc738b2b610895843fec25477bc393687babd8","c0e6319f0839d76beed6e37b45ec4bb80b394d836db308ae9db4dea0fe8a9297","1a7b11be5c442dab3f4af9faf20402798fddf1d3c904f7b310f05d91423ba870","48709e4ac55179f5f6789207691759f44e8e0d2bfbadd1ceecb93d4123a12cef","2c817fa37b3d2aa72f01ce4d3f93413a7fbdecafe1b9fb7bd7baaa1bbd46eb08","682203aed293a0986cc2fccc6321d862742b48d7359118ac8f36b290d28920d2","7406d75a4761b34ce126f099eafe6643b929522e9696e5db5043f4e5c74a9e40","ad74043d72ed605cecf58a589112083c78dfd97452b80cd0a81b31c57976af12","9bc363b91528a169b3d9451fba33f865c339a3397da80a44a754547962f4a210","64efb52cb6cf86c8a05ceec920db05f9ebdaac4dff5980d9a62227eb6d2ebc11","3286cf198cf5f068cd74cb0b6648c8cba440dade2fc55eb819e50e5ea9b3f92e","16a6d4efcce5bb20d42134ce52855a46cd4783668c6d6a67a86397eb670ad0d2","46bd71615bdf9bfa8499b9cfce52da03507f7140c93866805d04155fa19caa1b","334b49c56ad2d1285a113ae3df77733d304853afcf7328367f320934e37559af","a0e74be326371c0d49be38e1ca065441fb587c26ca49772d1c96db7b77a1bb14","bb1e5cf70d99c277c9f1fe7a216b527dd6bd2f26b307a8ab65d24248fb3319f5","817547eacf93922e22570ba411f23e9164544dead83e379c7ae9c1cfc700c2cf","a728478cb11ab09a46e664c0782610d7dd5c9db3f9a249f002c92918ca0308f7","9e91ef9c3e057d6d9df8bcbfbba0207e83ef9ab98aa302cf9223e81e32fdfe8d","66d30ef7f307f95b3f9c4f97e6c1a5e4c462703de03f2f81aca8a1a2f8739dbd","0f562669bc473ed1e1e2804f12d09831e6bf506181d7684fb386f60f22989057","90a4be0e17ba5824558c38c93894e7f480b3adf5edd1fe04877ab56c56111595","fadd55cddab059940934df39ce2689d37110cfe37cc6775f06b0e8decf3092d7","9115cfffd8ea095accd6edf950d4bdfabbd5118e7604be2e13fe07150344bb9d","b4f3b4e20e2193179481ab325b8bd0871b986e1e8a8ed2961ce020c2dba7c02d","41744c67366a0482db029a21f0df4b52cd6f1c85cbc426b981b83b378ccb6e65","c3f3cf7561dd31867635c22f3c47c8491af4cfa3758c53e822a136828fc24e5d","1a3f603fedd85d20c65eb7ca522dd6f0e264dbb6e1bfa9fb4f214f2e61b8bdf8","82a74e031ab992424f8874ceacbb43ad33bdcf69538a0fbddc28145e54980f5a","5515f17f45c6aafe6459afa3318bba040cb466a8d91617041566808a5fd77a44","4df1f0c17953b0450aa988c9930061f8861b114e1649e1a16cfd70c5cbdf8d83","441104b363d80fe57eb79a50d495e0b7e3ebeb45a5f0d1a4067d71ef75e8fbfa",{"version":"8d39206d314f7ddd3394b9a4e9c4e15ec2cd54f4b0b5f0bd6f0a84a5e61db99f","signature":"3be9ce1bbdb7cbb69250f1e8b8709d94e843cd3ca5182c32d2aa56213ed7263a"},{"version":"e0a8ef3ee5ca2de87426fff8d20570de6ea453ed99cb9ecf232b224f0d33c21c","signature":"62038972d4dd1d73d3505625a31c5a97154c325c13921dc2fe938a714db129cc"},{"version":"25164c57375cc16b8351e5e7bcec76009136acc130accae7631aed446ba549d3","signature":"0ab1da26a716915a219b8e76cc6e46d9d881e8467cc89b1981ddb6987b29885a"},"2bad09c4dc0810666ef5b6150aa910dd711051ce5f2184050c9859c708092a36","90b7749e090b5971669657bbf97c2f1f7bbde63e45ebee576e6d6a80cd274cd8","c938dac97b83703e7bd03862b5bc558425acc9f16ad9e24220771df184d25fcf","8941525aa2f1e097f0352e586bb9c755e2d533e9945508b7518346759b26e1b8","8acfefd1aec7626a3016ce7e82e3ac1a0e5b57248cffd8255b833503c29954c7","3cf73a203d499608e5b91d0c8f6ec729a39dd547cc2651a0d4647cdb420cc1fc","17f1d99666811b576261c5c9399cf2a643220188d6dcd0e6fe605a68a696d2c8","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f",{"version":"e4d1daa0964e6851de27a99e0da4a996b60120e8797a4d1f8a55100dc059ff58","signature":"a952647879e393357c290e9fb25c9cb8676d8b9aab9a6768459cae0a96931b20"},{"version":"c1d6167e4f75ae46f31df9fc6af22e73b2945647019f42bae2c5b8bce77838fd","signature":"9520f738f03aac3f3cc1d6ce242ae26c0eb310d3275fa1311754660ed0a16c93"},{"version":"a53c59851393fed9ff27d96c033ab5c7000676825ce91d25305b6d492cf5a198","signature":"d5dedd50c8acad15fbad92b0a85f291555103c62ef0112f8a92c99047b3d4647"},{"version":"e1641d43b97f4ed3fb386c82d86447f78d20a637dd479c20d3c133de5789a112","signature":"a3593b66fda477fe52ac67163f580703fa5777c896dd1dcb10ba7a75a81a7f15"},{"version":"4b2c263ad2951bec4d9337025dd22ea0fcf043022b2303d232fef38e234e5eee","signature":"aa1725e38b5a0b4009f6a74f296f173e7926c119a60454dbd2e523861735df69"},"ef7487702b8defa3ee39f8fdabec8c9d1b71c38876eead531d2b5b16b56d887f","839d15098cc51d756b67acda281788779645cbf8e95571897951afb52ea6535a","443e3123c41da4e34ba5bd439b892f01c8af842692bb943a1c5f5dccd4d3c764","e36ea8ba6b5047a39316422dc621d1f5acee06ac8d8294ab655911b8690978f8","b4896cee83379e159f83021e262223354db79e439092e485611163e2082224ff","5ca76111f37c0dc0c45d61af5d0f3617f5e5bb2005038613d5b2567f10007c34","08bb8fb1430620b088894ecbb0a6cb972f963d63911bb3704febfa0d3a2f6ea5","2d51cd3cd5a6e922b62f31fe8b99ebcf215ca09a8fe10ff0821580b11d2f1e34","ced3404358800496232fbeb884d609b9ba7e2a4d7aca3dfe33beea0e59f1785a","f30933a99daa806dbcc0497b539ae148ad924d58d13406398d4b60528bf5de9c","26f5e3ac9549255104244247c9635b19588a93b33ba670e0f65ebc619dc65363","c34aa174065847b91a8cf22a1c7f958fa027752fe3f09f9e43e8fe958895f594","aadc9a99a877b842474c622500d983eb1927f6ca27374f1b94e561bef54e5997","f9e034b1ae29825c00532e08ea852b0c72885c343ee48d2975db0a6481218ab3","2d83f7d8b38d5941370e769e98492fa28c1112cbc976958522bc92a11b8234aa","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f",{"version":"7ad579f5dc90a8d8f4dcd2a338042c7702f1d1e89aac5ea68549ccd74919b844","signature":"456f69342d9da3bc0f9fed6b525e3878af3f4388b7e8df74e93d3e69dfc00e75"},{"version":"44f7d6fc3d8e2926547637c48d8bcc55d38c4e80dde9decd7ca635039d829bc4","signature":"8c191028b44f9cdf3733f1a235658a05ec665b9c198d1169f5f4f37b528876c9"},{"version":"55a265c3771ed938a7714147ebef1eb39873b1d32c133c62a1128df5938afcaa","signature":"5d087e4b17aca5b4451c16467bc0782281eb2ea3f17bb53c816b1e67e0fef1fe"},{"version":"678f663f24c3bc637fc6c6eb5c7ed5a36064e699c269872f190e2ee214e96e78","signature":"2d81c3390d3575c7f4f77d248a1f81890276fbce72c1c3adbea611217cce4b02"},{"version":"4ad2ba69901544349df9cc424c9a7f985648f62ce5415b3603f634387c1b96d4","signature":"bd57a3aef08ebf1096cf2305533db431478803befec454320d6cea6980c44440"},{"version":"9daeaebaa700b0a9834cbd8367ac163955974e18e1922fc4e9ff2d53229965ef","signature":"b82491e2990291580288c5602d4c017238977749d52b17391f0e45d9a29be644"},"e9cba458ea179833bba7b180c10e7293b4986d2f66a7bd99c13f243d91bab3d4","8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","27484cb3aa328bc5d0957fcb34df68a5db1be280af510d9ed3a282b1a0a93b38","6c2b8c78eb1476ad2668898923fda9c3e67b295b9a6dc7a7312ead2582a76883","d8fb0821bcebbcc5ef87655a6442e8909313eb0bd7960f696b10cdb31576fdaa","1053398d8fd9b1a45170b5cca30bd54abe7ec7061ef2929c4da9feaa71737930","c21f2aa4d38c2e9fea29dde79c15aed25f532ed1cb295794879cbeb8372a3ce7","7afedbfdd1a5220d472faacc2943242abb1f3f274b80984b11e804d6a8d8f17f","31a335eb49c1ea1b0d8ded51d2dee99d96b45e67f581638b2bce9cd121a2dcdc","c86ad86cc7a3ec3794deab9b943a823d9aaf09b846bb581a06bf263117e8d6d9","cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","f23601713615719b1a1394deae884fb9f507de819a086d5a019c63793da9efc6","50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","ad5ad568f2f537a43dcc1588b2379f9dc79539ae36b8821b13a5d03625211eb2","99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","d2d58166965f631fa203f405f3713b0f86f1f8b80755e9daea43057a25311e16","ce7dbf31739cc7bca35ca50e4f0cbd75cd31fd6c05c66841f8748e225dc73aaf","942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","a861cceeb708d23beebcf7f3235dcdd1a5a7d1655afd6ba49dbc0d45f5370469","0256d60785ede7860b5262f504f139aa68f74db44ba9f03807b752864580772c","396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","7cb9b6d5c1e3508fbc81e7bbab314eac54715f9326ac72fd0eb65f17a4393d50","eefa4f00b4a4c150786e5ed866999b44687388e94a99f0b67a78b59c5b2303fd","3bcc2bbb40a70477a56b4d2e817e4b0044d567bae25bbca6be9136607bea2afe","be75c12a8d61aaadb9e33e0d7d0e7b2f3bee9a3ac618d04367e0b7c2aea3f86d","e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","c0849999805318805a3932d166a8ae03899ec253c7c9fea35ba6e5a1d04e5572","f8a3096b501a807cd24f83dbd273bd4844a0c49d1d826eb821fafd2b37cf792b","903bb69c5e5ce0cb8f8159a86acca9116275f8c78253db80004fe0d78f436ef4","9daabcf8cac2bd41d4cb83511c0358fc24650fd08f9ae73e888582285a116a3f","82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","691e990c527fc0abefa2cd0922b0dcfd83cf98a3f0c11a96a854f34fc85361f5","6b92208e18bfa294582ff012c43a6f35834e611eed63488799f2d74c25c132d2","e3d221660c0b79a9a3ba1111b3dfbb1136c0b52d7609b0054d3ce09ce711a3e6","892adfd3427fa4ed24bede88e8e46e4cb67e53e794365023fd473f3be796981d","4541d8b29bed87d05434bd0af815a6e2293520f0c4ece541c6dabecdbcb2fc95","9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","992fda06eebba15d37625007500bef5b3fdd1c5e2f5a334064efeb1604c7bce3","07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","abdc0a8843b28c3cafbefb90079690b17b7b4e2a9c9bbf2cd8762e11a3958034","2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","f3e04e6c6db44b9ad05a0b7c89e914b08eee05f2050968b761ed98735d42cd62",{"version":"315a04fbe1dc6b3e632b5f4bbaab8c8be9a8689a6bfeb16dfa97314196dd6630","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"9462f4fafef608efef297ae1ce8e43b45e4cff7728364b2c4712cfeb86e4e1f4","signature":"183de0a1919bf1db075aa98ff44ae12353d2b8edd69288713a8171ef639f4b1d"},{"version":"430fcfe5b86a5861c787ebcbf578819fbbc878161585a2c36d29e923f5c55dcb","signature":"53de5e5e5b888c0edb413aed1a3ee90f596d4033e86c61ff63dca0d7249d4739"},{"version":"05479aeb2629f7356bd7e5a712daf040695ab4e5d25f22aca6365feb0426c105","signature":"7e103a5d1887cd302e878e710eaa083e006d9f1d041e5c457de53776f8aba54d"},"9962e796b20716b18aed4836d6abff7f38e1e946c603246b913d487ba6395671","760cb9b76ab53a2f704ee0e731e162bcfc6af609f5e400a668efe2cc7923e4f4","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","7ec238b220ea991b6643e24191b1f552a65956d5f6de4c6144e700b9985265d8","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","dae3d1adc67ac3dbd1cd471889301339ec439837b5df565982345be20c8fca9a","5426e62886b7be7806312d31a00e8f7dccd6fe63ba9bbefe99ee2eab29cc48a3","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","8d48b8f8a377ade8dd1f000625bc276eea067f2529cc9cafdf082d17142107d6",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"a1c79f857f5c7754e14c93949dad8cfefcd7df2ecc0dc9dd79a30fd493e28449","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","5759f4fc8d144161afa3200476981479989923195c96ec8b9844152a1825d041","e050a0afcdbb269720a900c85076d18e0c1ab73e580202a2bf6964978181222a","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"ae3fe461989bbd951344efc1f1fe932360ce7392e6126bdb225a82a1bbaf15ee","affectsGlobalScope":true},"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","f47887b61c6cf2f48746980390d6cb5b8013518951d912cfb37fe748071942be","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","763e521cf114b80e0dd0e21ca49b9f8ae62e8999555a5e7bade8ce36b33001c2","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","74986224d4bee6bdfe68db653bb46e389101227ad705065a050ea6dbb171897e","ffcc5500e77223169833fc6eb59b3a507944a1f89574e0a1276b0ea7fc22c4a4","22f13de9e2fe5f0f4724797abd3d34a1cdd6e47ef81fc4933fea3b8bf4ad524b","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2","f72f8428f3c1caa22e9c247d046603b85b442c0dae7b77a7a0bc092c18867cb7",{"version":"195f63105abc03e72b6a176e3e34dfb5ac932b55db378fdc7874b1617e24b465","affectsGlobalScope":true},"2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",{"version":"d9aa2c3d6bb462015bb36be4282ec9dfeca33d687aae1b7d726c6c9543165dd1","affectsGlobalScope":true},"29d59e921bc723594bbfc98230d24f38f0d5a669f28fcf989b7468f4f95b7c52","25e05fe63d24c13857e295d74010b5694894f571698e31ae555e0577331a2ce4","93c4fc5b5237c09bc9ed65cb8f0dc1d89034406ab40500b89701341994897142","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","6eef5113135a0f2bbac8259909a5bbb7666bcde022c28f4ab95145623cbe1f72","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","6aee496bf0ecfbf6731aa8cca32f4b6e92cdc0a444911a7d88410408a45ecc5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","31c502014e5ba046d5cb060136929b73fd53f0f989aa37b2b0424644cb0d93ef","76232dbb982272b182a76ad8745a9b02724dc9896e2328ce360e2c56c64c9778","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","28288f5e5f8b7b895ed2abe6359c1da3e0d14a64b5aef985071285671f347c01"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"experimentalDecorators":true,"module":1,"noFallthroughCasesInSwitch":false,"noImplicitAny":false,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":false,"strictNullChecks":false,"target":4},"fileIdsList":[[227,1079],[227],[227,1106],[227,354,356],[227,347,356,357],[227,386],[227,297,386],[227,387,388],[47,227,358,389,391,392],[227,293,347],[227,390],[227,347,354,355],[227,355,356],[227,347],[227,326,334],[227,450],[227,359,360,361,362,363,364,365,366,367,368,369,370,371,372],[227,302,334],[227,326],[227,299,347,450],[227,377,378,379,380,381,382,383,384],[227,304],[227,347,450],[227,373,376,385],[227,374,375],[227,338],[227,304,305,306,307],[227,394],[227,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415],[227,418],[215,227,234,417],[46,227,308,347,354,386,393,416,419,440,445,447,449],[51,227],[51,227,293],[227,302,421],[227,296,423],[227,293,297],[51,227,347],[227,301,302],[227,313],[227,315,316,317,318,319],[227,308,321,325,326],[227,327,328,329],[227,234],[48,49,50,51,52,227,294,295,296,297,298,299,300,301,302,303,313,314,320,325,326,330,331,332,334,342,343,344,345,346],[227,324],[227,309,310,311,312],[227,302,309,310],[227,302,308],[227,302,311],[227,302,338],[227,333,335,336,337,338,339,340,341],[48,227,302],[227,334],[48,227,302,333,337,339],[227,310],[227,335],[227,302,334,335,336],[227,323],[227,302,306,323,342],[227,321,322,324],[227,298,300,314,321,326,327,343,344,347],[52,227,298,300,303,343,344],[227,307],[227,293],[227,323,347,348,352],[227,352,353],[227,347,348],[227,347,348,349],[227,349,350],[227,349,350,351],[227,303],[227,433],[227,433,434,435,436,437,438],[227,425,433],[227,434,435,436,437],[227,303,433,436],[227,420,426,427,428,429,430,431,432,439],[227,303,347,426],[227,303,425],[227,303,425,450],[227,296,302,303,421,422,423,424,425],[227,293,347,421,422,441],[227,347,421],[227,443],[227,386,441],[227,441,442,444],[227,323,446],[227,333],[227,308,347],[227,448],[227,450,1013],[227,1009],[227,1009,1013,1014,1015,1018],[227,1010,1011],[227,1010,1012],[227,1005,1006,1007,1008],[227,1016,1017],[227,1009,1013,1019],[227,1019],[227,321,325,347,450],[227,1027],[227,347,450,1035,1036],[227,1031,1034,1035],[227,1039,1040],[227,450,1028,1042],[227,1043],[227,1035],[227,1042,1045],[46,227,1028,1037,1038,1041,1044,1046,1049,1055,1058,1059,1060,1062,1064,1070,1072],[227,347,1029],[227,302,331,450,1029,1030,1031,1034,1035,1037,1073],[227,1031,1032,1033,1035,1048,1054],[50,227,302,331,450,1034,1035],[227,1047],[227,450,1032,1034,1051],[227,347,450,1034],[227,450,1030,1031,1033,1050,1052,1053],[227,450,1032,1034,1035],[227,302,450],[227,302,347,1032,1033,1035],[227,1034],[227,331],[227,309,313,347,1056],[227,1057],[227,347,1032],[227,302,347,450,1032,1034,1035,1051],[227,314,321,325,450,1028,1032,1037,1059],[227,324,325,450,1027,1061],[227,1063],[214,227,234,450],[227,1066,1068,1069],[227,1065],[227,1067],[227,450,1031,1034,1066],[50,227,302,331,347,450,1032,1034,1037,1049],[227,1071],[227,992,993,994,995,996,997],[227,450,992],[227,998],[227,821,822],[227,450,819,820],[227,293,450,819,820],[227,823,825,826],[227,819],[227,824],[227,450,819],[227,450,819,820,824],[227,827],[227,1079,1080,1081,1082,1083],[227,1079,1081],[201,227,234,1085],[201,227,234],[227,1089,1091],[227,1088,1089,1090],[198,201,227,234,1093,1094],[227,1086,1094,1095,1098],[199,227,234],[227,1101],[227,1102],[227,1108,1111],[227,1097],[227,1096],[183,227],[186,227],[187,192,218,227],[188,198,199,206,215,226,227],[188,189,198,206,227],[190,227],[191,192,199,207,227],[192,215,223,227],[193,195,198,206,227],[194,227],[195,196,227],[197,198,227],[198,227],[198,199,200,215,226,227],[198,199,200,215,227],[201,206,215,226,227],[198,199,201,202,206,215,223,226,227],[201,203,215,223,226,227],[183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233],[198,204,227],[205,226,227],[195,198,206,215,227],[207,227],[208,227],[186,209,227],[210,225,227,231],[211,227],[212,227],[198,213,227],[213,214,227,229],[187,198,215,216,217,227],[187,215,217,227],[215,216,227],[218,227],[219,227],[198,221,222,227],[221,222,227],[192,206,223,227],[224,227],[206,225,227],[187,201,212,226,227],[192,227],[215,227,228],[227,229],[227,230],[187,192,198,200,209,215,226,227,229,231],[215,227,232],[227,1099,1114,1115],[227,1099,1114],[201,227,1099],[227,1118,1157],[227,1118,1142,1157],[227,1157],[227,1118],[227,1118,1143,1157],[227,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156],[227,1143,1157],[201,227,234,1097],[187,199,201,215,227,234,1087],[227,1160],[227,889,890,891,892,893,894,895,896],[227,897],[227,1162],[227,845],[227,847,848,849,850,851,852,853],[227,836],[227,837,845,846,854],[227,838],[227,832],[227,829,830,831,832,833,834,835,838,839,840,841,842,843,844],[227,837,839],[227,840,845],[227,860],[227,861],[227,860,861,866],[227,862,863,864,865,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979],[227,861,897],[227,861,937],[227,856,857,858,859,860,861,866,980,981,982,983,987],[227,866],[227,858,985,986],[227,860,984],[227,861,866],[227,856,857],[227,1104,1110],[227,1108],[227,1105,1109],[227,936],[227,1107],[53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,69,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,114,115,116,117,118,120,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,172,173,174,176,227,237,239,240,241,242,243,244,246,247,249,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292],[98,227],[56,57,227],[53,54,55,57,227],[54,57,227],[57,98,227],[53,57,175,227],[55,56,57,227],[53,57,227],[57,227],[56,227],[53,56,98,227],[54,56,57,227,266],[56,57,227,266],[56,227,274],[54,56,57,227],[66,227],[89,227],[110,227],[56,57,98,227],[57,105,227],[56,57,98,116,227],[56,57,116,227],[57,157,227],[53,57,176,227],[182,227,236],[53,57,175,182,227,235],[175,176,227,236],[182,227],[53,57,182,227,235,236],[227,250],[227,245],[227,248],[54,56,176,177,178,179,227],[98,176,177,178,179,227],[176,178,227],[56,177,178,180,181,227,237],[53,56,227],[57,227,252],[58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104,106,107,108,109,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,227],[227,238],[227,510,627],[227,459,819],[227,513],[227,615],[227,611,615],[227,611],[227,472,506,507,508,509,511,512,615],[227,459,460,469,472,509,511,514,520,549,566,567,569,571,573,574,575,576,611,612,613,614,620,627,647],[227,578,580,582,583,592,594,595,596,597,598,599,600,602,604,605,606,607,610],[227,506],[227,759],[227,779],[227,463,465,466,493,728,729,730,731,732,733],[227,466],[227,463,466],[227,737,738,739],[227,744],[227,772],[227,760],[227,464],[227,463,464,465],[227,499],[227,495],[227,463],[227,454,455,456],[227,454],[227,496,497],[227,457,459],[227,647],[227,617,618],[227,455],[227,463,469,471,485,486,487,490,491,513,514,516,518,519,620,626,627],[227,488],[227,513,601],[223,227],[227,513,577],[227,513,525],[227,469,471,489,514,516,518,524,525,539,551,555,559,566,615,624,626,627],[227,524],[227,513,579],[227,513,593],[227,513,581],[227,513,603],[227,608,609],[227,584,585,586,587,588,589,590],[227,513,591],[227,459,460,469,525,527,531,532,533,534,535,561,563,564,565,567,569,570,571,572,574,615,627,647],[227,460,469,485,525,527,528,536,537,560,561,563,564,565,573,615,620],[227,573,615,627],[227,505],[227,463,464,493],[227,492,494,498,499,500,501,502,503,504,819],[227,453,454,455,456,460,495,496,497],[227,664],[227,620,664],[227,463,485,508,664],[227,460,664],[227,474,664],[227,474,620,664],[227,664,668],[227,520,664],[227,664,665,666,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726],[227,523],[227,531],[227,521,527,528,529,530],[227,469,522],[227,525],[227,469,531,532,568,620,647],[227,523,525,526],[227,536],[227,469,531],[227,523,526],[227,469,523],[227,459,460,469,566,567,569,573,574,611,612,615,647,659,660],[46,227,457,459,460,463,464,466,469,470,471,472,492,494,495,497,498,499,505,506,507,508,509,512,514,515,517,518,520,521,522,523,525,526,527,528,529,530,531,532,533,534,535,538,539,540,541,542,543,544,545,546,547,548,549,552,555,556,559,562,563,564,565,566,567,568,569,573,574,575,576,611,615,620,623,624,625,626,627,637,638,639,640,643,644,645,646,647,660,661,662,663,727,734,735,736,740,741,742,743,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,773,774,775,776,777,778,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,807,808,809,810,811,812,813,814,816,818],[227,507,509,627],[227,627],[227,466,467],[227,479],[227,460],[227,650],[227,462,468,475,476,480,482,553,557,616,619,621,648,649,650,651,652,653,654,655,656,657,658],[227,453,457,458,461],[227,499,500,819],[227,472,553,620],[227,463,464,468,469,474,484,615,620],[227,474,475,477,478,481,483,485,615,620,622],[227,469,479,480,484,620],[227,469,473,474,477,478,481,483,484,485,499,500,554,558,615,616,617,618,619,622,819],[227,472,557,620],[227,454,455,456,472,485,620],[227,472,484,485,620,621],[227,474,620,647,648],[227,469,474,476,620,647],[227,453,454,455,456,458,462,469,473,484,485,620],[227,454,472,482,484,485,620],[227,485],[227,575],[227,576,615,627],[227,472,626],[227,626],[227,469,474,485,620,667],[227,474,485,668],[198,199,215,227],[227,620],[227,638],[227,460,469,565,615,627,637,638,646],[227,460,469,485,561,563,642,646],[227,474,615,620,629,636],[227,637],[227,460,469,485,520,561,615,620,627,628,629,635,636,637,639,640,641,643,644,645,647],[227,469,474,485,499,615,620,628,629,630,631,632,633,634,635,646],[227,469],[227,469,474,615,647],[227,469,474,615,627,647],[227,469,646],[227,460,469,474,499,524,527,528,529,530,532,620,627,633,634,636,637,638,646],[227,460,469,499,564,615,627,637,638,646],[227,469,499,561,564,615,627,637,638,646],[227,469,637],[227,474,620,636,647],[227,562],[227,469,562],[227,469,620],[227,469,471,489,514,516,518,524,539,551,555,559,562,571,573,615,624,626],[227,459,469,569,573,574,647],[227,460,525,527,531,532,533,534,535,561,563,564,565,572,574,647,806],[227,469,525,531,536,537,566,574,627,647],[227,460,469,525,527,531,532,533,534,535,561,563,564,565,572,573,627,647,819],[227,469,568,574,647],[227,470,485,489,490,615,620,627],[227,489],[227,470,517,538,552,556,623],[227,471,518,520,539,555,559,620,624,625],[227,552,554],[227,470],[227,556,558],[227,473,517,520],[227,622,623],[227,483,538],[227,515,819],[227,469,474,485,549,550,620,627],[227,540,541,542,543,544,545,546,547,548],[227,573,615,620,627],[227,544],[227,469,474,485,573,615,620,627],[227,471,485,488,506,516,518,523,526,539,555,559,566,612,620,624,626,637,639,640,641,643,644,645,646,647,668,806,807,808,815],[227,573,620,817],[227,450,451],[227,450,451,452,828,1004,1020,1025],[227,450,1004,1076],[227,988],[227,988,989],[227,999,1021],[227,819,988,990],[227,450,989,991,1021,1022,1023],[227,450,819,828,989,990,1021,1022],[227,450,828,989,990,1023,1024],[227,450,1026,1073],[227,1004,1025,1073],[227,819,988],[227,991,999],[227,819,855,988,989],[227,450,991,1000,1001,1002],[227,450,828,989,990,1002,1003],[227,293,450,819,828,988,989,990,991,1000,1001],[451],[989],[999,1021],[989,1021,1022,1023],[819,989,990,1021,1022],[991,999],[990,991,1000,1001,1002],[819,989,990,991,1000,1001]],"referencedMap":[[1081,1],[1079,2],[1104,2],[1107,3],[47,2],[357,4],[358,5],[387,6],[388,7],[389,8],[393,9],[390,10],[391,11],[355,2],[356,12],[392,13],[371,2],[359,2],[360,14],[361,15],[362,2],[363,16],[373,17],[364,2],[365,18],[366,2],[367,2],[368,14],[369,14],[370,14],[372,19],[380,20],[382,2],[379,2],[385,21],[383,2],[381,2],[377,22],[378,23],[384,2],[386,24],[374,2],[376,25],[375,26],[305,2],[308,27],[304,2],[306,2],[307,2],[410,28],[395,28],[402,28],[399,28],[412,28],[403,28],[409,28],[394,2],[413,28],[416,29],[407,28],[397,28],[415,28],[400,28],[398,28],[408,28],[404,28],[414,28],[401,28],[411,28],[396,28],[406,28],[405,28],[419,30],[418,31],[417,2],[450,32],[48,2],[49,2],[50,2],[52,33],[294,34],[295,33],[421,2],[321,2],[322,2],[422,35],[296,2],[423,2],[424,36],[51,2],[298,37],[299,2],[297,38],[300,37],[301,2],[303,39],[314,40],[315,2],[320,41],[316,2],[317,2],[318,2],[319,2],[327,42],[330,43],[328,2],[329,44],[347,45],[331,2],[332,2],[1061,46],[313,47],[311,48],[309,49],[310,50],[312,2],[339,51],[333,2],[342,52],[335,53],[340,54],[338,55],[341,56],[336,57],[337,58],[324,59],[343,60],[325,61],[345,62],[346,63],[334,2],[302,2],[326,64],[344,65],[353,66],[348,2],[354,67],[349,68],[350,69],[351,70],[352,71],[420,72],[434,73],[433,2],[439,74],[435,73],[436,75],[438,76],[437,77],[440,78],[427,79],[428,80],[431,81],[430,81],[429,80],[432,80],[426,82],[442,83],[441,84],[444,85],[443,86],[445,87],[446,59],[447,88],[323,2],[448,89],[425,90],[449,91],[1014,92],[1015,93],[1019,94],[1010,93],[1012,95],[1013,96],[1005,2],[1006,2],[1009,97],[1007,2],[1008,2],[1017,2],[1018,98],[1016,99],[1020,100],[1027,101],[1028,102],[1037,103],[1038,2],[1039,2],[1040,104],[1041,105],[1043,106],[1044,107],[1045,108],[1042,102],[1046,109],[1073,110],[1030,111],[1032,112],[1055,113],[1051,114],[1048,115],[1047,2],[1052,116],[1035,117],[1053,2],[1054,118],[1033,119],[1029,120],[1034,121],[1031,122],[1049,123],[1057,124],[1058,125],[1056,126],[1059,127],[1060,128],[1062,129],[1064,130],[1063,131],[1070,132],[1036,16],[1066,133],[1065,16],[1068,134],[1067,2],[1069,135],[1050,136],[1072,137],[1071,16],[998,138],[993,139],[992,16],[994,139],[995,139],[996,139],[997,16],[999,140],[823,141],[821,142],[822,143],[827,144],[820,145],[825,146],[824,147],[826,148],[828,149],[1106,2],[1084,150],[1080,1],[1082,151],[1083,1],[1086,152],[1085,153],[1087,2],[1092,154],[1088,2],[1091,155],[1089,2],[1095,156],[1099,157],[1100,158],[1101,2],[1102,159],[1103,160],[1112,161],[1090,2],[1096,162],[1097,163],[183,164],[184,164],[186,165],[187,166],[188,167],[189,168],[190,169],[191,170],[192,171],[193,172],[194,173],[195,174],[196,174],[197,175],[198,176],[199,177],[200,178],[185,2],[233,2],[201,179],[202,180],[203,181],[234,182],[204,183],[205,184],[206,185],[207,186],[208,187],[209,188],[210,189],[211,190],[212,191],[213,192],[214,193],[215,194],[217,195],[216,196],[218,197],[219,198],[220,2],[221,199],[222,200],[223,201],[224,202],[225,203],[226,204],[227,205],[228,206],[229,207],[230,208],[231,209],[232,210],[1113,2],[1116,211],[1115,212],[1114,213],[1117,2],[1094,2],[1093,2],[1142,214],[1143,215],[1118,216],[1121,216],[1140,214],[1141,214],[1131,214],[1130,217],[1128,214],[1123,214],[1136,214],[1134,214],[1138,214],[1122,214],[1135,214],[1139,214],[1124,214],[1125,214],[1137,214],[1119,214],[1126,214],[1127,214],[1129,214],[1133,214],[1144,218],[1132,214],[1120,214],[1157,219],[1156,2],[1151,218],[1153,220],[1152,218],[1145,218],[1146,218],[1148,218],[1150,218],[1154,220],[1155,220],[1147,220],[1149,220],[1098,221],[1158,2],[1160,222],[1161,223],[897,224],[889,225],[890,2],[891,2],[892,2],[893,2],[894,2],[896,2],[895,2],[1162,2],[1163,226],[1159,2],[846,227],[847,227],[848,227],[854,228],[849,227],[850,227],[851,227],[852,227],[853,227],[837,229],[836,2],[855,230],[843,2],[839,231],[830,2],[829,2],[831,2],[832,227],[833,232],[845,233],[834,227],[835,227],[840,234],[841,235],[842,227],[838,2],[844,2],[859,2],[861,236],[972,237],[976,237],[975,237],[973,237],[974,237],[977,237],[862,237],[874,237],[863,237],[876,237],[878,237],[871,237],[872,237],[873,237],[877,237],[879,237],[864,237],[875,237],[865,237],[867,238],[868,237],[869,237],[870,237],[886,237],[885,237],[980,239],[880,237],[882,237],[881,237],[883,237],[884,237],[979,237],[978,237],[887,237],[898,240],[899,240],[901,237],[946,237],[945,237],[902,237],[943,237],[947,237],[903,237],[904,237],[905,240],[948,237],[942,240],[900,240],[949,237],[906,240],[950,237],[907,240],[930,237],[908,237],[951,237],[909,237],[940,240],[911,237],[912,237],[952,237],[914,237],[916,237],[917,237],[923,237],[924,237],[918,240],[954,237],[941,240],[953,240],[919,237],[920,237],[955,237],[921,237],[913,240],[956,237],[939,237],[957,237],[922,240],[925,237],[926,237],[944,240],[958,237],[959,237],[938,241],[915,237],[960,240],[961,237],[962,237],[963,237],[927,237],[929,237],[931,237],[928,240],[910,237],[932,237],[935,237],[933,237],[934,237],[888,237],[970,237],[964,237],[965,237],[967,237],[968,237],[966,237],[971,237],[969,237],[988,242],[986,243],[987,244],[985,245],[984,237],[983,246],[858,2],[860,2],[856,2],[981,2],[982,247],[866,236],[857,2],[1011,44],[1111,248],[1109,249],[1110,250],[1105,2],[937,251],[936,2],[1108,252],[46,2],[293,253],[266,2],[244,254],[242,254],[105,255],[56,256],[55,257],[243,258],[176,259],[98,260],[54,261],[53,262],[292,257],[257,263],[256,263],[116,264],[264,255],[265,255],[267,265],[268,255],[269,262],[270,255],[241,255],[271,255],[272,266],[273,255],[274,263],[275,267],[276,255],[277,255],[278,255],[279,255],[280,263],[281,255],[282,255],[283,255],[284,255],[285,268],[286,255],[287,255],[288,255],[289,255],[290,255],[58,262],[59,262],[60,255],[61,262],[62,262],[63,262],[64,262],[65,255],[67,269],[68,262],[66,262],[69,262],[70,262],[71,262],[72,262],[73,262],[74,262],[75,255],[76,262],[77,262],[78,262],[79,262],[80,262],[81,255],[82,262],[83,255],[84,262],[85,262],[86,262],[87,262],[88,255],[90,270],[89,262],[91,262],[92,262],[93,262],[94,262],[95,268],[96,255],[97,255],[111,271],[99,272],[100,262],[101,262],[102,255],[103,262],[104,262],[106,273],[107,262],[108,262],[109,262],[110,262],[112,262],[113,262],[114,262],[115,262],[117,274],[118,262],[119,262],[120,262],[121,255],[122,262],[123,275],[124,275],[125,275],[126,255],[127,262],[128,262],[129,262],[134,262],[130,262],[131,255],[132,262],[133,255],[135,255],[136,262],[137,262],[138,255],[139,255],[140,262],[141,255],[142,262],[143,262],[144,255],[145,262],[146,262],[147,262],[148,262],[149,262],[150,262],[151,262],[152,262],[153,262],[154,262],[155,262],[156,262],[157,262],[158,276],[159,262],[160,262],[161,262],[162,262],[163,262],[164,262],[165,255],[166,255],[167,255],[168,255],[169,255],[170,262],[171,262],[172,262],[173,262],[291,255],[175,277],[250,278],[245,278],[236,279],[182,280],[248,281],[237,282],[251,283],[246,284],[247,281],[249,285],[235,44],[240,2],[180,286],[181,287],[178,2],[179,288],[177,262],[238,289],[57,290],[258,2],[259,2],[260,2],[261,2],[262,2],[263,2],[252,2],[255,263],[254,2],[253,291],[174,292],[239,293],[511,294],[510,2],[533,2],[460,295],[512,2],[469,2],[459,2],[663,2],[608,296],[811,297],[660,298],[810,299],[809,299],[662,2],[513,300],[615,301],[611,302],[806,298],[781,2],[784,303],[782,2],[783,2],[778,304],[780,305],[734,306],[735,307],[736,307],[746,307],[741,308],[740,309],[742,307],[743,307],[745,310],[773,311],[770,2],[769,312],[771,307],[747,2],[748,2],[751,2],[749,2],[750,2],[752,2],[753,2],[756,2],[754,2],[755,2],[757,2],[758,2],[465,313],[731,2],[730,2],[732,2],[729,2],[466,314],[728,2],[733,2],[760,315],[759,2],[495,2],[496,316],[497,316],[739,317],[737,317],[738,2],[457,318],[493,2],[779,319],[464,2],[744,313],[772,145],[761,316],[762,320],[763,321],[764,321],[765,321],[766,321],[767,322],[768,322],[777,323],[776,2],[774,2],[775,324],[520,325],[488,2],[489,326],[601,2],[602,327],[605,296],[606,296],[607,296],[577,328],[578,329],[596,296],[600,296],[595,330],[560,331],[525,332],[579,2],[580,333],[599,296],[593,2],[594,334],[581,328],[582,335],[598,296],[603,2],[604,336],[609,2],[610,337],[583,296],[597,296],[808,2],[591,338],[592,339],[585,2],[586,2],[587,2],[588,2],[589,2],[584,2],[590,2],[463,2],[486,2],[491,2],[508,2],[571,2],[487,317],[514,2],[519,2],[573,340],[566,341],[612,342],[506,343],[502,2],[494,344],[814,303],[503,2],[492,2],[505,345],[504,322],[498,346],[501,319],[666,347],[689,347],[670,347],[673,348],[675,347],[725,347],[701,347],[665,347],[693,347],[722,347],[672,347],[702,347],[687,347],[690,347],[678,347],[712,349],[707,347],[700,347],[682,350],[681,350],[698,348],[708,347],[713,351],[704,347],[685,347],[671,347],[674,347],[706,347],[691,348],[699,347],[696,352],[714,352],[697,348],[683,347],[709,347],[692,347],[726,347],[716,347],[703,347],[724,347],[705,347],[684,347],[720,347],[710,347],[686,347],[715,347],[723,347],[688,347],[711,350],[694,347],[719,353],[669,353],[680,347],[679,347],[677,354],[664,2],[676,347],[721,352],[717,352],[695,352],[718,352],[727,355],[526,356],[532,357],[531,358],[523,359],[522,2],[530,360],[529,360],[528,360],[801,361],[527,362],[568,2],[521,2],[499,2],[537,363],[536,364],[785,356],[786,356],[787,356],[788,356],[789,356],[790,365],[795,356],[791,356],[792,356],[793,356],[794,356],[796,356],[797,356],[798,356],[799,356],[800,366],[661,367],[819,368],[802,369],[804,369],[509,370],[507,2],[803,369],[553,2],[468,371],[654,2],[475,2],[480,372],[655,373],[652,2],[557,2],[658,2],[621,2],[653,307],[650,2],[651,374],[659,375],[649,2],[648,322],[476,322],[462,376],[616,377],[656,2],[657,2],[619,323],[482,319],[467,2],[554,378],[485,379],[484,380],[481,381],[620,382],[558,383],[473,384],[622,385],[478,386],[477,387],[474,388],[483,389],[618,390],[454,2],[479,2],[455,2],[456,2],[458,2],[461,373],[453,2],[500,2],[617,2],[576,391],[812,392],[575,370],[813,393],[472,394],[668,395],[667,396],[524,397],[629,398],[637,399],[640,400],[642,2],[643,401],[630,402],[645,403],[646,404],[628,2],[636,405],[561,406],[614,407],[613,408],[644,409],[633,2],[647,410],[634,2],[641,411],[639,412],[635,2],[638,413],[632,414],[631,414],[565,415],[563,416],[564,416],[570,417],[562,2],[627,418],[805,419],[807,420],[817,2],[567,421],[535,2],[574,422],[534,2],[569,423],[572,2],[815,424],[490,425],[552,2],[470,2],[556,2],[517,2],[623,2],[625,426],[538,2],[515,145],[626,427],[555,428],[471,429],[559,430],[518,431],[624,432],[539,433],[516,434],[551,435],[550,2],[549,436],[545,437],[546,437],[548,438],[544,437],[547,438],[540,342],[541,342],[542,342],[543,439],[816,440],[818,441],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[45,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[44,2],[11,2],[10,2],[452,442],[1026,443],[451,16],[1075,16],[1077,444],[1076,16],[1001,445],[1021,446],[1022,447],[989,448],[1024,449],[1023,450],[1025,451],[1074,452],[1078,453],[991,454],[1000,455],[990,456],[1003,457],[1004,458],[1002,459]],"exportedModulesMap":[[1081,1],[1079,2],[1104,2],[1107,3],[47,2],[357,4],[358,5],[387,6],[388,7],[389,8],[393,9],[390,10],[391,11],[355,2],[356,12],[392,13],[371,2],[359,2],[360,14],[361,15],[362,2],[363,16],[373,17],[364,2],[365,18],[366,2],[367,2],[368,14],[369,14],[370,14],[372,19],[380,20],[382,2],[379,2],[385,21],[383,2],[381,2],[377,22],[378,23],[384,2],[386,24],[374,2],[376,25],[375,26],[305,2],[308,27],[304,2],[306,2],[307,2],[410,28],[395,28],[402,28],[399,28],[412,28],[403,28],[409,28],[394,2],[413,28],[416,29],[407,28],[397,28],[415,28],[400,28],[398,28],[408,28],[404,28],[414,28],[401,28],[411,28],[396,28],[406,28],[405,28],[419,30],[418,31],[417,2],[450,32],[48,2],[49,2],[50,2],[52,33],[294,34],[295,33],[421,2],[321,2],[322,2],[422,35],[296,2],[423,2],[424,36],[51,2],[298,37],[299,2],[297,38],[300,37],[301,2],[303,39],[314,40],[315,2],[320,41],[316,2],[317,2],[318,2],[319,2],[327,42],[330,43],[328,2],[329,44],[347,45],[331,2],[332,2],[1061,46],[313,47],[311,48],[309,49],[310,50],[312,2],[339,51],[333,2],[342,52],[335,53],[340,54],[338,55],[341,56],[336,57],[337,58],[324,59],[343,60],[325,61],[345,62],[346,63],[334,2],[302,2],[326,64],[344,65],[353,66],[348,2],[354,67],[349,68],[350,69],[351,70],[352,71],[420,72],[434,73],[433,2],[439,74],[435,73],[436,75],[438,76],[437,77],[440,78],[427,79],[428,80],[431,81],[430,81],[429,80],[432,80],[426,82],[442,83],[441,84],[444,85],[443,86],[445,87],[446,59],[447,88],[323,2],[448,89],[425,90],[449,91],[1014,92],[1015,93],[1019,94],[1010,93],[1012,95],[1013,96],[1005,2],[1006,2],[1009,97],[1007,2],[1008,2],[1017,2],[1018,98],[1016,99],[1020,100],[1027,101],[1028,102],[1037,103],[1038,2],[1039,2],[1040,104],[1041,105],[1043,106],[1044,107],[1045,108],[1042,102],[1046,109],[1073,110],[1030,111],[1032,112],[1055,113],[1051,114],[1048,115],[1047,2],[1052,116],[1035,117],[1053,2],[1054,118],[1033,119],[1029,120],[1034,121],[1031,122],[1049,123],[1057,124],[1058,125],[1056,126],[1059,127],[1060,128],[1062,129],[1064,130],[1063,131],[1070,132],[1036,16],[1066,133],[1065,16],[1068,134],[1067,2],[1069,135],[1050,136],[1072,137],[1071,16],[998,138],[993,139],[992,16],[994,139],[995,139],[996,139],[997,16],[999,140],[823,141],[821,142],[822,143],[827,144],[820,145],[825,146],[824,147],[826,148],[828,149],[1106,2],[1084,150],[1080,1],[1082,151],[1083,1],[1086,152],[1085,153],[1087,2],[1092,154],[1088,2],[1091,155],[1089,2],[1095,156],[1099,157],[1100,158],[1101,2],[1102,159],[1103,160],[1112,161],[1090,2],[1096,162],[1097,163],[183,164],[184,164],[186,165],[187,166],[188,167],[189,168],[190,169],[191,170],[192,171],[193,172],[194,173],[195,174],[196,174],[197,175],[198,176],[199,177],[200,178],[185,2],[233,2],[201,179],[202,180],[203,181],[234,182],[204,183],[205,184],[206,185],[207,186],[208,187],[209,188],[210,189],[211,190],[212,191],[213,192],[214,193],[215,194],[217,195],[216,196],[218,197],[219,198],[220,2],[221,199],[222,200],[223,201],[224,202],[225,203],[226,204],[227,205],[228,206],[229,207],[230,208],[231,209],[232,210],[1113,2],[1116,211],[1115,212],[1114,213],[1117,2],[1094,2],[1093,2],[1142,214],[1143,215],[1118,216],[1121,216],[1140,214],[1141,214],[1131,214],[1130,217],[1128,214],[1123,214],[1136,214],[1134,214],[1138,214],[1122,214],[1135,214],[1139,214],[1124,214],[1125,214],[1137,214],[1119,214],[1126,214],[1127,214],[1129,214],[1133,214],[1144,218],[1132,214],[1120,214],[1157,219],[1156,2],[1151,218],[1153,220],[1152,218],[1145,218],[1146,218],[1148,218],[1150,218],[1154,220],[1155,220],[1147,220],[1149,220],[1098,221],[1158,2],[1160,222],[1161,223],[897,224],[889,225],[890,2],[891,2],[892,2],[893,2],[894,2],[896,2],[895,2],[1162,2],[1163,226],[1159,2],[846,227],[847,227],[848,227],[854,228],[849,227],[850,227],[851,227],[852,227],[853,227],[837,229],[836,2],[855,230],[843,2],[839,231],[830,2],[829,2],[831,2],[832,227],[833,232],[845,233],[834,227],[835,227],[840,234],[841,235],[842,227],[838,2],[844,2],[859,2],[861,236],[972,237],[976,237],[975,237],[973,237],[974,237],[977,237],[862,237],[874,237],[863,237],[876,237],[878,237],[871,237],[872,237],[873,237],[877,237],[879,237],[864,237],[875,237],[865,237],[867,238],[868,237],[869,237],[870,237],[886,237],[885,237],[980,239],[880,237],[882,237],[881,237],[883,237],[884,237],[979,237],[978,237],[887,237],[898,240],[899,240],[901,237],[946,237],[945,237],[902,237],[943,237],[947,237],[903,237],[904,237],[905,240],[948,237],[942,240],[900,240],[949,237],[906,240],[950,237],[907,240],[930,237],[908,237],[951,237],[909,237],[940,240],[911,237],[912,237],[952,237],[914,237],[916,237],[917,237],[923,237],[924,237],[918,240],[954,237],[941,240],[953,240],[919,237],[920,237],[955,237],[921,237],[913,240],[956,237],[939,237],[957,237],[922,240],[925,237],[926,237],[944,240],[958,237],[959,237],[938,241],[915,237],[960,240],[961,237],[962,237],[963,237],[927,237],[929,237],[931,237],[928,240],[910,237],[932,237],[935,237],[933,237],[934,237],[888,237],[970,237],[964,237],[965,237],[967,237],[968,237],[966,237],[971,237],[969,237],[988,242],[986,243],[987,244],[985,245],[984,237],[983,246],[858,2],[860,2],[856,2],[981,2],[982,247],[866,236],[857,2],[1011,44],[1111,248],[1109,249],[1110,250],[1105,2],[937,251],[936,2],[1108,252],[46,2],[293,253],[266,2],[244,254],[242,254],[105,255],[56,256],[55,257],[243,258],[176,259],[98,260],[54,261],[53,262],[292,257],[257,263],[256,263],[116,264],[264,255],[265,255],[267,265],[268,255],[269,262],[270,255],[241,255],[271,255],[272,266],[273,255],[274,263],[275,267],[276,255],[277,255],[278,255],[279,255],[280,263],[281,255],[282,255],[283,255],[284,255],[285,268],[286,255],[287,255],[288,255],[289,255],[290,255],[58,262],[59,262],[60,255],[61,262],[62,262],[63,262],[64,262],[65,255],[67,269],[68,262],[66,262],[69,262],[70,262],[71,262],[72,262],[73,262],[74,262],[75,255],[76,262],[77,262],[78,262],[79,262],[80,262],[81,255],[82,262],[83,255],[84,262],[85,262],[86,262],[87,262],[88,255],[90,270],[89,262],[91,262],[92,262],[93,262],[94,262],[95,268],[96,255],[97,255],[111,271],[99,272],[100,262],[101,262],[102,255],[103,262],[104,262],[106,273],[107,262],[108,262],[109,262],[110,262],[112,262],[113,262],[114,262],[115,262],[117,274],[118,262],[119,262],[120,262],[121,255],[122,262],[123,275],[124,275],[125,275],[126,255],[127,262],[128,262],[129,262],[134,262],[130,262],[131,255],[132,262],[133,255],[135,255],[136,262],[137,262],[138,255],[139,255],[140,262],[141,255],[142,262],[143,262],[144,255],[145,262],[146,262],[147,262],[148,262],[149,262],[150,262],[151,262],[152,262],[153,262],[154,262],[155,262],[156,262],[157,262],[158,276],[159,262],[160,262],[161,262],[162,262],[163,262],[164,262],[165,255],[166,255],[167,255],[168,255],[169,255],[170,262],[171,262],[172,262],[173,262],[291,255],[175,277],[250,278],[245,278],[236,279],[182,280],[248,281],[237,282],[251,283],[246,284],[247,281],[249,285],[235,44],[240,2],[180,286],[181,287],[178,2],[179,288],[177,262],[238,289],[57,290],[258,2],[259,2],[260,2],[261,2],[262,2],[263,2],[252,2],[255,263],[254,2],[253,291],[174,292],[239,293],[511,294],[510,2],[533,2],[460,295],[512,2],[469,2],[459,2],[663,2],[608,296],[811,297],[660,298],[810,299],[809,299],[662,2],[513,300],[615,301],[611,302],[806,298],[781,2],[784,303],[782,2],[783,2],[778,304],[780,305],[734,306],[735,307],[736,307],[746,307],[741,308],[740,309],[742,307],[743,307],[745,310],[773,311],[770,2],[769,312],[771,307],[747,2],[748,2],[751,2],[749,2],[750,2],[752,2],[753,2],[756,2],[754,2],[755,2],[757,2],[758,2],[465,313],[731,2],[730,2],[732,2],[729,2],[466,314],[728,2],[733,2],[760,315],[759,2],[495,2],[496,316],[497,316],[739,317],[737,317],[738,2],[457,318],[493,2],[779,319],[464,2],[744,313],[772,145],[761,316],[762,320],[763,321],[764,321],[765,321],[766,321],[767,322],[768,322],[777,323],[776,2],[774,2],[775,324],[520,325],[488,2],[489,326],[601,2],[602,327],[605,296],[606,296],[607,296],[577,328],[578,329],[596,296],[600,296],[595,330],[560,331],[525,332],[579,2],[580,333],[599,296],[593,2],[594,334],[581,328],[582,335],[598,296],[603,2],[604,336],[609,2],[610,337],[583,296],[597,296],[808,2],[591,338],[592,339],[585,2],[586,2],[587,2],[588,2],[589,2],[584,2],[590,2],[463,2],[486,2],[491,2],[508,2],[571,2],[487,317],[514,2],[519,2],[573,340],[566,341],[612,342],[506,343],[502,2],[494,344],[814,303],[503,2],[492,2],[505,345],[504,322],[498,346],[501,319],[666,347],[689,347],[670,347],[673,348],[675,347],[725,347],[701,347],[665,347],[693,347],[722,347],[672,347],[702,347],[687,347],[690,347],[678,347],[712,349],[707,347],[700,347],[682,350],[681,350],[698,348],[708,347],[713,351],[704,347],[685,347],[671,347],[674,347],[706,347],[691,348],[699,347],[696,352],[714,352],[697,348],[683,347],[709,347],[692,347],[726,347],[716,347],[703,347],[724,347],[705,347],[684,347],[720,347],[710,347],[686,347],[715,347],[723,347],[688,347],[711,350],[694,347],[719,353],[669,353],[680,347],[679,347],[677,354],[664,2],[676,347],[721,352],[717,352],[695,352],[718,352],[727,355],[526,356],[532,357],[531,358],[523,359],[522,2],[530,360],[529,360],[528,360],[801,361],[527,362],[568,2],[521,2],[499,2],[537,363],[536,364],[785,356],[786,356],[787,356],[788,356],[789,356],[790,365],[795,356],[791,356],[792,356],[793,356],[794,356],[796,356],[797,356],[798,356],[799,356],[800,366],[661,367],[819,368],[802,369],[804,369],[509,370],[507,2],[803,369],[553,2],[468,371],[654,2],[475,2],[480,372],[655,373],[652,2],[557,2],[658,2],[621,2],[653,307],[650,2],[651,374],[659,375],[649,2],[648,322],[476,322],[462,376],[616,377],[656,2],[657,2],[619,323],[482,319],[467,2],[554,378],[485,379],[484,380],[481,381],[620,382],[558,383],[473,384],[622,385],[478,386],[477,387],[474,388],[483,389],[618,390],[454,2],[479,2],[455,2],[456,2],[458,2],[461,373],[453,2],[500,2],[617,2],[576,391],[812,392],[575,370],[813,393],[472,394],[668,395],[667,396],[524,397],[629,398],[637,399],[640,400],[642,2],[643,401],[630,402],[645,403],[646,404],[628,2],[636,405],[561,406],[614,407],[613,408],[644,409],[633,2],[647,410],[634,2],[641,411],[639,412],[635,2],[638,413],[632,414],[631,414],[565,415],[563,416],[564,416],[570,417],[562,2],[627,418],[805,419],[807,420],[817,2],[567,421],[535,2],[574,422],[534,2],[569,423],[572,2],[815,424],[490,425],[552,2],[470,2],[556,2],[517,2],[623,2],[625,426],[538,2],[515,145],[626,427],[555,428],[471,429],[559,430],[518,431],[624,432],[539,433],[516,434],[551,435],[550,2],[549,436],[545,437],[546,437],[548,438],[544,437],[547,438],[540,342],[541,342],[542,342],[543,439],[816,440],[818,441],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[45,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[44,2],[11,2],[10,2],[452,460],[1021,461],[1022,462],[1024,463],[1023,464],[1078,453],[1000,465],[990,461],[1003,466],[1002,467]],"semanticDiagnosticsPerFile":[1081,1079,1104,1107,47,357,358,387,388,389,393,390,391,355,356,392,371,359,360,361,362,363,373,364,365,366,367,368,369,370,372,380,382,379,385,383,381,377,378,384,386,374,376,375,305,308,304,306,307,410,395,402,399,412,403,409,394,413,416,407,397,415,400,398,408,404,414,401,411,396,406,405,419,418,417,450,48,49,50,52,294,295,421,321,322,422,296,423,424,51,298,299,297,300,301,303,314,315,320,316,317,318,319,327,330,328,329,347,331,332,1061,313,311,309,310,312,339,333,342,335,340,338,341,336,337,324,343,325,345,346,334,302,326,344,353,348,354,349,350,351,352,420,434,433,439,435,436,438,437,440,427,428,431,430,429,432,426,442,441,444,443,445,446,447,323,448,425,449,1014,1015,1019,1010,1012,1013,1005,1006,1009,1007,1008,1017,1018,1016,1020,1027,1028,1037,1038,1039,1040,1041,1043,1044,1045,1042,1046,1073,1030,1032,1055,1051,1048,1047,1052,1035,1053,1054,1033,1029,1034,1031,1049,1057,1058,1056,1059,1060,1062,1064,1063,1070,1036,1066,1065,1068,1067,1069,1050,1072,1071,998,993,992,994,995,996,997,999,823,821,822,827,820,825,824,826,828,1106,1084,1080,1082,1083,1086,1085,1087,1092,1088,1091,1089,1095,1099,1100,1101,1102,1103,1112,1090,1096,1097,183,184,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,185,233,201,202,203,234,204,205,206,207,208,209,210,211,212,213,214,215,217,216,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,1113,1116,1115,1114,1117,1094,1093,1142,1143,1118,1121,1140,1141,1131,1130,1128,1123,1136,1134,1138,1122,1135,1139,1124,1125,1137,1119,1126,1127,1129,1133,1144,1132,1120,1157,1156,1151,1153,1152,1145,1146,1148,1150,1154,1155,1147,1149,1098,1158,1160,1161,897,889,890,891,892,893,894,896,895,1162,1163,1159,846,847,848,854,849,850,851,852,853,837,836,855,843,839,830,829,831,832,833,845,834,835,840,841,842,838,844,859,861,972,976,975,973,974,977,862,874,863,876,878,871,872,873,877,879,864,875,865,867,868,869,870,886,885,980,880,882,881,883,884,979,978,887,898,899,901,946,945,902,943,947,903,904,905,948,942,900,949,906,950,907,930,908,951,909,940,911,912,952,914,916,917,923,924,918,954,941,953,919,920,955,921,913,956,939,957,922,925,926,944,958,959,938,915,960,961,962,963,927,929,931,928,910,932,935,933,934,888,970,964,965,967,968,966,971,969,988,986,987,985,984,983,858,860,856,981,982,866,857,1011,1111,1109,1110,1105,937,936,1108,46,293,266,244,242,105,56,55,243,176,98,54,53,292,257,256,116,264,265,267,268,269,270,241,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,58,59,60,61,62,63,64,65,67,68,66,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,90,89,91,92,93,94,95,96,97,111,99,100,101,102,103,104,106,107,108,109,110,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,134,130,131,132,133,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,291,175,250,245,236,182,248,237,251,246,247,249,235,240,180,181,178,179,177,238,57,258,259,260,261,262,263,252,255,254,253,174,239,511,510,533,460,512,469,459,663,608,811,660,810,809,662,513,615,611,806,781,784,782,783,778,780,734,735,736,746,741,740,742,743,745,773,770,769,771,747,748,751,749,750,752,753,756,754,755,757,758,465,731,730,732,729,466,728,733,760,759,495,496,497,739,737,738,457,493,779,464,744,772,761,762,763,764,765,766,767,768,777,776,774,775,520,488,489,601,602,605,606,607,577,578,596,600,595,560,525,579,580,599,593,594,581,582,598,603,604,609,610,583,597,808,591,592,585,586,587,588,589,584,590,463,486,491,508,571,487,514,519,573,566,612,506,502,494,814,503,492,505,504,498,501,666,689,670,673,675,725,701,665,693,722,672,702,687,690,678,712,707,700,682,681,698,708,713,704,685,671,674,706,691,699,696,714,697,683,709,692,726,716,703,724,705,684,720,710,686,715,723,688,711,694,719,669,680,679,677,664,676,721,717,695,718,727,526,532,531,523,522,530,529,528,801,527,568,521,499,537,536,785,786,787,788,789,790,795,791,792,793,794,796,797,798,799,800,661,819,802,804,509,507,803,553,468,654,475,480,655,652,557,658,621,653,650,651,659,649,648,476,462,616,656,657,619,482,467,554,485,484,481,620,558,473,622,478,477,474,483,618,454,479,455,456,458,461,453,500,617,576,812,575,813,472,668,667,524,629,637,640,642,643,630,645,646,628,636,561,614,613,644,633,647,634,641,639,635,638,632,631,565,563,564,570,562,627,805,807,817,567,535,574,534,569,572,815,490,552,470,556,517,623,625,538,515,626,555,471,559,518,624,539,516,551,550,549,545,546,548,544,547,540,541,542,543,816,818,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,45,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,37,42,43,38,39,40,41,1,44,11,10,452,1026,451,1075,1077,1076,1001,1021,1022,989,1024,1023,1025,1074,1078,991,1000,990,1003,1004,1002]},"version":"4.8.4"} \ No newline at end of file +{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.es2017.full.d.ts","../node_modules/reflect-metadata/index.d.ts","../node_modules/@nestjs/common/cache/cache.constants.d.ts","../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../node_modules/rxjs/dist/types/internal/Subscription.d.ts","../node_modules/rxjs/dist/types/internal/Subscriber.d.ts","../node_modules/rxjs/dist/types/internal/Operator.d.ts","../node_modules/rxjs/dist/types/internal/Observable.d.ts","../node_modules/rxjs/dist/types/internal/types.d.ts","../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../node_modules/rxjs/dist/types/internal/operators/auditTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferToggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/catchError.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatestAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatest.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatestWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounceTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/defaultIfEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../node_modules/rxjs/dist/types/internal/operators/delayWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctUntilChanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctUntilKeyChanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/elementAt.d.ts","../node_modules/rxjs/dist/types/internal/operators/endWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../node_modules/rxjs/dist/types/internal/operators/findIndex.d.ts","../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../node_modules/rxjs/dist/types/internal/Subject.d.ts","../node_modules/rxjs/dist/types/internal/operators/groupBy.d.ts","../node_modules/rxjs/dist/types/internal/operators/ignoreElements.d.ts","../node_modules/rxjs/dist/types/internal/operators/isEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../node_modules/rxjs/dist/types/internal/operators/mapTo.d.ts","../node_modules/rxjs/dist/types/internal/Notification.d.ts","../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/flatMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeScan.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../node_modules/rxjs/dist/types/internal/observable/ConnectableObservable.d.ts","../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../node_modules/rxjs/dist/types/internal/operators/observeOn.d.ts","../node_modules/rxjs/dist/types/internal/operators/onErrorResumeNext.d.ts","../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishBehavior.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishReplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../node_modules/rxjs/dist/types/internal/operators/raceWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeatWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../node_modules/rxjs/dist/types/internal/operators/retryWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/refCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../node_modules/rxjs/dist/types/internal/operators/sampleTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../node_modules/rxjs/dist/types/internal/operators/sequenceEqual.d.ts","../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../node_modules/rxjs/dist/types/internal/operators/shareReplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipUntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipWhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/startWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/subscribeOn.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchScan.d.ts","../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeUntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeWhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttleTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/throwIfEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeInterval.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeoutWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../node_modules/rxjs/dist/types/internal/operators/toArray.d.ts","../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowToggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/withLatestFrom.d.ts","../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipWith.d.ts","../node_modules/rxjs/dist/types/operators/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/Action.d.ts","../node_modules/rxjs/dist/types/internal/Scheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/TestMessage.d.ts","../node_modules/rxjs/dist/types/internal/testing/SubscriptionLog.d.ts","../node_modules/rxjs/dist/types/internal/testing/SubscriptionLoggable.d.ts","../node_modules/rxjs/dist/types/internal/testing/ColdObservable.d.ts","../node_modules/rxjs/dist/types/internal/testing/HotObservable.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsyncScheduler.d.ts","../node_modules/@types/node/ts4.8/assert.d.ts","../node_modules/@types/node/ts4.8/assert/strict.d.ts","../node_modules/@types/node/ts4.8/globals.d.ts","../node_modules/@types/node/ts4.8/async_hooks.d.ts","../node_modules/@types/node/ts4.8/buffer.d.ts","../node_modules/@types/node/ts4.8/child_process.d.ts","../node_modules/@types/node/ts4.8/cluster.d.ts","../node_modules/@types/node/ts4.8/console.d.ts","../node_modules/@types/node/ts4.8/constants.d.ts","../node_modules/@types/node/ts4.8/crypto.d.ts","../node_modules/@types/node/ts4.8/dgram.d.ts","../node_modules/@types/node/ts4.8/diagnostics_channel.d.ts","../node_modules/@types/node/ts4.8/dns.d.ts","../node_modules/@types/node/ts4.8/dns/promises.d.ts","../node_modules/@types/node/ts4.8/domain.d.ts","../node_modules/@types/node/ts4.8/events.d.ts","../node_modules/@types/node/ts4.8/fs.d.ts","../node_modules/@types/node/ts4.8/fs/promises.d.ts","../node_modules/@types/node/ts4.8/http.d.ts","../node_modules/@types/node/ts4.8/http2.d.ts","../node_modules/@types/node/ts4.8/https.d.ts","../node_modules/@types/node/ts4.8/inspector.d.ts","../node_modules/@types/node/ts4.8/module.d.ts","../node_modules/@types/node/ts4.8/net.d.ts","../node_modules/@types/node/ts4.8/os.d.ts","../node_modules/@types/node/ts4.8/path.d.ts","../node_modules/@types/node/ts4.8/perf_hooks.d.ts","../node_modules/@types/node/ts4.8/process.d.ts","../node_modules/@types/node/ts4.8/punycode.d.ts","../node_modules/@types/node/ts4.8/querystring.d.ts","../node_modules/@types/node/ts4.8/readline.d.ts","../node_modules/@types/node/ts4.8/repl.d.ts","../node_modules/@types/node/ts4.8/stream.d.ts","../node_modules/@types/node/ts4.8/stream/promises.d.ts","../node_modules/@types/node/ts4.8/stream/consumers.d.ts","../node_modules/@types/node/ts4.8/stream/web.d.ts","../node_modules/@types/node/ts4.8/string_decoder.d.ts","../node_modules/@types/node/ts4.8/test.d.ts","../node_modules/@types/node/ts4.8/timers.d.ts","../node_modules/@types/node/ts4.8/timers/promises.d.ts","../node_modules/@types/node/ts4.8/tls.d.ts","../node_modules/@types/node/ts4.8/trace_events.d.ts","../node_modules/@types/node/ts4.8/tty.d.ts","../node_modules/@types/node/ts4.8/url.d.ts","../node_modules/@types/node/ts4.8/util.d.ts","../node_modules/@types/node/ts4.8/v8.d.ts","../node_modules/@types/node/ts4.8/vm.d.ts","../node_modules/@types/node/ts4.8/wasi.d.ts","../node_modules/@types/node/ts4.8/worker_threads.d.ts","../node_modules/@types/node/ts4.8/zlib.d.ts","../node_modules/@types/node/ts4.8/globals.global.d.ts","../node_modules/@types/node/ts4.8/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/timerHandle.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsyncAction.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/VirtualTimeScheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/TestScheduler.d.ts","../node_modules/rxjs/dist/types/testing/index.d.ts","../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../node_modules/rxjs/dist/types/internal/observable/dom/animationFrames.d.ts","../node_modules/rxjs/dist/types/internal/BehaviorSubject.d.ts","../node_modules/rxjs/dist/types/internal/ReplaySubject.d.ts","../node_modules/rxjs/dist/types/internal/AsyncSubject.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsapScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/QueueScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AnimationFrameScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationFrame.d.ts","../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../node_modules/rxjs/dist/types/internal/util/isObservable.d.ts","../node_modules/rxjs/dist/types/internal/lastValueFrom.d.ts","../node_modules/rxjs/dist/types/internal/firstValueFrom.d.ts","../node_modules/rxjs/dist/types/internal/util/ArgumentOutOfRangeError.d.ts","../node_modules/rxjs/dist/types/internal/util/EmptyError.d.ts","../node_modules/rxjs/dist/types/internal/util/NotFoundError.d.ts","../node_modules/rxjs/dist/types/internal/util/ObjectUnsubscribedError.d.ts","../node_modules/rxjs/dist/types/internal/util/SequenceError.d.ts","../node_modules/rxjs/dist/types/internal/util/UnsubscriptionError.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindCallback.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindNodeCallback.d.ts","../node_modules/rxjs/dist/types/internal/AnyCatcher.d.ts","../node_modules/rxjs/dist/types/internal/observable/combineLatest.d.ts","../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../node_modules/rxjs/dist/types/internal/observable/forkJoin.d.ts","../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromEvent.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromEventPattern.d.ts","../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../node_modules/rxjs/dist/types/internal/observable/onErrorResumeNext.d.ts","../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../node_modules/rxjs/dist/types/internal/observable/throwError.d.ts","../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../node_modules/rxjs/dist/types/internal/config.d.ts","../node_modules/rxjs/dist/types/index.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../node_modules/@nestjs/common/enums/index.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../node_modules/@nestjs/common/services/logger.service.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/index.d.ts","../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../node_modules/@nestjs/common/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/constants.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","../node_modules/@nestjs/common/module-utils/index.d.ts","../node_modules/@nestjs/common/cache/interfaces/cache-manager.interface.d.ts","../node_modules/@nestjs/common/cache/interfaces/cache-module.interface.d.ts","../node_modules/@nestjs/common/cache/cache.module-definition.d.ts","../node_modules/@nestjs/common/cache/cache.module.d.ts","../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/index.d.ts","../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/index.d.ts","../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/index.d.ts","../node_modules/@nestjs/common/decorators/index.d.ts","../node_modules/@nestjs/common/cache/decorators/cache-key.decorator.d.ts","../node_modules/@nestjs/common/cache/decorators/cache-ttl.decorator.d.ts","../node_modules/@nestjs/common/cache/decorators/index.d.ts","../node_modules/@nestjs/common/cache/interceptors/cache.interceptor.d.ts","../node_modules/@nestjs/common/cache/interceptors/index.d.ts","../node_modules/@nestjs/common/cache/interfaces/index.d.ts","../node_modules/@nestjs/common/cache/index.d.ts","../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../node_modules/@nestjs/common/exceptions/index.d.ts","../node_modules/@nestjs/common/file-stream/streamable-options.interface.d.ts","../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../node_modules/@nestjs/common/file-stream/index.d.ts","../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","../node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","../node_modules/@nestjs/common/pipes/file/index.d.ts","../node_modules/@nestjs/common/pipes/index.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../node_modules/@nestjs/common/serializer/index.d.ts","../node_modules/@nestjs/common/services/console-logger.service.d.ts","../node_modules/@nestjs/common/services/index.d.ts","../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../node_modules/@nestjs/common/utils/index.d.ts","../node_modules/@nestjs/common/index.d.ts","../src/app.service.ts","../src/app.controller.ts","../node_modules/typeorm/metadata/types/RelationTypes.d.ts","../node_modules/typeorm/metadata/types/DeferrableType.d.ts","../node_modules/typeorm/metadata/types/OnDeleteType.d.ts","../node_modules/typeorm/metadata/types/OnUpdateType.d.ts","../node_modules/typeorm/decorator/options/RelationOptions.d.ts","../node_modules/typeorm/metadata/types/PropertyTypeInFunction.d.ts","../node_modules/typeorm/common/ObjectType.d.ts","../node_modules/typeorm/common/EntityTarget.d.ts","../node_modules/typeorm/metadata/types/RelationTypeInFunction.d.ts","../node_modules/typeorm/metadata-args/RelationMetadataArgs.d.ts","../node_modules/typeorm/driver/types/ColumnTypes.d.ts","../node_modules/typeorm/decorator/options/ValueTransformer.d.ts","../node_modules/typeorm/decorator/options/ColumnCommonOptions.d.ts","../node_modules/typeorm/decorator/options/ColumnOptions.d.ts","../node_modules/typeorm/metadata-args/types/ColumnMode.d.ts","../node_modules/typeorm/metadata-args/ColumnMetadataArgs.d.ts","../node_modules/typeorm/common/ObjectLiteral.d.ts","../node_modules/typeorm/schema-builder/options/TableColumnOptions.d.ts","../node_modules/typeorm/schema-builder/table/TableColumn.d.ts","../node_modules/typeorm/naming-strategy/NamingStrategyInterface.d.ts","../node_modules/typeorm/metadata/ForeignKeyMetadata.d.ts","../node_modules/typeorm/metadata/RelationMetadata.d.ts","../node_modules/typeorm/metadata-args/EmbeddedMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/RelationIdMetadataArgs.d.ts","../node_modules/typeorm/metadata/RelationIdMetadata.d.ts","../node_modules/typeorm/metadata/RelationCountMetadata.d.ts","../node_modules/typeorm/metadata/types/EventListenerTypes.d.ts","../node_modules/typeorm/metadata-args/EntityListenerMetadataArgs.d.ts","../node_modules/typeorm/metadata/EntityListenerMetadata.d.ts","../node_modules/typeorm/metadata-args/UniqueMetadataArgs.d.ts","../node_modules/typeorm/metadata/UniqueMetadata.d.ts","../node_modules/typeorm/metadata/EmbeddedMetadata.d.ts","../node_modules/typeorm/metadata/ColumnMetadata.d.ts","../node_modules/typeorm/driver/types/CteCapabilities.d.ts","../node_modules/typeorm/driver/types/MappedColumnTypes.d.ts","../node_modules/typeorm/driver/Query.d.ts","../node_modules/typeorm/driver/SqlInMemory.d.ts","../node_modules/typeorm/schema-builder/SchemaBuilder.d.ts","../node_modules/typeorm/driver/types/DataTypeDefaults.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaIndexOptions.d.ts","../node_modules/typeorm/decorator/options/SpatialColumnOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaColumnOptions.d.ts","../node_modules/typeorm/decorator/options/JoinColumnOptions.d.ts","../node_modules/typeorm/decorator/options/JoinTableMultipleColumnsOptions.d.ts","../node_modules/typeorm/decorator/options/JoinTableOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaRelationOptions.d.ts","../node_modules/typeorm/find-options/OrderByCondition.d.ts","../node_modules/typeorm/metadata/types/TableTypes.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaUniqueOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaCheckOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaExclusionOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaRelationIdOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaOptions.d.ts","../node_modules/typeorm/entity-schema/EntitySchema.d.ts","../node_modules/typeorm/logger/LoggerOptions.d.ts","../node_modules/typeorm/driver/types/DatabaseType.d.ts","../node_modules/typeorm/logger/Logger.d.ts","../node_modules/typeorm/cache/QueryResultCacheOptions.d.ts","../node_modules/typeorm/cache/QueryResultCache.d.ts","../node_modules/typeorm/common/MixedList.d.ts","../node_modules/typeorm/data-source/BaseDataSourceOptions.d.ts","../node_modules/typeorm/driver/types/ReplicationMode.d.ts","../node_modules/typeorm/schema-builder/options/ViewOptions.d.ts","../node_modules/typeorm/schema-builder/view/View.d.ts","../node_modules/typeorm/schema-builder/options/TableForeignKeyOptions.d.ts","../node_modules/typeorm/schema-builder/table/TableForeignKey.d.ts","../node_modules/typeorm/driver/types/UpsertType.d.ts","../node_modules/typeorm/driver/Driver.d.ts","../node_modules/typeorm/find-options/JoinOptions.d.ts","../node_modules/typeorm/find-options/FindOperatorType.d.ts","../node_modules/typeorm/find-options/FindOperator.d.ts","../node_modules/typeorm/platform/PlatformTools.d.ts","../node_modules/typeorm/driver/mongodb/typings.d.ts","../node_modules/typeorm/find-options/EqualOperator.d.ts","../node_modules/typeorm/find-options/FindOptionsWhere.d.ts","../node_modules/typeorm/find-options/FindOptionsSelect.d.ts","../node_modules/typeorm/find-options/FindOptionsRelations.d.ts","../node_modules/typeorm/find-options/FindOptionsOrder.d.ts","../node_modules/typeorm/find-options/FindOneOptions.d.ts","../node_modules/typeorm/find-options/FindManyOptions.d.ts","../node_modules/typeorm/common/DeepPartial.d.ts","../node_modules/typeorm/repository/SaveOptions.d.ts","../node_modules/typeorm/repository/RemoveOptions.d.ts","../node_modules/typeorm/find-options/mongodb/MongoFindOneOptions.d.ts","../node_modules/typeorm/find-options/mongodb/MongoFindManyOptions.d.ts","../node_modules/typeorm/schema-builder/options/TableUniqueOptions.d.ts","../node_modules/typeorm/schema-builder/table/TableUnique.d.ts","../node_modules/typeorm/subscriber/event/TransactionCommitEvent.d.ts","../node_modules/typeorm/subscriber/event/TransactionRollbackEvent.d.ts","../node_modules/typeorm/subscriber/event/TransactionStartEvent.d.ts","../node_modules/typeorm/subscriber/event/UpdateEvent.d.ts","../node_modules/typeorm/subscriber/event/RemoveEvent.d.ts","../node_modules/typeorm/subscriber/event/InsertEvent.d.ts","../node_modules/typeorm/subscriber/event/LoadEvent.d.ts","../node_modules/typeorm/subscriber/event/SoftRemoveEvent.d.ts","../node_modules/typeorm/subscriber/event/RecoverEvent.d.ts","../node_modules/typeorm/subscriber/EntitySubscriberInterface.d.ts","../node_modules/typeorm/subscriber/BroadcasterResult.d.ts","../node_modules/typeorm/subscriber/Broadcaster.d.ts","../node_modules/typeorm/schema-builder/options/TableCheckOptions.d.ts","../node_modules/typeorm/metadata-args/CheckMetadataArgs.d.ts","../node_modules/typeorm/metadata/CheckMetadata.d.ts","../node_modules/typeorm/schema-builder/table/TableCheck.d.ts","../node_modules/typeorm/schema-builder/options/TableExclusionOptions.d.ts","../node_modules/typeorm/metadata-args/ExclusionMetadataArgs.d.ts","../node_modules/typeorm/metadata/ExclusionMetadata.d.ts","../node_modules/typeorm/schema-builder/table/TableExclusion.d.ts","../node_modules/typeorm/driver/mongodb/MongoQueryRunner.d.ts","../node_modules/typeorm/query-builder/QueryPartialEntity.d.ts","../node_modules/typeorm/query-runner/QueryResult.d.ts","../node_modules/typeorm/query-builder/result/InsertResult.d.ts","../node_modules/typeorm/query-builder/result/UpdateResult.d.ts","../node_modules/typeorm/query-builder/result/DeleteResult.d.ts","../node_modules/typeorm/entity-manager/MongoEntityManager.d.ts","../node_modules/typeorm/repository/MongoRepository.d.ts","../node_modules/typeorm/find-options/FindTreeOptions.d.ts","../node_modules/typeorm/repository/TreeRepository.d.ts","../node_modules/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.d.ts","../node_modules/typeorm/driver/types/IsolationLevel.d.ts","../node_modules/typeorm/repository/UpsertOptions.d.ts","../node_modules/typeorm/entity-manager/EntityManager.d.ts","../node_modules/typeorm/repository/Repository.d.ts","../node_modules/typeorm/migration/MigrationInterface.d.ts","../node_modules/typeorm/migration/Migration.d.ts","../node_modules/typeorm/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/cockroachdb/CockroachConnectionOptions.d.ts","../node_modules/typeorm/driver/mysql/MysqlConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/mysql/MysqlConnectionOptions.d.ts","../node_modules/typeorm/driver/postgres/PostgresConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/postgres/PostgresConnectionOptions.d.ts","../node_modules/typeorm/driver/sqlite/SqliteConnectionOptions.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/DefaultAuthentication.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.d.ts","../node_modules/typeorm/driver/sqlserver/authentication/NtlmAuthentication.d.ts","../node_modules/typeorm/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/sqlserver/SqlServerConnectionOptions.d.ts","../node_modules/typeorm/driver/oracle/OracleConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/oracle/OracleConnectionOptions.d.ts","../node_modules/typeorm/driver/mongodb/MongoConnectionOptions.d.ts","../node_modules/typeorm/driver/cordova/CordovaConnectionOptions.d.ts","../node_modules/typeorm/driver/sqljs/SqljsConnectionOptions.d.ts","../node_modules/typeorm/driver/react-native/ReactNativeConnectionOptions.d.ts","../node_modules/typeorm/driver/nativescript/NativescriptConnectionOptions.d.ts","../node_modules/typeorm/driver/expo/ExpoConnectionOptions.d.ts","../node_modules/typeorm/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts","../node_modules/typeorm/driver/sap/SapConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/sap/SapConnectionOptions.d.ts","../node_modules/typeorm/driver/aurora-postgres/AuroraPostgresConnectionOptions.d.ts","../node_modules/typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts","../node_modules/typeorm/driver/capacitor/CapacitorConnectionOptions.d.ts","../node_modules/typeorm/connection/BaseConnectionOptions.d.ts","../node_modules/typeorm/driver/spanner/SpannerConnectionCredentialsOptions.d.ts","../node_modules/typeorm/driver/spanner/SpannerConnectionOptions.d.ts","../node_modules/typeorm/data-source/DataSourceOptions.d.ts","../node_modules/typeorm/entity-manager/SqljsEntityManager.d.ts","../node_modules/typeorm/query-builder/RelationLoader.d.ts","../node_modules/typeorm/query-builder/RelationIdLoader.d.ts","../node_modules/typeorm/data-source/DataSource.d.ts","../node_modules/typeorm/metadata-args/TableMetadataArgs.d.ts","../node_modules/typeorm/metadata/types/TreeTypes.d.ts","../node_modules/typeorm/metadata/types/ClosureTreeOptions.d.ts","../node_modules/typeorm/metadata-args/TreeMetadataArgs.d.ts","../node_modules/typeorm/metadata/EntityMetadata.d.ts","../node_modules/typeorm/metadata-args/IndexMetadataArgs.d.ts","../node_modules/typeorm/metadata/IndexMetadata.d.ts","../node_modules/typeorm/schema-builder/options/TableIndexOptions.d.ts","../node_modules/typeorm/schema-builder/table/TableIndex.d.ts","../node_modules/typeorm/schema-builder/options/TableOptions.d.ts","../node_modules/typeorm/schema-builder/table/Table.d.ts","../node_modules/typeorm/query-runner/QueryRunner.d.ts","../node_modules/typeorm/query-builder/QueryBuilderCte.d.ts","../node_modules/typeorm/query-builder/Alias.d.ts","../node_modules/typeorm/query-builder/JoinAttribute.d.ts","../node_modules/typeorm/query-builder/relation-id/RelationIdAttribute.d.ts","../node_modules/typeorm/query-builder/relation-count/RelationCountAttribute.d.ts","../node_modules/typeorm/query-builder/SelectQuery.d.ts","../node_modules/typeorm/query-builder/SelectQueryBuilderOption.d.ts","../node_modules/typeorm/query-builder/WhereClause.d.ts","../node_modules/typeorm/query-builder/QueryExpressionMap.d.ts","../node_modules/typeorm/query-builder/Brackets.d.ts","../node_modules/typeorm/query-builder/WhereExpressionBuilder.d.ts","../node_modules/typeorm/query-builder/UpdateQueryBuilder.d.ts","../node_modules/typeorm/query-builder/DeleteQueryBuilder.d.ts","../node_modules/typeorm/query-builder/SoftDeleteQueryBuilder.d.ts","../node_modules/typeorm/query-builder/InsertOrUpdateOptions.d.ts","../node_modules/typeorm/query-builder/InsertQueryBuilder.d.ts","../node_modules/typeorm/query-builder/RelationQueryBuilder.d.ts","../node_modules/typeorm/query-builder/NotBrackets.d.ts","../node_modules/typeorm/query-builder/QueryBuilder.d.ts","../node_modules/typeorm/query-builder/SelectQueryBuilder.d.ts","../node_modules/typeorm/metadata-args/RelationCountMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/NamingStrategyMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/JoinColumnMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/JoinTableMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/EntitySubscriberMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/InheritanceMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/DiscriminatorValueMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/EntityRepositoryMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/TransactionEntityMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/TransactionRepositoryMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/GeneratedMetadataArgs.d.ts","../node_modules/typeorm/metadata-args/MetadataArgsStorage.d.ts","../node_modules/typeorm/connection/ConnectionManager.d.ts","../node_modules/typeorm/globals.d.ts","../node_modules/typeorm/container.d.ts","../node_modules/typeorm/common/RelationType.d.ts","../node_modules/typeorm/error/TypeORMError.d.ts","../node_modules/typeorm/error/CannotReflectMethodParameterTypeError.d.ts","../node_modules/typeorm/error/AlreadyHasActiveConnectionError.d.ts","../node_modules/typeorm/persistence/SubjectChangeMap.d.ts","../node_modules/typeorm/persistence/Subject.d.ts","../node_modules/typeorm/error/SubjectWithoutIdentifierError.d.ts","../node_modules/typeorm/error/CannotConnectAlreadyConnectedError.d.ts","../node_modules/typeorm/error/LockNotSupportedOnGivenDriverError.d.ts","../node_modules/typeorm/error/ConnectionIsNotSetError.d.ts","../node_modules/typeorm/error/CannotCreateEntityIdMapError.d.ts","../node_modules/typeorm/error/MetadataAlreadyExistsError.d.ts","../node_modules/typeorm/error/CannotDetermineEntityError.d.ts","../node_modules/typeorm/error/UpdateValuesMissingError.d.ts","../node_modules/typeorm/error/TreeRepositoryNotSupportedError.d.ts","../node_modules/typeorm/error/CustomRepositoryNotFoundError.d.ts","../node_modules/typeorm/error/TransactionNotStartedError.d.ts","../node_modules/typeorm/error/TransactionAlreadyStartedError.d.ts","../node_modules/typeorm/error/EntityNotFoundError.d.ts","../node_modules/typeorm/error/EntityMetadataNotFoundError.d.ts","../node_modules/typeorm/error/MustBeEntityError.d.ts","../node_modules/typeorm/error/OptimisticLockVersionMismatchError.d.ts","../node_modules/typeorm/error/LimitOnUpdateNotSupportedError.d.ts","../node_modules/typeorm/error/PrimaryColumnCannotBeNullableError.d.ts","../node_modules/typeorm/error/CustomRepositoryCannotInheritRepositoryError.d.ts","../node_modules/typeorm/error/QueryRunnerProviderAlreadyReleasedError.d.ts","../node_modules/typeorm/error/CannotAttachTreeChildrenEntityError.d.ts","../node_modules/typeorm/error/CustomRepositoryDoesNotHaveEntityError.d.ts","../node_modules/typeorm/error/MissingDeleteDateColumnError.d.ts","../node_modules/typeorm/error/NoConnectionForRepositoryError.d.ts","../node_modules/typeorm/error/CircularRelationsError.d.ts","../node_modules/typeorm/error/ReturningStatementNotSupportedError.d.ts","../node_modules/typeorm/error/UsingJoinTableIsNotAllowedError.d.ts","../node_modules/typeorm/error/MissingJoinColumnError.d.ts","../node_modules/typeorm/error/MissingPrimaryColumnError.d.ts","../node_modules/typeorm/error/EntityPropertyNotFoundError.d.ts","../node_modules/typeorm/error/MissingDriverError.d.ts","../node_modules/typeorm/error/DriverPackageNotInstalledError.d.ts","../node_modules/typeorm/error/CannotGetEntityManagerNotConnectedError.d.ts","../node_modules/typeorm/error/ConnectionNotFoundError.d.ts","../node_modules/typeorm/error/NoVersionOrUpdateDateColumnError.d.ts","../node_modules/typeorm/error/InsertValuesMissingError.d.ts","../node_modules/typeorm/error/OptimisticLockCanNotBeUsedError.d.ts","../node_modules/typeorm/error/MetadataWithSuchNameAlreadyExistsError.d.ts","../node_modules/typeorm/error/DriverOptionNotSetError.d.ts","../node_modules/typeorm/error/FindRelationsNotFoundError.d.ts","../node_modules/typeorm/error/NamingStrategyNotFoundError.d.ts","../node_modules/typeorm/error/PessimisticLockTransactionRequiredError.d.ts","../node_modules/typeorm/error/RepositoryNotTreeError.d.ts","../node_modules/typeorm/error/DataTypeNotSupportedError.d.ts","../node_modules/typeorm/error/InitializedRelationError.d.ts","../node_modules/typeorm/error/MissingJoinTableError.d.ts","../node_modules/typeorm/error/QueryFailedError.d.ts","../node_modules/typeorm/error/NoNeedToReleaseEntityManagerError.d.ts","../node_modules/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.d.ts","../node_modules/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.d.ts","../node_modules/typeorm/error/SubjectRemovedAndUpdatedError.d.ts","../node_modules/typeorm/error/PersistedEntityNotFoundError.d.ts","../node_modules/typeorm/error/UsingJoinColumnIsNotAllowedError.d.ts","../node_modules/typeorm/error/ColumnTypeUndefinedError.d.ts","../node_modules/typeorm/error/QueryRunnerAlreadyReleasedError.d.ts","../node_modules/typeorm/error/OffsetWithoutLimitNotSupportedError.d.ts","../node_modules/typeorm/error/CannotExecuteNotConnectedError.d.ts","../node_modules/typeorm/error/NoConnectionOptionError.d.ts","../node_modules/typeorm/error/index.d.ts","../node_modules/typeorm/decorator/options/ColumnWithLengthOptions.d.ts","../node_modules/typeorm/decorator/options/ColumnNumericOptions.d.ts","../node_modules/typeorm/decorator/options/ColumnEnumOptions.d.ts","../node_modules/typeorm/decorator/options/ColumnEmbeddedOptions.d.ts","../node_modules/typeorm/decorator/options/ColumnHstoreOptions.d.ts","../node_modules/typeorm/decorator/options/ColumnWithWidthOptions.d.ts","../node_modules/typeorm/decorator/columns/Column.d.ts","../node_modules/typeorm/decorator/columns/CreateDateColumn.d.ts","../node_modules/typeorm/decorator/columns/DeleteDateColumn.d.ts","../node_modules/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts","../node_modules/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts","../node_modules/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts","../node_modules/typeorm/decorator/columns/PrimaryGeneratedColumn.d.ts","../node_modules/typeorm/decorator/columns/PrimaryColumn.d.ts","../node_modules/typeorm/decorator/columns/UpdateDateColumn.d.ts","../node_modules/typeorm/decorator/columns/VersionColumn.d.ts","../node_modules/typeorm/decorator/options/ViewColumnOptions.d.ts","../node_modules/typeorm/decorator/columns/ViewColumn.d.ts","../node_modules/typeorm/decorator/columns/ObjectIdColumn.d.ts","../node_modules/typeorm/decorator/listeners/AfterInsert.d.ts","../node_modules/typeorm/decorator/listeners/AfterLoad.d.ts","../node_modules/typeorm/decorator/listeners/AfterRemove.d.ts","../node_modules/typeorm/decorator/listeners/AfterSoftRemove.d.ts","../node_modules/typeorm/decorator/listeners/AfterRecover.d.ts","../node_modules/typeorm/decorator/listeners/AfterUpdate.d.ts","../node_modules/typeorm/decorator/listeners/BeforeInsert.d.ts","../node_modules/typeorm/decorator/listeners/BeforeRemove.d.ts","../node_modules/typeorm/decorator/listeners/BeforeSoftRemove.d.ts","../node_modules/typeorm/decorator/listeners/BeforeRecover.d.ts","../node_modules/typeorm/decorator/listeners/BeforeUpdate.d.ts","../node_modules/typeorm/decorator/listeners/EventSubscriber.d.ts","../node_modules/typeorm/decorator/options/IndexOptions.d.ts","../node_modules/typeorm/decorator/options/EntityOptions.d.ts","../node_modules/typeorm/decorator/relations/JoinColumn.d.ts","../node_modules/typeorm/decorator/relations/JoinTable.d.ts","../node_modules/typeorm/decorator/relations/ManyToMany.d.ts","../node_modules/typeorm/decorator/relations/ManyToOne.d.ts","../node_modules/typeorm/decorator/relations/OneToMany.d.ts","../node_modules/typeorm/decorator/relations/OneToOne.d.ts","../node_modules/typeorm/decorator/relations/RelationCount.d.ts","../node_modules/typeorm/decorator/relations/RelationId.d.ts","../node_modules/typeorm/decorator/entity/Entity.d.ts","../node_modules/typeorm/decorator/entity/ChildEntity.d.ts","../node_modules/typeorm/decorator/entity/TableInheritance.d.ts","../node_modules/typeorm/decorator/options/ViewEntityOptions.d.ts","../node_modules/typeorm/decorator/entity-view/ViewEntity.d.ts","../node_modules/typeorm/decorator/tree/TreeLevelColumn.d.ts","../node_modules/typeorm/decorator/tree/TreeParent.d.ts","../node_modules/typeorm/decorator/tree/TreeChildren.d.ts","../node_modules/typeorm/decorator/tree/Tree.d.ts","../node_modules/typeorm/decorator/Index.d.ts","../node_modules/typeorm/decorator/options/UniqueOptions.d.ts","../node_modules/typeorm/decorator/Unique.d.ts","../node_modules/typeorm/decorator/Check.d.ts","../node_modules/typeorm/decorator/Exclusion.d.ts","../node_modules/typeorm/decorator/Generated.d.ts","../node_modules/typeorm/decorator/EntityRepository.d.ts","../node_modules/typeorm/find-options/operator/Any.d.ts","../node_modules/typeorm/find-options/operator/ArrayContainedBy.d.ts","../node_modules/typeorm/find-options/operator/ArrayContains.d.ts","../node_modules/typeorm/find-options/operator/ArrayOverlap.d.ts","../node_modules/typeorm/find-options/operator/Between.d.ts","../node_modules/typeorm/find-options/operator/Equal.d.ts","../node_modules/typeorm/find-options/operator/In.d.ts","../node_modules/typeorm/find-options/operator/IsNull.d.ts","../node_modules/typeorm/find-options/operator/LessThan.d.ts","../node_modules/typeorm/find-options/operator/LessThanOrEqual.d.ts","../node_modules/typeorm/find-options/operator/ILike.d.ts","../node_modules/typeorm/find-options/operator/Like.d.ts","../node_modules/typeorm/find-options/operator/MoreThan.d.ts","../node_modules/typeorm/find-options/operator/MoreThanOrEqual.d.ts","../node_modules/typeorm/find-options/operator/Not.d.ts","../node_modules/typeorm/find-options/operator/Raw.d.ts","../node_modules/typeorm/find-options/FindOptionsUtils.d.ts","../node_modules/typeorm/logger/AdvancedConsoleLogger.d.ts","../node_modules/typeorm/logger/SimpleConsoleLogger.d.ts","../node_modules/typeorm/logger/FileLogger.d.ts","../node_modules/typeorm/repository/AbstractRepository.d.ts","../node_modules/typeorm/data-source/index.d.ts","../node_modules/typeorm/repository/BaseEntity.d.ts","../node_modules/typeorm/driver/sqlserver/MssqlParameter.d.ts","../node_modules/typeorm/connection/ConnectionOptionsReader.d.ts","../node_modules/typeorm/connection/ConnectionOptions.d.ts","../node_modules/typeorm/connection/Connection.d.ts","../node_modules/typeorm/migration/MigrationExecutor.d.ts","../node_modules/typeorm/naming-strategy/DefaultNamingStrategy.d.ts","../node_modules/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.d.ts","../node_modules/typeorm/schema-builder/RdbmsSchemaBuilder.d.ts","../node_modules/typeorm/util/InstanceChecker.d.ts","../node_modules/typeorm/repository/FindTreesOptions.d.ts","../node_modules/typeorm/util/TreeRepositoryUtils.d.ts","../node_modules/typeorm/index.d.ts","../node_modules/@nestjs/typeorm/dist/interfaces/entity-class-or-schema.type.d.ts","../node_modules/@nestjs/typeorm/dist/common/typeorm.decorators.d.ts","../node_modules/@nestjs/typeorm/dist/common/typeorm.utils.d.ts","../node_modules/@nestjs/typeorm/dist/common/index.d.ts","../node_modules/@nestjs/typeorm/dist/interfaces/typeorm-options.interface.d.ts","../node_modules/@nestjs/typeorm/dist/interfaces/index.d.ts","../node_modules/@nestjs/typeorm/dist/typeorm.module.d.ts","../node_modules/@nestjs/typeorm/dist/index.d.ts","../node_modules/@nestjs/typeorm/index.d.ts","../node_modules/class-transformer/types/interfaces/decorator-options/expose-options.interface.d.ts","../node_modules/class-transformer/types/interfaces/decorator-options/exclude-options.interface.d.ts","../node_modules/class-transformer/types/interfaces/decorator-options/transform-options.interface.d.ts","../node_modules/class-transformer/types/interfaces/decorator-options/type-discriminator-descriptor.interface.d.ts","../node_modules/class-transformer/types/interfaces/decorator-options/type-options.interface.d.ts","../node_modules/class-transformer/types/interfaces/metadata/exclude-metadata.interface.d.ts","../node_modules/class-transformer/types/interfaces/metadata/expose-metadata.interface.d.ts","../node_modules/class-transformer/types/enums/transformation-type.enum.d.ts","../node_modules/class-transformer/types/enums/index.d.ts","../node_modules/class-transformer/types/interfaces/target-map.interface.d.ts","../node_modules/class-transformer/types/interfaces/class-transformer-options.interface.d.ts","../node_modules/class-transformer/types/interfaces/metadata/transform-fn-params.interface.d.ts","../node_modules/class-transformer/types/interfaces/metadata/transform-metadata.interface.d.ts","../node_modules/class-transformer/types/interfaces/metadata/type-metadata.interface.d.ts","../node_modules/class-transformer/types/interfaces/class-constructor.type.d.ts","../node_modules/class-transformer/types/interfaces/type-help-options.interface.d.ts","../node_modules/class-transformer/types/interfaces/index.d.ts","../node_modules/class-transformer/types/ClassTransformer.d.ts","../node_modules/class-transformer/types/decorators/exclude.decorator.d.ts","../node_modules/class-transformer/types/decorators/expose.decorator.d.ts","../node_modules/class-transformer/types/decorators/transform-instance-to-instance.decorator.d.ts","../node_modules/class-transformer/types/decorators/transform-instance-to-plain.decorator.d.ts","../node_modules/class-transformer/types/decorators/transform-plain-to-instance.decorator.d.ts","../node_modules/class-transformer/types/decorators/transform.decorator.d.ts","../node_modules/class-transformer/types/decorators/type.decorator.d.ts","../node_modules/class-transformer/types/decorators/index.d.ts","../node_modules/class-transformer/types/index.d.ts","../node_modules/class-validator/types/validation/ValidationError.d.ts","../node_modules/class-validator/types/validation/ValidatorOptions.d.ts","../node_modules/class-validator/types/validation-schema/ValidationSchema.d.ts","../node_modules/class-validator/types/container.d.ts","../node_modules/class-validator/types/validation/ValidationArguments.d.ts","../node_modules/class-validator/types/decorator/ValidationOptions.d.ts","../node_modules/class-validator/types/decorator/common/Allow.d.ts","../node_modules/class-validator/types/decorator/common/IsDefined.d.ts","../node_modules/class-validator/types/decorator/common/IsOptional.d.ts","../node_modules/class-validator/types/decorator/common/Validate.d.ts","../node_modules/class-validator/types/validation/ValidatorConstraintInterface.d.ts","../node_modules/class-validator/types/decorator/common/ValidateBy.d.ts","../node_modules/class-validator/types/decorator/common/ValidateIf.d.ts","../node_modules/class-validator/types/decorator/common/ValidateNested.d.ts","../node_modules/class-validator/types/decorator/common/ValidatePromise.d.ts","../node_modules/class-validator/types/decorator/common/IsLatLong.d.ts","../node_modules/class-validator/types/decorator/common/IsLatitude.d.ts","../node_modules/class-validator/types/decorator/common/IsLongitude.d.ts","../node_modules/class-validator/types/decorator/common/Equals.d.ts","../node_modules/class-validator/types/decorator/common/NotEquals.d.ts","../node_modules/class-validator/types/decorator/common/IsEmpty.d.ts","../node_modules/class-validator/types/decorator/common/IsNotEmpty.d.ts","../node_modules/class-validator/types/decorator/common/IsIn.d.ts","../node_modules/class-validator/types/decorator/common/IsNotIn.d.ts","../node_modules/class-validator/types/decorator/number/IsDivisibleBy.d.ts","../node_modules/class-validator/types/decorator/number/IsPositive.d.ts","../node_modules/class-validator/types/decorator/number/IsNegative.d.ts","../node_modules/class-validator/types/decorator/number/Max.d.ts","../node_modules/class-validator/types/decorator/number/Min.d.ts","../node_modules/class-validator/types/decorator/date/MinDate.d.ts","../node_modules/class-validator/types/decorator/date/MaxDate.d.ts","../node_modules/class-validator/types/decorator/string/Contains.d.ts","../node_modules/class-validator/types/decorator/string/NotContains.d.ts","../node_modules/@types/validator/lib/isBoolean.d.ts","../node_modules/@types/validator/lib/isEmail.d.ts","../node_modules/@types/validator/lib/isFQDN.d.ts","../node_modules/@types/validator/lib/isIBAN.d.ts","../node_modules/@types/validator/lib/isISO31661Alpha2.d.ts","../node_modules/@types/validator/lib/isISO4217.d.ts","../node_modules/@types/validator/lib/isURL.d.ts","../node_modules/@types/validator/lib/isTaxID.d.ts","../node_modules/@types/validator/index.d.ts","../node_modules/class-validator/types/decorator/string/IsAlpha.d.ts","../node_modules/class-validator/types/decorator/string/IsAlphanumeric.d.ts","../node_modules/class-validator/types/decorator/string/IsDecimal.d.ts","../node_modules/class-validator/types/decorator/string/IsAscii.d.ts","../node_modules/class-validator/types/decorator/string/IsBase64.d.ts","../node_modules/class-validator/types/decorator/string/IsByteLength.d.ts","../node_modules/class-validator/types/decorator/string/IsCreditCard.d.ts","../node_modules/class-validator/types/decorator/string/IsCurrency.d.ts","../node_modules/class-validator/types/decorator/string/IsEmail.d.ts","../node_modules/class-validator/types/decorator/string/IsFQDN.d.ts","../node_modules/class-validator/types/decorator/string/IsFullWidth.d.ts","../node_modules/class-validator/types/decorator/string/IsHalfWidth.d.ts","../node_modules/class-validator/types/decorator/string/IsVariableWidth.d.ts","../node_modules/class-validator/types/decorator/string/IsHexColor.d.ts","../node_modules/class-validator/types/decorator/string/IsHexadecimal.d.ts","../node_modules/class-validator/types/decorator/string/IsMacAddress.d.ts","../node_modules/class-validator/types/decorator/string/IsIP.d.ts","../node_modules/class-validator/types/decorator/string/IsPort.d.ts","../node_modules/class-validator/types/decorator/string/IsISBN.d.ts","../node_modules/class-validator/types/decorator/string/IsISIN.d.ts","../node_modules/class-validator/types/decorator/string/IsISO8601.d.ts","../node_modules/class-validator/types/decorator/string/IsJSON.d.ts","../node_modules/class-validator/types/decorator/string/IsJWT.d.ts","../node_modules/class-validator/types/decorator/string/IsLowercase.d.ts","../node_modules/class-validator/types/decorator/string/IsMobilePhone.d.ts","../node_modules/class-validator/types/decorator/string/IsISO31661Alpha2.d.ts","../node_modules/class-validator/types/decorator/string/IsISO31661Alpha3.d.ts","../node_modules/class-validator/types/decorator/string/IsMongoId.d.ts","../node_modules/class-validator/types/decorator/string/IsMultibyte.d.ts","../node_modules/class-validator/types/decorator/string/IsSurrogatePair.d.ts","../node_modules/class-validator/types/decorator/string/IsUrl.d.ts","../node_modules/class-validator/types/decorator/string/IsUUID.d.ts","../node_modules/class-validator/types/decorator/string/IsFirebasePushId.d.ts","../node_modules/class-validator/types/decorator/string/IsUppercase.d.ts","../node_modules/class-validator/types/decorator/string/Length.d.ts","../node_modules/class-validator/types/decorator/string/MaxLength.d.ts","../node_modules/class-validator/types/decorator/string/MinLength.d.ts","../node_modules/class-validator/types/decorator/string/Matches.d.ts","../node_modules/libphonenumber-js/types.d.ts","../node_modules/libphonenumber-js/index.d.ts","../node_modules/class-validator/types/decorator/string/IsPhoneNumber.d.ts","../node_modules/class-validator/types/decorator/string/IsMilitaryTime.d.ts","../node_modules/class-validator/types/decorator/string/IsHash.d.ts","../node_modules/class-validator/types/decorator/string/IsISSN.d.ts","../node_modules/class-validator/types/decorator/string/IsDateString.d.ts","../node_modules/class-validator/types/decorator/string/IsBooleanString.d.ts","../node_modules/class-validator/types/decorator/string/IsNumberString.d.ts","../node_modules/class-validator/types/decorator/string/IsBase32.d.ts","../node_modules/class-validator/types/decorator/string/IsBIC.d.ts","../node_modules/class-validator/types/decorator/string/IsBtcAddress.d.ts","../node_modules/class-validator/types/decorator/string/IsDataURI.d.ts","../node_modules/class-validator/types/decorator/string/IsEAN.d.ts","../node_modules/class-validator/types/decorator/string/IsEthereumAddress.d.ts","../node_modules/class-validator/types/decorator/string/IsHSL.d.ts","../node_modules/class-validator/types/decorator/string/IsIBAN.d.ts","../node_modules/class-validator/types/decorator/string/IsIdentityCard.d.ts","../node_modules/class-validator/types/decorator/string/IsISRC.d.ts","../node_modules/class-validator/types/decorator/string/IsLocale.d.ts","../node_modules/class-validator/types/decorator/string/IsMagnetURI.d.ts","../node_modules/class-validator/types/decorator/string/IsMimeType.d.ts","../node_modules/class-validator/types/decorator/string/IsOctal.d.ts","../node_modules/class-validator/types/decorator/string/IsPassportNumber.d.ts","../node_modules/class-validator/types/decorator/string/IsPostalCode.d.ts","../node_modules/class-validator/types/decorator/string/IsRFC3339.d.ts","../node_modules/class-validator/types/decorator/string/IsRgbColor.d.ts","../node_modules/class-validator/types/decorator/string/IsSemVer.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsBoolean.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsDate.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsNumber.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsEnum.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsInt.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsString.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsArray.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsObject.d.ts","../node_modules/class-validator/types/decorator/array/ArrayContains.d.ts","../node_modules/class-validator/types/decorator/array/ArrayNotContains.d.ts","../node_modules/class-validator/types/decorator/array/ArrayNotEmpty.d.ts","../node_modules/class-validator/types/decorator/array/ArrayMinSize.d.ts","../node_modules/class-validator/types/decorator/array/ArrayMaxSize.d.ts","../node_modules/class-validator/types/decorator/array/ArrayUnique.d.ts","../node_modules/class-validator/types/decorator/object/IsNotEmptyObject.d.ts","../node_modules/class-validator/types/decorator/object/IsInstance.d.ts","../node_modules/class-validator/types/decorator/decorators.d.ts","../node_modules/class-validator/types/validation/ValidationTypes.d.ts","../node_modules/class-validator/types/validation/Validator.d.ts","../node_modules/class-validator/types/register-decorator.d.ts","../node_modules/class-validator/types/metadata/ValidationMetadataArgs.d.ts","../node_modules/class-validator/types/metadata/ValidationMetadata.d.ts","../node_modules/class-validator/types/metadata/ConstraintMetadata.d.ts","../node_modules/class-validator/types/metadata/MetadataStorage.d.ts","../node_modules/class-validator/types/index.d.ts","../src/friendship/entities/friendship.entity.ts","../src/users/entities/user.entity.ts","../src/users/dto/create-users.dto.ts","../node_modules/@nestjs/mapped-types/dist/mapped-type.interface.d.ts","../node_modules/@nestjs/mapped-types/dist/intersection-type.helper.d.ts","../node_modules/@nestjs/mapped-types/dist/omit-type.helper.d.ts","../node_modules/@nestjs/mapped-types/dist/partial-type.helper.d.ts","../node_modules/@nestjs/mapped-types/dist/pick-type.helper.d.ts","../node_modules/@nestjs/mapped-types/dist/type-helpers.utils.d.ts","../node_modules/@nestjs/mapped-types/dist/index.d.ts","../node_modules/@nestjs/mapped-types/index.d.ts","../src/users/dto/update-users.dto.ts","../src/common/dto/pagination-query.dto.ts","../src/users/users.service.ts","../src/users/users.controller.ts","../src/users/users.module.ts","../node_modules/@nestjs/config/dist/types/config-object.type.d.ts","../node_modules/@nestjs/config/dist/types/config.type.d.ts","../node_modules/@nestjs/config/dist/types/no-infer.type.d.ts","../node_modules/@nestjs/config/dist/types/path-value.type.d.ts","../node_modules/@nestjs/config/dist/types/index.d.ts","../node_modules/@nestjs/config/dist/interfaces/config-factory.interface.d.ts","../node_modules/dotenv-expand/lib/main.d.ts","../node_modules/@nestjs/config/dist/interfaces/config-module-options.interface.d.ts","../node_modules/@nestjs/config/dist/interfaces/index.d.ts","../node_modules/@nestjs/config/dist/config.module.d.ts","../node_modules/@nestjs/config/dist/config.service.d.ts","../node_modules/@nestjs/config/dist/utils/register-as.util.d.ts","../node_modules/@nestjs/config/dist/utils/get-config-token.util.d.ts","../node_modules/@nestjs/config/dist/utils/index.d.ts","../node_modules/@nestjs/config/dist/index.d.ts","../node_modules/@nestjs/config/index.d.ts","../src/friendship/dto/create-friendship.dto.ts","../src/friendship/dto/update-friendship.dto.ts","../src/friendship/friendship.service.ts","../src/friendship/friendship.controller.ts","../src/friendship/friendships.module.ts","../src/auth/42/authentication.service.ts","../node_modules/@nestjs/passport/dist/abstract.strategy.d.ts","../node_modules/@nestjs/passport/dist/interfaces/auth-module.options.d.ts","../node_modules/@nestjs/passport/dist/interfaces/type.interface.d.ts","../node_modules/@nestjs/passport/dist/interfaces/index.d.ts","../node_modules/@nestjs/passport/dist/auth.guard.d.ts","../node_modules/@nestjs/passport/dist/passport.module.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/mime/Mime.d.ts","../node_modules/@types/mime/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/@types/passport/index.d.ts","../node_modules/@nestjs/passport/dist/passport/passport.serializer.d.ts","../node_modules/@nestjs/passport/dist/passport/passport.strategy.d.ts","../node_modules/@nestjs/passport/dist/index.d.ts","../node_modules/@nestjs/passport/index.d.ts","../src/auth/42/strategy/strategy.ts","../src/auth/42/authentication.module.ts","../src/app.module.ts","../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../node_modules/@nestjs/core/adapters/index.d.ts","../node_modules/@nestjs/core/injector/module-token-factory.d.ts","../node_modules/@nestjs/core/injector/compiler.d.ts","../node_modules/@nestjs/core/injector/modules-container.d.ts","../node_modules/@nestjs/core/injector/container.d.ts","../node_modules/@nestjs/core/injector/module-ref.d.ts","../node_modules/@nestjs/core/injector/module.d.ts","../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../node_modules/@nestjs/core/application-config.d.ts","../node_modules/@nestjs/core/constants.d.ts","../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../node_modules/@nestjs/core/discovery/index.d.ts","../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/index.d.ts","../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../node_modules/@nestjs/core/helpers/index.d.ts","../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../node_modules/@nestjs/core/metadata-scanner.d.ts","../node_modules/@nestjs/core/scanner.d.ts","../node_modules/@nestjs/core/injector/injector.d.ts","../node_modules/@nestjs/core/injector/instance-loader.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader-options.interface.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader.d.ts","../node_modules/@nestjs/core/injector/index.d.ts","../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../node_modules/@nestjs/core/middleware/builder.d.ts","../node_modules/@nestjs/core/middleware/index.d.ts","../node_modules/@nestjs/core/nest-application-context.d.ts","../node_modules/@nestjs/core/nest-application.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../node_modules/@nestjs/core/nest-factory.d.ts","../node_modules/@nestjs/core/repl/repl.d.ts","../node_modules/@nestjs/core/repl/index.d.ts","../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../node_modules/@nestjs/core/router/interfaces/index.d.ts","../node_modules/@nestjs/core/router/request/request-constants.d.ts","../node_modules/@nestjs/core/router/request/index.d.ts","../node_modules/@nestjs/core/router/router-module.d.ts","../node_modules/@nestjs/core/router/index.d.ts","../node_modules/@nestjs/core/services/reflector.service.d.ts","../node_modules/@nestjs/core/services/index.d.ts","../node_modules/@nestjs/core/index.d.ts","../src/main.ts","../src/auth/42/authentication.controller.ts","../src/auth/42/guards/guards.ts","../src/routes/routes.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/cookiejar/index.d.ts","../node_modules/@types/eslint/helpers.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@types/eslint-scope/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/jest-matcher-utils/node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/typebox.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/passport-strategy/index.d.ts","../node_modules/@types/passport-local/index.d.ts","../node_modules/@types/prettier/index.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/buffer/index.d.ts","../node_modules/@types/superagent/index.d.ts","../node_modules/@types/supertest/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"9b087de7268e4efc5f215347a62656663933d63c0b1d7b624913240367b999ea","affectsGlobalScope":true},{"version":"3260e3386d9535b804205bdddb5618a9a27735bd22927f48ad54363abcd23d45","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"3284e33a45d6aa8324691ac5737d08695e35e99b5f69fdc9ef21b3c7e7fd8449","e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","1a25c4d02a013b4690efa24ab48184a2c10b1906a379565ba558b2c3ba679a6d","ba6f9c5491bcf018dbbc813e1dd488beb26f876b825007ba76db485df341a8ee","75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","fa3d0cd03fa17459d9ddd98b120b4bb084da39f0391cbdce480a6ef74be0cc7a","e3fd84e6470b7e0679c4073ee5ce971d324182486dde5a49b67cae29168b51d2","dd8331d0a5190a4735ce6c152e420230188c4966067a756673c36dd7ba72b10e","cfdf36cfc0721c29f58651fc12f0f5a349d29da3a63180afc5b3d77b95653f82",{"version":"d57e7ff5243e0dcd04cf2edf9ad9520af40edd6eba31c14c3f405f0c437fa379","affectsGlobalScope":true},"0f882d4ae58f431454030289154feb0132e1b00ca5c3197c6b749bd098aed73a","7ff7f4632a6e7b6872fb1843f3c0df495b49840eae2a23c6fbc943f863da8c29","d267771149e172ade39e3ef96b4063209d5a7e8291702fe03983aa52f2b3d5f6","a78590b0efcef281236e3234520c348d63be1d4561b63b20e6c3b6fc18b37dfb","4d59c6a10b6c79a0927c79efa89b3c9f71d174ec14ec2792076cfd2330d0cf8e","a496f51933422872de22729b7a0233589325a1a1707cccd05cd914098944a202","75b6663bc569724017997481b6b3774065c204b316cb4f5ad7df3b5162d2dce1","06a38095ad4368314366bc08f7cbc0fe274ef7321ec611005d0bdd9c6565e4d5","4599793db9aed9b84677f0ca1cf7ef3c69bb91cda4fe4329cbab778ca4d80a58","ad0028f96921778931fb8419d8de33b10908314fa99699de1702020f69235da1","ccd2a35321c0786bd3808042dc43b960cac13f2cc660ac37a0087e12bc97d2fc","df524ed01de4f19efb44bded628dbba9f840148be4b6cfe096e29d4b01589de3","2e3981b9cee48174ff85ae15019fd72933f7023a4ed05094740f7e6f7775623c","836ebdc3b9e4c006acc4f405b7e558e56d47830e05c40d991b1e27fe8bc91157","2cc6b617c6120ba64b5778ccd4b74c951adc3a3941bb6b39f47d48701c44af39","eca02b99615a8f1652e21399d832618e38bf166c0747c9247349bc901a2f7741","7f7d6d42e5780e86f5b860a6f95179fae06a368b3af28c1c4230397c47021a59","4740a7d11ab3b381be0f269f1903fb3ff226a2fba55a01756b2997e67cd853f2","863dbc4e77f0353e6f9d6bc0e2b4622d5c07ff6f099ff66cafd7924b2ff4dd3f","bf034a18ed7e2a058f9e48c4c2480a124138fbd3586a80c77736a9ec079d12a8","f88758992a0bf13d095520aacd4381fb456ff121fb9aa184e6eb0eecb26cfadc","c249e9ae33bfcad97deec3c73c9ed2656e112fbdf22deace0b39724be6a5dcf0","d8b45924965c0c4fc0b946c0b6d597aa8d5de9cdf5c727e3d39422d17efec438","d07ea953cfea0c4bd11641912846bd955f4fd26ad2b7b8a279d69c7ab9cb3add","feddabf6ab0eb191e721f0126f3db8688db97c77a1234968bde7a2d70c4ae513","dbbda62ea5f4d1f8b40cc2b7e2e2fae424abbb4715a04a3659cb8b317f7b228b","cde0568b836865a24f4ee5859462004a326dfb76d514e6f56c8e78feedebed58","7f5cb3a03588ed46d52a6c2138315d930cd6ffb5c2134247cd07bc23cbea0b5a","7797f4c91491dcb0f21fa318fd8a1014990d5a72f8a32de2af06eb4d4476a3b5","f39fb20b83c3f9853c13d4ac95533760979d3023c0a5affe2c0a62d91ab3afd8","e4fca08aed8afb32bb8643d7469810bc8681115fe398e56a028df9e73b2d867f","2622639d24718ddfccc33a9a6daf5a2dd94d540ca41e3da00fe365d2c3f25db3","078966067552650f44ca96c68eddbb8539f30ee48a9ab3f24abdcf0a4037b535","2cd6250c43dba360377481c98d48db6ab1532a7527339edb0deffddc28ba66b1","7a9d600990fbe263a23daebed9ba1bbc5761e45679a7e2b2774a42756ef077a2","66bc155515fbea8c31a4efccbbac44de7c037b01f3aa00b76312cf7252725d30","5703288ddbfc4f7845cdbf80c6af17c8cde2a228757479796c2378b1662fcd48","0dfd353f0c16dd5107a7e0713dc52d0a2538293b0a0eac6000a017f9c0a60b56","9cd683a4663ef4d9c6486f1b8a34c73bdbc344d69490931bfe2fbcada12ab35b","42f6a409bad5259ece69df25d2b8ace2ff2ade45fe6386ee45203bdd9329f971","d3b1a8b87a5e77d70056325e137a0e04d984b991546fdd3c1034ff4102d603c4","2eb162efd6dba5972b9f8f85141d900d09da4fba23864f287f98f9890a05e95f","3f878fb5be9ebe8bd0ac5c22515d42b8b72d3745ef7617e73e9b2548ccbdf54b","e9ed562b7599c8c8c01595891480a30f9945a93a46456d22ee67ebf346b7538a","e7bf975a98cecefe2e8902fb7da9314675ecdce553aea722aaec97327668e18b","3d36f93648518338c875d9f77a8eab52905365483dbb3afe43ed68f1b712b67c","4fa54df9184d291bd78b36f5063372042cd995460e906cb14014e40d1442a326","b4e32bd5e3b493e4ea6b5ec69a4c02aa1fdaa78e1df9a863bb07604de8f9d123","f6bd1aa152ca2b5064e06282ee3137842ae6825b6b09aa89a2ff063b976a56f3","bce2390bb3a76f8bf2ba4397c66db5277bf3e698ee614347e5eb79d7fc0942c6","fbdc8d7cc7daf4101bf567512c67fb990d8fe300e0ba7f213171192177f44aa0","298e0da6d858e39fc0c1eebfa4f5c8af487868c6f2e98c3ef800537d402fb5c3","3b6457fb3866562d279377f923cf3758c80ed7bfcc19414b72a24d0a98188e0c","4fb5d7efb3520b92c1b767ce18968057c5e70886d7fb3416c487231df9275af9","df2303a61eb57b2717d17123e82bc0f3fd60f6e4673cb5506192dfe23c9480bf","b104960f4c5f807535ab43282356b2fe29c5d14a02035c623ac2012be3d5f76c","a35ca245eb852b70b20300546443abb1fcbac6e5066e4baaa092af4ea614d9b5","55da140feab55f10a538a9879a97c4be3df4934cbd679665c91a7263a86095e1","1a39e51e3362aec7d4edec9b317ff83916fe0471f86ddf2d3ef3af5952e87d9e","4b3f36b96f129a8e125c91d41a05f711e73b3285f80bceb3a1aecb13c97c4502","852779920fc4220bc42ec6d3c9b6164e23ea9371a788531b48b4005fe0cb4392","9a82e1b959524c1abfeeb024ee1a400234130a341f2b90a313ce4e37833b7dd2","515b97cede17d91c9669cc1c7fb7a8a5f0a5f2d8999f925a5f70b4ebea93723e","08e8e57241f874bdbf69ab2b65cb0ee18b4183d5c9452937da49b934fc679c4b","944af466f063d4bd090ab9d988c620b90a014e919d5f78963f6074a136ea225e","644addd4811636da491c9546654bc005ba8599f23df6d731d91eba86f3137fc2","a9249493114b181814728cbfeb7234738193a4169b654ec4705d48d7a4d25222","aad6f20d6eb01192ae02294361faa6e1f320d72447b56f433db853bbe80b15ca","876fbedec2f494eb6f834ce8636b07d581c657d205d81a3ba894eff0facc6b84","58527aa45f11c9b259a6a9d78b397f35020bfbb104f4d3bb177039b5c18146bd","91b8b61d45b5d22f3458a4ac82e03b464a0926bab795a920fe0eca805ec476eb","2744532f8fb960eb78497ac660db719f503a10c801f87131d26fd9cbef75dcef","6884287c54891ac19cfbe056f3ed29cab1732a00dec69bd3b140ce62c11783c6","abc3487041159734b8611d9d6fd85de6892f11ebe8c2583baedfc1f87c53757c","cb46657d3237f80742d5701ebcced8f6e5cf8938442354387d6c77d7048dfae6","76281a3b799bbd17ec8e6de7d2fa45ccf749049fd53f00857daf0dbc449616b8","661f322e45545a554e4ffc38db6c4068a66e1323baf66acb0d8a9fa28195a669","91d70dce48c2a2bb55f0b851cf1bdba4202f107f1e8fdf45f94ff6be4b8e8f99","ce978e20a6f26f606b535f0d6deb384ae6a73f8d0bd0dfca0925f5317cad1f25","f2d3567210ca4d559d8297d6c4402599c93e3bc7485054192d38db5e132fbc0a","887d8058aeeade45984fdb8696147078bc630d3fea15ab2b7baacde0fe281fb7","ad27aa59d346179ac449bd3077d245f213152879e4027356306ccf1722d61d51","ea546a7ed9eaa71ba78d4d392509dadea4bafed283269dd6c4b09e7d8824e986","4ec0f2a141a9ae7d3557b8efe630ac2021bc3a9ac61238b59293f4cf2f196e82","b2db743c71652e03c52d51445af58d0af3316231faa92b66018b29c7ba975f6c","0863a5876c85fbaffbb8ec8aeda8b5042deb6932616139706d2b82cde9d3f7c7","1294b8ecdd212362323f349dd83b5c94ea77bfee4dad24fc290980a3c8af6ce3","ba9c46725e2a0bd9df59d3a1e801cc60f90db3ef7817131c53945dce2b8c0c56","281d373eeabf80c4851f8de991e6abe4d385c30379d80897bbc3df3dcac99cee","624c5dce95672d9dcca40d9d9d82ef855f5f902292f43aa265cc8fd963c6ce84","8a48d9c6184992d1c3ed5daa55f83d708c37582916926a5555a900608f804b60","605dd288c636cf9b5317fe76dec75d3c7fb855fdcd3ee8cb4fea7d7091ca6fb4","95addea67857d4e568a02e429b15458cec203876b2ea5f5ea18ccfeeb91b8ce0","b5a615b0ad865ffa562980a10bda162ac1744fd363b4edc2cfc664222071cbcf","bbccd721363897950a55ce09529503f25a69522e5c91a22679b66e941e5f8654","d3a1e70795c38d7851b6e4f3b441c5ffdae171d6e2576a2204b7d79059aeea66","d7b8d41887c5fccfe19802c4336d34348b752abf0d98839575699d71deff60be","063fe3004728b8516a4d799ee16f9a71801ba24e0443dd98638cef1bd4353a7c","b8a0236f47d9037efdaf93da602415ae425dababe097fc92f83fd47ce9aaa69f","fab7912fc3ff45fce2f5d5febc9494c4d0a85d6c63fff68f21e4669c32eaacb9","f6c3fcb9d75d8aea778236fd9327ceb935b41865dbf3beac698be77e0ae9018d","b20bc124abd8ee572d0d756713ff987b116cdae908a6fcbc40e80d4b999f56b4","a599f3f450ad62c3fdc0c3fd25cddcc9332ffb44327087947d48914a8da81364","645dff895168aa82350c9aa60aa0b3621b84289fef043be842f45a9c6c0ac6e2","f068ff5b7fb3bdc5380e0c677e21de829bd25cdac63a9b083fdc220fcb225280","09d2fdca6ea6c135897a26976ad3c0db724adaf23ef4e38ad852b1d8efef1ae6","15de5b7739bf7e40213a200853bf78455ee5958af08eda786605a54a7f25ade6","f3acb439e08f0c2c78c712a876dc6c2080302c46916f1d63b7dbe509616ce9ae","37862e711637ebd927907a82cbf0143ea30e95eb165df554926c43936b1d77a9","89e253db2c2cc9a510c521f14dd2b1aae4de2556ee5159ad8d118d3587e3a880","3d0a172cee184a0f4111a7bd7fbb8729af3f54b30c06a2677d85c20ea9c811ab","d6a07e5e8dee6dc63c7ecd9c21756babf097e1537fbc91ddfec17328a063f65d","6fdc88b1287c276b55b7f7c4c7b49587813c763eea9751ce0baf0a7e61cd5d89","6a02443704052768bd021f24783aa104b02ae4444e9b735317bf13c6b857a11e","37987b0fe9800cf25473c882ce07bccdab2763c5681c1a2d16816aead46aa8d1","c84c03c721154068e1a60d83e9e85819bd3ef70b824ac2edc498aa31c06e5781","c23a403716784b53cf6ce9ffff9dcdb959b7cacdf115294a3377d96b6df1e161","c96fb6a0c1e879f95634ab0ff439cbb6fff6227b26bbf0153bef9ed0aabba60d","db936079fe6396aad9bf7ad0479ffc9220cec808a26a745baebb5f9e2ef9dbc7","06bc0b9cc7bf0b92534f1517fe5adde1f23f60cc6cc5c59f8e1c65db48a40067","919a753b0cbb12ccc606c62e2d34884d75a48ba19b1dda497c72621b11dac088","2c27e33ee0bf722988da00abd582cc9b806ce3fd9153a864800a339ad13f3fcf","92d7b3a5aa5dc872e54cbad2a7094b3ea4f72c7901de1d07b4c334ff658297f0","7a52922b38e9686d5bdc6e75774929eec6688d26c1dfe4a03ddec77ede468e87","aa5efca2833d89b55248f1889a6433dab1b1f41768e9a75f8ce35f9bf56c5ec4","0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"4ffef5c4698e94e49dcf150e3270bad2b24a2aeab48b24acbe7c1366edff377d","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","3a0c45fe95e8f0e2c5247d48acf3a522d2ef29f1ab0effb3c59a9c4fdd5edbcd","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","20c468256fd68d3ef1fa53526e76d51d6aa91711e84d72c0343589b99238287e","81290114466b1a05503a1142be27f5b85b033c95eb4291359aaeeb0b8b9bdbfb","8d4c16a26d59e3ce49741a7d4a6e8206b884e226cf308667c7778a0b2c0fee7f","ee3bad055a79f188626b1a7046f04ab151fdd3581e55c51d32face175bd9d06f","d61c7c41eb1960b1285e242fd102c162b65c0522985b839fadda59874308a170",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"1dbccafbca82a60fdfb0fb3c28e2493ff76d06647a512dcf72a086022e8b6f91","d10f4929cd610c26926d6784fc3f9f4120b789c03081b5d65fb2d2670a00fa04","fb0989383c6109f20281b3d31265293daefdd76d0d30551782c1654e93704f48","a4210a84a82b3e7a8cec5b2f3616e46d523f4f10cc1576d8f2fb89d0987b341e",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","22d48bfb37261136423ac687f1fa7bd4dda3083f767416d409a8260cf92bc8fc","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","f142151303f0792b81eff90b554081d2b78b146a83a4bc573228338e70afa420","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","698ab660b477b9c2cd5ccbd99e7e7df8b4a6134c1f5711fa615ed7aab51cb7f7","33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637","a4471d2bdba495b2a6a30b8765d5e0282fa7009d88345a9528f73c37869d3b93",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","c9d70d3d7191a66a81cb554557f8ed1cf736ea8397c44a864fe52689de18865a","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"e3685a8957b4e2af64c3f04a58289ee0858a649dbcd963a2b897fe85858ae18a","3da085d344bf625767c5b1fcada31a5d94ebefc4e36bf18a676ca37460bc4e4e","006855ddea8674d084173a768f88519dc154be94eba5e2120262a33709832b9b","17dd843a266f99ca4b3a1257538bd1cc69dc5c7f2f23c3891f0430615b8c9c1c","5430364886c721a30475253356162b6c27871718094cb3e69e2bcea71a17e533","1218398da7c8dc4add10bdb3aa2856aad54b123d847eaf574d1d694ac269bfb5","189014f3213ee7457dbeea04dca10ca5d9ed2062cd39641aca5f3b4c75de9d99","b637cd92688a6cdf4f8f184ff529dc2bc7f15692828e2c0c66a60e6972f400c7","7061e83d6792897077bcac039fccf7325234004769f591c63a8cf8478bf551bb","7ab905865063322f2bba361d0f2ef93520f64a382bac13b127479860ad99f62e","277a358d61376fce7ac3392402909c96cf6a0a613146549fc0165ccff953e012","50614c808e099a1d4413786f3783d9eeaaa74b267f2c87fcf8a893287e91c301","f4cb6530f248e87cefa74ef623206fec805f6252f885f8e14ef3d1a5872cef2d","38c332caadd8391566552395d592076470a5e7423f70964620eabf05c02907cd","eb17b5bf1fc763a644c21d76572c0e41e351c3f6dfcde649428d5d829f7294d2","cb124162c87b29ff5121e3ee5bb29c782f101e0135d6c2644ab1b31d530a435e","406d6f5d3707c488362fb40d1c1f8a7b0a42b70554b427160185d93e430228f5","2e9776410c5bc290d9432a9215c67398a273e514a79b9e15f32ecddfde8a03be","313ff8df074b81d3e4f088ff3a3a06df3d9b0d0c7f55469ccc2ac887ecb6b867","c718475bca06806cc243e77777641cb67ba68f2c57321a4773ebb47760a3bcf2","96e6bf811343caab5112b68880905c5d20d9257054afac6c18e718a4c549ed27","a2793bc73ba63ca7d259cb0f0b61d0023820170d08a1f9715006c8042d060165","d5011b38165771fdf75a9a06d6d379a1fc7edd7eb695ebdc52319fb6e3c6d81f","88417fb19d339304e9616a38ea513251047c9e300c81f9467fc317df8a582e71","3e8e2d132f726dddbda57819f5391504e585cb3beab6b32203064e7e40618583","6e23627cd3f10418b5b2db102fdcf557b75f2837f266d88afac6b18f333bb1bc","866046dcea88f23d766a65487ee7870c4cf8285a4c75407c80a5c26ed250ef8d","019f4f1cbc781cc15c6173f8be5ef907405722194ab297127b3c3426e5368339","41f4413eac08210dfc1b1cdb5891ad08b05c79f5038bdf8c06e4aedaa85b943d","c79f1c8b51d8475dde8d2973f740f43ca34b1f0a95d93649cd76c1ee20abba19","35f0d2bd2c5c05c0cb19095bf5b7c44365b1c88efe6285370855b90417277a64","8264b129f4c4eb4799703f8e5ee2223a184d1cdbfc782158b1f40a88a4435a1f","527ddda6f8be1279f3294714534c49d6e90f238cea325519882ebf88d7ec5bd2","b23877792e8bd00271d0ec5d401b68e4228540a4316de3d9dfb697b955c161a4","35b2eb1de01633db90d41abe93730b29984856fcc840b4c2801bfd3761a2097b","95f0c9127b879c2fc7e31f8e09ff45bb4aae302e60f4b9ceaf4d9ee6bc51ec66","2a6b4655a6edce9e07c7d826848f72533c9991d40bc36e3f85558ad20e87ce2d","6e3d29fdc96ebbb2ac672d2dae710c689c1ea0d0e9469e0847616f3c38fd085f","d505055b8fadd42da235c85947911d8d198ad70c5f5775991e7821d4f89c90f5","8b5a5852099dca7d7e7a7cef6d681dc1586aafacdb963ca180fe5cabbfa3a24b","0d1aa3341d1ad2064adada71c5d01a2f572e4aac09410e5616d90894105a0eb9","52494ca5a884da3bf11b8165ab31429715f0970d9c6383240c5666f4bd713e01","162fafa2291749df2ab4516854aa781fcee1d9fca2ecd85fb48ae794c0700ce2","b4b9b51ee6f6309cda2e539245235a8caeca2b1d6bf12b5e5c162d17333c450f","d2ffe8356f060b88c1c5cf1fa874a4b779fb87fd1977084876e8be9eab6bf485","c76053984b39150d00ade365b096a8bc21a4a7f2ee9e0a926711b00f8e7bf701","956b510767e3d6f362ea5800510635197723737af5d19ae07ee987ea4a90bfa5","cd1a8ff61f5063d7e6e2094e25d35c90b499961b63911f2f4ae0ff5555c2b4d7","1cf09b5945779e9bc75c4dcd805fb149c28fc90da3335186ef620647a3c540e1","9cdc0b9a313090ec45b34ea1eb02fbace433f509e753634b043e9b83038261e6","c93474cff0088351a65d3cad24037874a26a5371a48528563e56efe31cb3d8bb","b4580df8ea7f62d7b06588001952bf69426e6b03cf3d2569f5f608e45f29ba08","de27f7bb9be9d8a2b4557ec6503b8a315f74d598ce9a0ab81b5ed5610e1a8e81","fe3c378dcefa7ed8b21bd6822f5d7838b1119836da75ae1e1fb485d27b8ffb62","7365bf3333d4277b6fe374ed055624e5ec080dbb919e2d78f1cb75a3f1a4b4f6","a5fbf3bc5c16ab5c84465ba7a043a4bee4c2b20bd3633d50d80118a3844edbaf","0923e4ac8c894ad507bd2daee0df66b699de88467201381ece011ba5a080e1ff","e4f6626f827ea509255647e1b6db82145a2eb1a6b46202655e7d9bb19145c33b","26e23972c40f378f0301d8d7025ea895557c2865a1a31c8ea9c3fff0dbc27075","bfddbff94132b423ad1d71bdbefb1d388c21a74ac1a8742df9324e5bf6109058","795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","6e87c0c1cf06fe7dd6e545d72edefd61d86b4f13d2f9d34140e8168af94a7b7d","cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","b8d9df5c49858df86ffa6c497f1840528963c14ca0dea7684e813b008fe797b3","340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","b1f8c85b27619ccfae9064e433b3b32a11d93d54de5a1afdaeca23c8b30e38a5","0ed6417b905cddb85f98281cb3b5b137d393955521993d9ce069d5e2d6b26ee8","f9ceab53f0d273ccaa68ef125974305dc26fe856af9a5be401ca72d0f78659d4","99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","8e1453c4f07194ab558fa0648cc30356c7536b134a8d7516edf86fd93706c222","eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","ebf6ea6f412af15674333149f7f6561c0de9e36a4d4b350daccf6c5acbbf9fa3","1d6cc6dc76a777be3856c8892addb58d60b8957730951f9ab8b721e4f7fdf7e9","7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","1f9cc8013b709369d82a9f19813cd09cd478481553a0e8262b3b7f28ab52b0b2","a314a39426700ba2b5a76c01bab321bbe79cfef898dae996e930b017fc2b0af9","7f2c10fc5de794bf7ddad2ff13b46e2b7f89ced296c1c372c5fdb94fc759d20d","6ea6e80bf94a93e4841d57878bba521822ca5e2ec7cbb626196a8efc2766eb79","fc4439e09b1562f72a4dcaa193b1ff070e0217ac94d240282871b0642953f049","8a10bdd9317aa91b37ee4b6dbd40529d0cd16353f04cf7c27b29c5604a28e8c3","fdaf3475e11582e137bd84fa19f6bdbf23623f79cecc48a4037e8fa5756ba340","5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","6b8861483f8d90261908256836f1b8951d1f4ac9a2a965e920fb18603c8d1d0a","72afd0094250e7f765576466170a299d0959a4799dbf28eb56ba70ca4772a8b4","44ec212fbf43580505de3d6054376ced252c534ced872c53698047387213efb9","4880c2a2caa941aff7f91f51948ebfb10f15283ff0b163f8ea2a74499add61aa","19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","b1048a866abac5d678376310d28fd258fd4d663942ac915a5fa90e585cf598f8","c9c6eed8faed23fc697b79d421ac443594a3458ae2a60150083ee1e860171971","9cc2a5c3e3c4be782a2300d356b94286764166acf2a6eedc83c6f7a53c0397f7","9ddf8e9069327faa75d20135cab675779844f66590249769c3d35dd2a38c2ba9","d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","69196fa55fab9cd52c4eecba6051902bd5adff63ecf65e0546cb484b5a279fb1","35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","2d3e2fc347ca7d1241058a82d68c2dd457c96ff024cdad3c380cde3fd072cc4f","b75aa590b103f8491e1c943f9bc4989df55323d7e68fba393d3de11f4aae6bb8","4894a2c13e65af4fea49a2013e9123fe767a26ae51adb156e1a48dffba1e82f7","fc2a131847515b3dff2f0e835633d9a00a9d03ed59e690e27eec85b7b0522f92","90433c678bc26751eb7a5d54a2bb0a14be6f5717f69abb5f7a04afc75dce15a4","55ae9554811525f24818e19bdc8779fa99df434be7c03e5fc47fa441315f0226","7210df9e28cc71105d8938508a8bf99e7bf7df1f18548d774d7c2accbfb3332e","b842238362d1d1879242576ea63d436daa335613559ef0aff586825638d2d47a","e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","e6b74c07c5a4e65b27f5a419467e021f61d45255d625bacffe502bd226ffc41d","e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","3ce6884df19ea1f29b33f1aa8529eb2b061ce71ed50828e4fd3b065f1d2e93ec","cd0eeda77ab149135d817ac1e1cd1e88f73bf37fe5a652b5c14e124e676201cf","cbc15ecf15b73c132087c185178ba51b7a786ff4a51b6f52a50b01aeb3d48353","8ca60a0840c741e66d4421defe62d44226167a4750fcfa080f760a8f9487fd1d","6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","c18f4f72a68275b7602e5968b862cb9b7b76ea4a1ac1b3e622f99e0b672569e8","0fdb1ed509382bd388896d3770655b0cda8c80c36f8c54b3899992f7a3a8665c","d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","f55fc3e536ab193aaabb9b6ded5f93181f81294ee65fe3199c9f4415f0f1e53c","ec8053ec564993a885ba2e2c31408369270a190a332a29fac7a825bb7e60b37c","542ecc66e4fcc33f46695ae22b1d14c075054a78c019915d556636be642465af","476b5c25e85b94e15d761bb9503f55fb11e81167df451f187f5080fca825273b","72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","52ff5e1ea35c54428b46c75fd14f87b7a7158a8f4a1ecfc4a9b996a03185c738","605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","0d276d377a0bf0f35e8d7a5b871922ebfa6aff1757d1bbe27a7982b15ce78516","9cbb45413acfdf0cc384d884de88c3f951319004450c88a2bcdad62a11bd21d9","d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","ced87f58b05e2b07e314754f0a7ab17e2df9c37ee2d429948024b2c6418d6c9f","3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","3ac0b94ba8f884f63d38450ce9e29ecd59ff00805ffdd609193d7532b8605459","a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","2828dabf17a6507d39ebcc58fef847e111dcf2d51b8e4ff0d32732c72be032b3","c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","473bf3574a48185f71b70fe839fb1a340a176d80ea7f50dee489c2dc8e81613f","2b14b50de7e32a9882511d1b06be4eb036303bc72ce4a10f93a224382731500d","eeb24fa259f000f6b51a1fe89123f55de081eb2a0ef8d8f847afd67af49cfb68","91d8f3c1c3ae5efb8564ec7cb1f8ac8bf5714eb94078fb50a761ab811963e324","e21bb2cfbcdd8ce7eebb72422f3660806724f2b16cd6ce126d527511abb3a379","c04146836a55ea071b435298335e47f569db0e4d3ae420e35c83e448f944192f","31f71fe23daabea143fc8bd21dae0d5908227180fcda38ad3674df70351f9761","68b39aecfe15b3b5b08c7de7c531e1d4c0d06095019ecd9357e67d27e4f681c0","4e1579c45e1a102078b0d24d7d05301657cf7cb2e77e2ade0c05d74e7922188b","0cb819e67e1b9dd575f53cce1a1f7267d22772b37ca60cd2516f24533b04e437","8d907f5e50623adc4e85632f1d233635dadde838208273310a11cbabb653b497","c802e72abaf33b77a58b9581d2f8e611a5fb0c94fdc4ea101ee59a78dd6ca746","8e64d7568722e6f6674e399c9e785ff23be6f970675da012f1c6f9b118b82a16","540e0eda4a2a78372dfd06a35bddca942f7ef6ca111d50be5a03836808270b6d","caafdf3ef4ee8163d9d4dcfe6bcb68a23b6c639480139407f682e13cedb473b6","ab5a144caffaf363fdb9a4ce41b1d70fc9e9efcf666f94ce463d4b239fd108c0","f171acb46af0a675915a5f5b73905d49a7255eecbc7b934878886af243d6783f","fbe89dae6da8f8e1d2c8e88014db73db978099027af2bc57883034af40e5b04a","33a9f0b6918da8adb508a6a052bf19c35d1eab2f77feed5cd1ee05201f498dd8","e80b39c0514911ee7b9130f12f9a48e7fde7e5740b7f2eea329299bd8f4c8a19","dd14d9057877b9a03fbac9e927910de0f44d2d9325e85057e6573f99560e18a1","cd57825cdf7b92345ebdd7b6f6a906731c3be41a86215c68bd83bd730ad2ff55","34916ef889a5d6dff6f613b8884e125ecc59883357126d7f69bdeb793d66fc1d","e66be854335b1fa96aa810524a94d14f324617c2d5f5437933044b0d76fe897f","42cf47eccccdd04432b96fa186c0705b89bff6689e3222c82d444b77ba458b11","641acdfefef7b22bc327a25c3923f93dbeb47ad8d74186f020bcf490978041ca","305da33cf8c29dbc59b8dd392d1c95e478bead6c18842349654a9cdb63f0b59a","3c11addb000e273a744992873f30b1a25eab9f0248f3ea6dadd1716a4ac37228","f5e0f3e2a52ac4c095380a0ec5ef2991a23773b91f42a3f97f32f2b50100713b","b9c89b4a2435c171e0a9a56668f510a376cb7991eaecef08b619e6d484841735","b85baa660305c65d45f97f5b227b1505a8023955f1bf27da178232e7be99cc12","d5dd266b6f5c9c24f6b4001e172615626a51e350b3267b4af3970e4fb2c57fab","89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","ac10457b51ee4a3173b7165c87c795eadd094e024f1d9f0b6f0c131126e3d903","b2f2311d7085a1feec3f6a85d7cc8bdaf1d976de1874c1f92940ad8ce6a34d39","954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","4ee1e0fea72cd6a832c65af93b62fbf39b009e3711384bb371b48c9abba66781","d35fb65da678a4971822249d657f564ff6bdb6618428642235c4858ebafb2379","b27a613e49e00740db23e2e267b8e44e51ee85a448e787b7fa7c7a7be7316104","4d54136f3080a92f0b031115719321fa25bd855582c30f7f6b6e78969ffe7ec5","6c7554f14f08d3264e220f6ac82cf00e3b6a3bd15ec676bd97bf0e06da79e18d","a2506732a96c864f9336a4fc0403f7f4f3831cfe1db4a40ddf95866dbe2d28ef","8aa451aa2c6e762f359e6fae74e2903f6e3304b1a5ae19c1da548128ddf25add","2e756f5c2e33e9b28aebe174d147a19b46f2364027050acb8c8c2f83e005b2ec","434ea45c930ac3accf5951ac80af2da02a3e0945d33f1e59dbd3a50498cb519b","dc5f64a739746e51c220dceef9b4de820a1daa2dea3254d63bba9988ddcb500b","ab555ebf13e4f021233b5dbd6876eb2a4514aa651693ba9fa38d1e7e7df3b841","6b3233127e08357fda5142130d43a222ed0dac32861ac6c72f8288c0c79cf749","0d4dab75055c9279cb1dcb693cf8568bd724e4f653fd95a3a82ad2e267c4dda6","5b3a3cb1fddc72107030fb0e13f015deff38eb738e50f3db4dfa5eaa2adeabc2","df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","32f19b665839b1382b21afc41917cda47a56e744cd3df9986b13a72746d1c522","405fa7000efd4f0317eb31fa76ed40bad16be48ef2efc88b53bbe439fae74aaa","3e5a089877b3647b42c6f8d8284ff26e57fd3d94f1b1736080079796b994a89e","fde8122ba963e8f7ef9da2a35029632dc8637e9740c9d8cc9745d94ca42e6762","5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","a33c72cfb6c71ffe8074a297ebd448d8a3b504895fc7b64c13d3aaee48b2a02c","9f96b9fd0362a7bfe6a3aa70baa883c47ae167469c904782c99ccc942f62f0dc","5df9a68835c1e020625127d8c951c90808d319c811fc3a780d24f64053192ea4","71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","67f7637f370ee8c18fe060c901e071db2c4368de90a5c58cf1f959d12b0c2f7e",{"version":"e1ff31050a58b42b49a749d4ae725e2ad20c5e59a0d524cc0f6e85468065dd8d","signature":"653711fba8904aa27fd8911b63cf526e7b334e13a292da4cefdbbe179ac3f3f2"},{"version":"260f889b9e2b69f77be1155348eb345166aec664b3efff6720053c6844a41f28","signature":"ef022c91ea9e75ab4082f2e881f9c4db7b346be2da706e876b253bebce5e6140"},"266f841bfbb4358874546e9b55f87c99f0b88e28c42544be9cdf7676a9bbdc9a","905fd426fbc5b7ed3d7f7caa57e1bb66f515f54c7a7e52e79bfdc5599fd62025","c3218428a1422d031abb242c791f76882a959391d676697c52c58feb123cc739","8744deeec972d07732ef9260eff40135ef860660f5613440a0e2060f9263c39e","78f7fad319e4ac305ffe8e03027423279b53a8af4db305096aa75d446b1ec7af","f855d47e6066386d0c85b891c9ee4870b34b43d55dcb3563e59e60c0759be6e4","42f44c5a2957b5ebddf155f15c111f281c3446e55bddd6a6cb9505d7a683ee58","b19fc2f23b90bdec3fd4c82e4925531bbcb14faf01b5b193177c400589cc3e38","461b9c8ab90a70f0fe45eace1c7f21ea6f71df10d8c8b97ecde58af9be90a978","3d9d985d41e536fcf79fc95082925c2f1ae5ade75814ad2bd70c0944747f7ac4","6487db18e561de4119f4aab0bbcc6b31aba3f3e5cfe78cef5af018acbe40ef13","b0e6f1b1569779cf567317c2265d67460d1d3b4de4e79126533109d87dc16d50","18cb8be1326ffa4158abd8d84c9b0a189c0f52201f12f7af2d2af830c077f2bf","b08fc2b6ccd4d3db42af01b3c6390fc1e30dc1d95496d9a8ee5f9319c2e4883f","4c608b30e56a915fa9ae7392127d2c2dc1c6840eb5b031f4c52f1011403ecc79","80c538ee6a62249e77ba3de07efb23d4a7ca8946499c065261bf5079f1cd3cf0","ad4277862bdcbe1cf5c1e0d43b39770e1ccc033da92f5b9ff75ca8c3a03a569b","46a86c47400a564df04a1604fcac41cb599ebbada392527a1462c9dfe4713d78","f342dcb96ad26855757929a9f6632704b7013f65786573d4fdcd4da09f475923","f10f3eaf960d85799ad9e65d8a1d0ac75c07a04991fb527ea17454eb4601d129","f3bb275073b5db8931c042d347fdce888775436a4774836221af57fdccec32ff","03cb8cb2f8ef002a5cac9b8c9a0c02e5fd09de128b9769c5b920a6cbfc080087","3e5ebc3a6a938a03a361f4cdb9a26c9f5a1bac82b46273e11d5d37cd8eccc918","a0a7800e71c504c21f3051a29f0f6f948f0b8296c9ebffeb67033822aabf92e0","6a219f12b3e853398d51192736707e320699a355052687bad4729784649ff519","4294a84634c56529e67301a3258448019e41c101de6b9646ea41c0ecdc70df92","be632f03039023eca4074ace79a71d48475f9bc4f07a4362bfe104d1fe1fa095","27f24ba43083d406b372e9eff72dbc378afa0503dac1c1dd32499cc92fc9cb22","12594611a054ca7fe69962f690a4e79922d563b4b434716eb855d63a9d11a78f","1440eca2d8bc47ebdbc5a901b369de1b7b39c3297e5b4ac9631899f49ea9740b","fc9897fbada879bda954603ea204c6e5df913262a90ad848b5efaab182b58033","93443b2da120bea58eb48bd7da86559d4cf868dc2d581eebf9b48b51ba1e8894","092b55cc1f0591a55edbd4d7cb84b905dbc82ba5ab0c830004be50b82ea2149a","c2956026078814be6dc01515213aeb1eb816e81715085952bbc97b7c81fe3f6d","ac3a69c529ab256532825b08902aec65d0d88c66963e39ae19a3d214953aedc5","fe29108f3ddf7030c3d573c5226ebe03213170b3beca5200ca7cb33755184017","04d5bfb0a0eecd66c0b3f522477bf69065a9703be8300fbea5566a0fc4a97b9d","d5e3e13faca961679bed01d80bc38b3336e7de598ebf9b03ec7d31081af735ad","de05a488fb501de32c1ec0af2a6ddfe0fdef46935b9f4ffb3922d355b15da674","9f00f2bc49f0c10275a52cb4f9e2991860d8b7b0922bfab6eafe14178377aa72","1cf086abc7abb48f994d986b3cc6bdf70c343a5661315f6bb982378b21b55435","7cd2a28853ccfdcfff5e37a401cd54a3eacea580c977f137563ec012ca977028","c6688fd4c2a8a24c9b80da3660a7a06b93ed37d12d84f3ba4aa071ffc125e75f","3c725b4c73af44a1eedda6cbbea47d8fdc71d464e13633750aebe0af76bc2469","d8b8f783622d25039d66c910e13dc683914f384dcff6a5e959c41ee2be6085bc","30f116226d0e53c6cbbdbc967479d5c8036935f771b2af51987c2e8d4cc7fc6a","96d0b30941869a9762d553f8a7ced3dc9f66fb6027e4b7808ef758864a844c6a","0a394432809e8d612d8bf21ed34524906b158fd284d2c616461ee57d88376ec1","eae8c7cbcb175b997ce8e76cd6e770eca5dba07228f6cb4a44e1b0a11eb87685","b3ded8e50b3cdf548d7c8d3b3b5b2105932b04a2f08b392564f4bc499407e4e5","4ed2d8fb4c598719985b8fbef65f7de9c3f5ae6a233fc0fe20bd00193c490908","512a079a1a3de2492c80aa599e173b2ea8cc6afb2800e3e99f14330b34155fe1","a438d636201117d2dfaccbecbe3ae212347dc57f549afeda459ec8dc0f508e27","8e3842ba15690ab4b340893a4552a8c3670b8f347fbb835afe14be98891eef10","c20fe75426bf9281b4b5ac93243ca7d93c55d9e9f5146b755028a2136302bef7","b76ff8ee30b04f14b888058638b1327800df8cf326b0ff1cb4284cb8f39e6e42","a49e3af85d547004bcd8535e19b328cd39f7164abcb4e10e52763e167740abbb","9b1f38160faedf5b9fa8b547c095c9f657c64f0704d8cc9b0691627cee7aee90","abcb5db28886eec7437cb341a42fec07580fb1fbc927d1bd4f0f22b558a7aa9a","4beea7fcc7712d7eb49d4981179562b82f5b684d87e18c32bee8d255f69f4582","9d2e963a1608ebeea2728bea165742680cab4dea64542b7382a70644f82da649","9d1d33309b69e7a14fcaff4c9e948071a3de86492d6a45ab74a6b5106d093fee","dcd467dc444953a537502d9e140d4f2dc13010664d4216cc8e6977b3c5c3efa3","7beb07ab8013f30190843b263131b359e2a379c5c7ff3a364093ca8c093e888a","e1e94e41f47a4496566a9f40e815687a2eca1e7b7910b67704813cf61248b869","557ba6713b2a6fefd943399d5fb6c64e315dc461e9e05eaa6300fdbeeda5d0a1","79234a44f019c436d072867fbd81401c5cb978b749eeac2541fc97185dbed4bf","948ec1e9074e490efbdf11e27eae725994c54a714a64ae81699ee112b293c459","1a014a8365354f37ea245349a4361d3b46589be7921fe7f1dbf408cc0f084bab","14432323be617a60f1a59b9b5fba6e17fb3567b4797956ca72d31cf81e7c609d","0f864e4e7f9d46c2b3390c00a6b0c482cd49bd620680645c86260954f10130d1","efee7c7b369dcf46f5bae916b2e42bb7a5b8ccff86244ed22ca7061f740c853b","0682933253acfbb335f3a35237f64333554cf22f162ea33ffc8abf5c41fe25b6","d6db974317fd9ff66a923555464850dcf87976054a7adacf09d53323f64686d1","e8eda00c336e56a738808b630c7f6a21c62e27852dd9479e62d6832ba6cdfe3d","420e5c4a985fe8cc85cab454cd63ee795bcc31946dbd5ef2a62f35b4ecfca822","43d0992dbb69eeda881e711657320e1c8594323f6c2a6d1e6589b7cd059db299","0a23b9a5fb15b5884b7ee4da8d33f355cf1fec35dc1fbf1c46cd8d23bc0e937b","a9417a980a4300048d179d0295e5b7dd76e4db7b566344779ee576cbd084b3c4","b96760c030c41fa078b35ea05fc3e7e4d2a81710a8329271d42b6abc110d5dbe","79e547f62ab32021b1cacf1e874fa3d0696468f5ac2a76783b90392a4d900cc7","1154ed167b954ffb24a95ec3b11b1519a597024e7fda1df63c144962bc523aaf","174a3381f98fc78c451528cb1aa1baaa37a51852ec6fa90d42efd876301537c1","c175dc4e81528d24cfd7b3830dd6e3f4bbba756f0eafad12b055bc7c66ece4ac","1a17bcbc124a098987f7b1adbbcd412f8372ecb37e352b1c50165dac439eee5e","0ef49170735d9e5902f55b72465accadd0db93cae52544e3c469cbc8fbdbf654","f68a30e88dfa7d12d8dd4609bc9d5226a31d260bf3526de5554feed3f0bf0cb6","1fffef141820a0556f60aa6050eccb17dbcdc29ecd8a17ee4366573fd9c96ce3","d2598c755c11170e3b5f85cd0c237033e783fd4896070c06c35b2246879612b8","8d2044a28963c6c85a2cf4e334eb49bb6f3dd0c0dfe316233148a9be74510a0e","4c1f2da4e18122d57a16e4c6ea4b6fe60ea4f65b14e77cb20339f9158b27ca12","54a4f21be5428d7bff9240efb4e8cae3cb771cad37f46911978e013ff7289238","2411942fcfd1c06aa6a24a12e12819366c5cf0556600c73a3f02f10d5f11d5f1","cc4483c79688bd3f69c11cb3299a07d5dcf87646c35b869c77cde553c42893cf","faf76eeb5dd5d4d1e37c6eb875d114fa97297c2b50b10e25066fed09e325a77a","b741703daf465b44177ef31cc637bde5cd5345e6c048d5807108e6e868182b01","bbca0eb1a05fd2e38f4ffc686ba36ffece50c11ba13420cc662a73433c94bf74","d8acc6f92c85e784acbbc72036156a4c1168a18cba5390c7d363040479c39396","abf8ff4b01b0b2744d00314df2b7dad119edc90782542ebddd6c180d7cdaa882","5eb09226bfa1928721a438e37c004647fc19d8d1f4817bddcc350e57fb32935f","5994ed389d7fc28c03dad647ecb62e5349160bde443b0c7a54e0e10d6368bcbd","e1ff7df643e1aa1dbf1863113a913358844ed66f1af452e774834b0008e578b2","c5114285d0283d05e09cd959e605a4f76e5816c2fbe712241993fd66496083e5","2752e949c871f2cbd146efa21ebc34e4693c0ac8020401f90a45d4e150682181","c349cea980e28566998972522156daac849af8a9e4a9d59074845e319b975f5d","0370682454d1d243b75a7c7031bc8589531a472e927b67854c1b53b55ee496ea","cf6b4dbb5a1ac9ece24761c3a08682029851b292b67113a93b5e2bfd2e64e49d","1e4052b30bfb40b37a9600ede826d619ffa5573f5aba117d93fd9be8464b4366","f8d6929424cb89a1762f64c599c7b04f6d081ffdf292f41c872aaa4232d053bf","d1b5663356da50b06bf7a8c547dd30161d6435f8061678437c06efe2d1c3f66c","ef19d5fe42541f8b529bccd10f488d12caefa3b57a0deb1ed6143219cba716b4","84b5e6269d7cf53008a479eeb533ef09d025eafb4febe3729301b8d4daf37ff2","04196b5d9edd60b9648daa329c3355d7c95f33b7e520e7835eb21002174a8b8c","9f11466e95596aa782a117881a9a39367bf03cc9c220e7993ef494b91de367a7","e25ed7c94d5e9ce4609631f10ca935a57bf9d717a90e0e3cf7bebfcce63857e4","c8eeffebe6c2c6800f73aa59d1436d4dadbad7f3ddda02a831ffa66114c3122d","08622c670eede318814c2e8641fc2e28bbc814c7ca80ad9446317ca129a81938","4283d88023e6e9645626475e392565464eae99068f17e324cfc40a27d10fe94f","7173502081d153bd441c3c6e053984bf390961fc248e5f7d4b41ae7747839359","a4c246df2480db5313112879a9c538cabeff36b9129ca6137437caef5f92af3f","1bb406234b0cef01286fb25803c6fe5c79eb5a9a52218c93d8e2f34086b932f4","956fbf891730710de96ef68c2d08a029c9d2bfa88ec81078099a38c5c9cfa37f","833f0c05b6f98feea4028eda2de08ea075a5094c01805399a6d93657dbab1ccf","371ab2e2daed8d299bfe0c5fbf1e5a588235854c5f705704540f61e3127cdbb4","ab159dda8873292919fb0d498cafd4c922c2969928eced2b834062b4ffc2d7c7","360c7f3c4d4e3a39576da1969a11081097fdffe388bf6d2d62a13ae77f0b0942","3e855437e99a09e54d2813e8e0ddcc78caf14dc9709c35ac93cdc35f2b581abd","5d6a095deeceaeff22c90fc3fdc773034fa6db61384f7b0cd115fd3e142e430c","32f9169fb6cad29917b3f1670550df48ba30dee34dcb0bffaed13947b2e0d2d2","8dbf2e0d9d0ba5141b59a5a47483e27743944f28d25a34512fddad8045fa6b11","75b57ff865193c2edb98c06343a5a309c63a45048f0d01835429ace09faa5b9f","59c2cbf84c22fae87f4f506f36a7258a72b931b602115067dfd6008ee526f8c0","1e09cd1bc6b6baa0733e1e799c4533105ea79cbb109937c71e8c870e14693216","ba25681012e5117866a2456dd3557e24aa5a946ed641126aa4469880db526883","2b1e058a8c3944890c7ce7c712ecfd0f2645420ee67537ac031d7afe6feda6e0","175dbcd1f226eebd93fd9628e9180fb537bb1171489b33db7b388ef0f4e73b37","69ec6331ee3a7cd6bade5d5f683f1705c1041ff77432aa18c50d2097e61f93db","06f34a0f2151b619314fc8a54e4352a40fd5606bda50623c326c3be365cc1ef9","7ef2a14da62d77cb343dc94f7b0dd394030f779a8009c4d0bb7ea829f26973b4","bac6ed30fccf995d09aa07347cf226c19468897e83fc462bdd10540ba015ddca","6c3d3586d8fff56a9763c47133b4a9230480534471b38c7a2f688eac5d819164","1b91b4d73641b4434ca2603b42e20f6a579cc5d2e29dd09676721cd64e9fd6a3","cbd5bddc5bb478cb452abc0eb6468376aaca693efa65f8627ee35821d631eddd","70a3659d557bb683091f9d318762a330a3acb3954f5e89e5134d24c9272192f1","d9fe2c804f7db2f19e4323601278b748dc2984798f265c37cd37bb84e6c88ab8","3525647a73ae2124fa8f353f0a078b44ff1ee6f82958c2bb507de61575f12fff","d7238315cbd18ebeed93f41ad756a0ed9759824b9b158c3d7a1e0b71682d8966","eeba7376ce9721610d3282a4159f3c60154b7b3877fb251f7b3211b085cfdc18","54b0cc65b2e86cc59adf157b32b4fde2143ac2ed733f91a26f06c90d93ed9fe6","788c870cac6b39980a5cc41bf610b1873952ecdd339b781f0687d42682ffc5dc","d51a2e050c8a131b13ec9330a0869e5ac75b9ac4ebde52d5f474e819510b5263","3544b854dccadff219b992b2e5dadfbd7a8e0b9815d6d56006775a17e6500568","6c034655fa83236bd779cacfc1d5b469d6e2150a1993e66ecca92376a8b2c6a7","4d90d2c0e2da72b122cbd8578bf5324a9a98cf1bd370804261eeb2447ddc753f","658cf468a05b2b591fcd5455a76d9927face59ac4a21b4965982b3c234f5d289","107289b58a6017f681fc245443183ce9f5abee99bc4574782854613143d2f689","18006f71012652a98486900031259844ab599473acd3ea89052d9276f27e7c0f","4fed67df4d254bc1196516fd0858e2be233d13a96b8cda58b1e9c9aabf2b74a4","480c58b4780afc8ae54bc51e488b99dac649e79ea172ee5e40a0b860db8af8aa","a905f2f6785e3971bd97c42191394209d97f2aefb11841f7353dd9789821fa8c","e099c5ebddf80ae7285d380c7dd3b5d49c1347346ced51ae121b846833a8d102","f737b3fc4b3a8e22d773f346ce67ac7ccb257c683269ff66d94e81d0a817c972","2f13a677ab7cf82953a8f156d43286d76e7d48f56132f7a8b3a72f908b99fac7","a096ec0badb5f63acd58ab838159b70e5e5e6351cbfa91cc4272bb81325539b8","244511898fec5159e9e5d00880e33745a947a09cb9007922dbecc60e007cda6c","90d202ace592f7b51b131a5890ec93e4df774c8677a485391c280cef0ea53f48","b34e1861949a545916696ef40f4a7fe71793661e72dd4db5e04cacc60ef23f7a","c6b3ef690156e63364dc2132fb98b9cbb2c86eff764dabe59e48b8be7794eeaa","a3ee2eb87d12e95e37defeffbe209e0901190a82f234cafd67de3d2e2a08eb4a","5c60d93010bd9b998fa8ba50e1f9914458643b3756edbdc5fa8ff53d2e6762db","69dd38e25b0a8ecd40638fadcb47935834a02b2b631bc4811484ef9fa4a7c83b","fdabf0c2593658f129c87c8052c5f8bff9a959f8dd2c5b6522ff3d10f64ad9d5","7ed8c65a78b5116d015b22bcac6a413f8c60edf5396cff3d474b5065a10720a2","d2ff82b084732349284d12417b09d44c35f86b01302c13acb618628c0ff88a79","6dcb8b38f73dde15ebad7f6851a02008b624176b4ceaebd1805b3764ec0529d7","74ffa4541a56571f379060acaf9ab86da6c889dfe1f588425807e0117e62bba5","cf4dc15ca9dc6c0995dd2a9264e5ec37d09d9d551c85f395034e812abdf60a99","d8cb5df191b81f6360ebcdd98f28e0a34271e4dec731325e6edb8eb59389ff01","4cb49e79595c6413fcb01af55a8a574705bf385bd2ec5cf8b777778952e2914a","d6b44382b2670f38c8473e7c16b6e8a9bfa546b396b920afc4c53410eeb22abf","3b5c6f451b7ad87e3fcd2008d3a6cb69bd33803e541e9c0fe35754201389158f","548ef4a7ba09bdd5a03e3be32ecfd4efac910d86691444f80f56d95bd65d6d9d","5915aa2829219dab6124f5a331d31fbf14e08270129b5e46132ad4e6f325dd9d","6f0636a51f36e9886c8f8ddee4e7c55b973fa0e0639f89181a78cd02aa3b835c","7232467057ec57666b884924f84fd21cd3a79cc826430c312e61a5bc5758f879","77c4c9f71f3736ed179043a72c4fad9832023855804fbe5261a956428b26a7a6","f5aa57712223d7438799be67b0c4a0e5ac3841f6397b5e692673944374f58a83","774c37f8faed74c238915868ccc36d0afedfbafb1d2329d6a230966457f57cbd","bc41b711477270e8d6f1110d57863284d084b089a22592c7c09df8d4cc3d1d20","7ae43fe28c94e4eb59f4e6dea5eebde79e8f05baed783af710745b143e1c7522","a94cf65711623cc14027a285d75bfec24d74031267d7242e400cb37e5e1b66d4","228ed3721f42cc25bfebceef33754ce4766414d975ff71d012f01f141dbe3549","08985cdb65bbfe3c70d0037794a3d0f0a5613f55c278c77277a7acc17205db57","f808ee8ab220e4aae3b66269d5d9a4a60099e90c06cf3d6b5930d98241223f87","28ca3153af5ac17cf793730ed75c7f7b4efe73706ff90d0a9760b11162662f43","c86fea295c21ea01c93410eba2ec6e4f918b97d0c3bf9f1bb1960eabe417e7eb","05d41b3e7789381ff4d7f06d8739bf54cc8e75b835cb28f22e59c1d212e48ff3","6fbcfc270125b77808679b682663c7c6ad36518f5a528c5f7258bcd635096770","94169a40e1ac690c161c8e61b388d298ab202c9b95a885532d2e54686e24adb3","f63be9b46a22ee5894316cf71a4ba7581809dd98cf046109060a1214ee9e2977","dd3cc41b5764c9435b7cae3cc830be4ee6071f41a607188e43aa1edeba4fbb3e","b2dbb9485701a1d8250d9a35b74afd41b9a403c32484ed40ed195e8aa369ae70","5aa7565991c306061181bd0148c458bcce3472d912e2af6a98a0a54904cd84fc","9629e70ae80485928a562adb978890c53c7be47c3b3624dbb82641e1da48fd2f","c33d86e1d4753d035c4ea8d0fdb2377043bc894e4227be3ceabc8e6a5411ab2e","f9ec74382c95cbc85804daf0e9dabed56511a6dfb72f8a2868aa46a0b9b5eafc","be32c0a0576265a4dee467f328c5945805a832e6268d312ed768cae1f2666fa6","af9692ce3b9db8b94dcfbaa672cb6a87472f8c909b83b5aeea043d6e53e8b107","1d16150c6560d5830ba826de9b2b8e776e52ce59b051d082605cc1f74dc9607c","3d313ac3b3b188659739203dfab38560303464ffafa899dd8d0f94dea9f645af","690e6a9ba3e36cdd57d83edd2892997bd861aca0e4ebbcc08bd62019381dbc53","90878ed33999d4ff8da72bd2ca3efb1cde76d81940767adc8c229a70eb9332b2","d7236656e70e3a7005dba52aa27b2c989ba676aff1cab0863795ac6185f8d54f","e327901e9f31d1ad13928a95d95604ee4917d72ad96092da65612879d89aba42","868914e3630910e58d4ad917f44b045d05303adc113931e4b197357f59c3e93e","7d59adb080be18e595f1ce421fc50facd0073672b8e67abac5665ba7376b29b9","275344839c4df9f991bcf5d99c98d61ef3ce3425421e63eeb4641f544cb76e25","c4f1cc0bd56665694e010a6096a1d31b689fa33a4dd2e3aa591c4e343dd5181c","81c3d9b4d90902aa6b3cbd22e4d956b6eb5c46c4ea2d42c8ff63201c3e9676da","5bfc3a4bd84a6f4b992b3d285193a8140c80bbb49d50a98c4f28ad14d10e0acc","a7cf6a2391061ca613649bc3497596f96c1e933f7b166fa9b6856022b68783ab","864c844c424536df0f6f745101d90d69dd14b36aa8bd6dde11268bb91e7de88e","c74a70a215bbd8b763610f195459193ab05c877b3654e74f6c8881848b9ddb7f","3fa94513af13055cd79ea0b70078521e4484e576f8973e0712db9aab2f5dd436","48ffc1a6b67d61110c44d786d520a0cba81bb89667c7cdc35d4157263bfb7175","7cb4007e1e7b6192af196dc1dacd29a0c3adc44df23190752bef6cbbc94b5e0b","3d409649b4e73004b7561219ce791874818239913cac47accc083fad58f4f985","051908114dee3ca6d0250aacb0a4a201e60f458085177d5eda1fc3cde2e570f3","3744239074f9d681192bc60dea91e30360e28c96207f53d2e80d64956ac8e63a","d82609394127fb33eed0b58e33f8a0f55b62b21c2b6c10f1d7348b4781e392cb","b0f8a6436fbaf3fb7b707e2551b3029650bfaeb51d4b98e089e9a104d5b559b5","eae0ac4f87d56dcf9fbcf9314540cc1447e7a206eee8371b44afa3e2911e520c","b585e7131070c77b28cc682f9b1be6710e5506c196a4b6b94c3028eb865de4a7","b92ac4cc40d551450a87f9154a8d088e31cff02c36e81db2976d9ff070ba9929","6f99b4a552fbdc6afd36d695201712901d9b3f009e340db8b8d1d3415f2776f5","43700e8832b12f82e6f519b56fae2695e93bb18dddb485ddea6583a0d1482992","e8165ea64af5de7f400d851aeea5703a3b8ac021c08bebc958859d341fa53387","6db546ea3ced87efda943e6016c2a748e150941a0704af013dfe535936e820e1","f521c4293b6d8f097e885be50c2fef97de3dd512ad26f978360bb70c766e7eae","a0666dfd499f319cc51a1e6d9722ed9c830b040801427bbdd2984b73f98d292a","a7d86611d7882643dd8c529d56d2e2b698afd3a13a5adc2d9e8157b57927c0da","7e4615c366c93399f288c7bfbaa00a1dc123578be9d8ac96b15d489efc3f4851","f2e6c87a2c322ee1473cb0bd776eb20ee7bff041bc56619e5d245134ab73e83d","ee89bc94431b2dfaf6a7e690f8d9a5473b9d61de4ddcb637217d11229fe5b69f","a19c1014936f60281156dd4798395ad4ab26b7578b5a6a062b344a3e924a4333","5608be84dd2ca55fc6d9b6da43f67194182f40af00291198b6487229403a98fe","4a800f1d740379122c473c18343058f4bd63c3dffdef4d0edba668caa9c75f54","8e6868a58ca21e92e09017440fdb42ebfe78361803be2c1e7f49883b7113fdc2","2fbb72a22faefa3c9ae0dfb2a7e83d7b3d82ec625a74a8800a9da973511b0672","3e8c1a811bad9e5cd313c3d90c39a99867befa746098cdad81a9578ac3392541","d88f78b4e272864f414d98e5ed0996cd09f7a3bb01c5b7528320386f7383153d","0b9c34da2c6f0170e6a357112b91f2351712c5a537b76e42adfee9a91308b122","47adac87ec85a52ed2562cb4a3b441383551727ed802e471aa05c12e7cc7e27e","d1cacf181763c5d0960986f6d0abd1a36fc58fc06a707c9f5060b6b5526179ca","92610d503212366ff87801c2b9dc2d1bccfa427f175261a5c11331bc3588bb3f","805e2737ce5d94d7da549ed51dfa2e27c2f06114b19573687e9bde355a20f0ff","77fece0e88132fb5383810d303de6152ea8f2ff1ed2cd4ac1abd69a7fc570cc5","a37b576e17cf09938090a0e7feaec52d5091a1d2bbd73d7335d350e5f0e8be95","98971aa63683469692fef990fcba8b7ba3bae3077de26ac4be3e1545d09874b8","c6d36fa611917b6177e9c103a2719a61421044fb81cdd0accd19eba08d1b54de","77081112c1ca3ad1670df79cdfd28a1f2fd6334a593623aaf7268c353798e5c3","5eb39c56462b29c90cb373676a9a9a179f348a8684b85990367b3bbc6be5a6e9","d77a02413f5b0f845a39546255af68ab04c906b07c5f3385f9b6fb64fb75d5f1","731d07940d9b4313122e6cc58829ea57dcc5748003df9a0cad7eb444b0644685","b3ead4874138ce39966238b97f758fdb06f56a14df3f5e538d77596195ece0b5","032b40b5529f2ecce0524974dbec04e9c674278ae39760b2ee0d7fce1bb0b165","c25736b0cb086cd2afa4206c11959cb8141cea9700f95a766ad37c2712b7772b","033c269cd9631b3f56bb69a9f912c1f0d6f83cf2cff4d436ee1c98f6e655e3b5","bd6d692a4a950abbfabe29131420abe804e7f3cc187c3c451f9811e9cf4408ce","a9b6411417d4bffd9a89c41dc9dedda7d39fb4fa378eaa0ab55ec9ea1a94eb6a","1329e7cd7aca4d223ef5a088d82bc3f6f302ce70581c8d3823a050ea155eec3b","09248c76437c5b1efce189b4050c398f76a9385135af75c5fb46308b0d1432e0","b8df115bf7b30cceeb4550c0be507082b9930ee6268539a1a1aaffb0791cc299","dde00f41a2d2b1e70df6df8ac33de7cb3a658956212c7bee326245cc01c990c2","033e92c17274b826e6732a6dbf044487c581223995e17e6fd8d655d1dd202947","5cd5a999e218c635ea6c3e0d64da34a0f112757e793f29bc097fd18b5267f427","cc14b99b4e1bbedab2e3fbf058ed95231d8ced691f0645f2a206c32464f1bd7b","e6db934da4b03c1f4f1da6f4165a981ec004e9e7d956c585775326b392d4d886","53e65282ab040a9f535f4ad2e3c8d8346034d8d69941370886d17055874b348d","6ecb85c8cbb289fe72e1d302684e659cc01ef76ae8e0ad01e8b2203706af1d56","35ab64ba795a16668247552da22f2efe1c5fbc5bc775392c534747be7f91df04","34283015304de5df8d6e3740b9bca58e40513ec6333b3fb0a3fa3aa4c43b856b","4a397c8a3d1cccf28751bcca469d57faeb637e76b74f6826e76ad66a3c57c7b8","34c1bb0d4cf216f2acb3d013ad2c79f906fe89ce829e23a899029dfa738f97e0","b70b5b3d14d125d6dcc16a9ac43cafe8801f644954ac36cb2918723f9cbbd4fe","b50f05738b1e82cbb7318eb35a7aaf25036f5585b75bbf4377cfa2bad15c40bf","c682cb23f38a786bb37901b3f64727bd3c6210292f5bb36f3b11b63fbe2b23ee","d6592cf10dc7797d138af32800d53ff4707fdcd6e053812ce701404f5f533351","7363a9bfd7b8bc068189ccebfa395383b9c84f115e8a0bf2a71f4de68f28d5ad","9584dd669a3bf285e079502ebbb683e7da0bf7f7c1eb3d63f6ef929350667541","41a10e2db052a8bf53ed4d933d9b4f5caa30bdaee5a9d978af95f6641ce44860","8c5c602045ffdfebeffc7a71cd2bf201fe147a371274b5fcbded765a92f2af78","6392ce794eef6f9b57818264bb0eeb24a46cf923f7695a957c15d3d087fbb6cc","b10f123e8100aa98723c133af16f1226a6360ec5b6990a0fe82b165d289549db","93d20368cdb5fff7f7398bfc9b2b474b2a2d5867277a0631a33b7db7fd53d5b4","b1e69b9834104482fabf7fba40e86a282ee10e0600ffd75123622f4610b0ef9e","ad5bb6c450cb574289db945ff82be103ed5d0ad8ee8c76164cee7999c695ae01","217761e8a5482b3ad20588a801521c2f5f9f7fb2fbb416d4eff3aff9b57f8471","7ad780687331f05998c62277d73b6f15ee3e8045b0187a515ffc49c0ad993606","e9aa5ccb42e118f5418721d2ac8c0ebdebeb9502007db9b4c1b7c9b8d493013e","d300868212b3cc4d13228f5dc2e9880d5959dc742c0c55be2fc43bcda8504c8f","0c55daad827669843bd2401f1ddd163b74d9f922680b08ae6e162ceb6c11b078","fe45a9bc654dfd1550c9466c0dad9c8017f2626476ed9d25c65ddfc1943f6b74","03abcbc7b5b68887525be71a194dd7f9f68276b5fb5b8989abae9a91585ddc33","5055e86e689cfe39104ab71298757e5aac839c2ea9d1f12299e76fa79303d47d","42266c387025558423c19d624f671352aac3e449c23906cb636f9ae317b72d7e","b8263f60855a11e955b7a229dd3554b9df204e03ce3f221079687a242545050b","af1af59e70d7cd03669420193574e8b8d2667213e1c874f17fcbf78e3e96d185","9b21e8a79f4213c1cf29f3c408f85a622f9eb6f4902549ccb9a2c00717a0b220","d556e498591413e254793f9d64d3108b369a97bd50f9dd4015b5552888e975ef","e2c652c7a45072e408c1749908ca39528d3a9a0eb6634a8999b8cf0e35ef20c8","ec08224b320739d26aaf61cead7f1e0f82e6581df0216f6fe048aa6f5042cb8c","4eadaa271acca9bd20fc6ac1ea5e4bf9ab6698b8ccf3ec07c33df4970f8130f1","3a0a397189726902c046697f7bf38fecb557a79d5a644aac9ec983024b4c3d17","46f1df33bc635aa84313579ff51a7269707b58a8a32728e4e5fc7ab47816b44a","5ecd8fdeb6c87db9c320eefbfa9ea27efccbdce853ed38d5ba58e2da482edf1f","19a4d116285e7d77e91411966930761a2204ce2d20915afdb12652681a4a88d7","c30ca82112586c5dae7477d7e82cc91a7e0d1e658c581f9ec3df07c4485bba84","68fca1813d17ee736f41124ccc958d0364cdef79ad1222951bfacc36b2630a58","7813329e568df1d42e5a6c52312b1a7c69700e35a561cf085158c345be155b22","561067dc7b6b7635277d3cad0a0e11f698d377063dd2c15dfac43ef78847eef4","438247e782a8a9b9abdce618e963667cf95157cc6d3f5194a452d3c7d9e9655c","253f79802f33f405c1807f33efa7d78e0a26143ee694297d4f8e1477c7ed5e28","f1e8eca509487806fdf979349cfcdb6ffdeb20f11b7e95666c4309d12dcd9ba6","83724b26b711d85d6cfc9dd92fd5d666ffaae27fcfb1a0110401b98814ea26c0","869a27c929366c3c864013a991fd4c4c86af73eba25513e8ae915f814d3d349c","756e3f41a7f2501a34e1a070283c7f5550e200eeb43fed3c806e3f2edd924a75","59935cc13dcb7c3c7825e770a61e6696bfd11b65e3e47c28acc410dbdf8461c0","85e2808cc73ab3ac07774802b34a6ff0d7e1e46c26de7bc2dbe08e04b3340edb","f766e5cdea938e0c9d214533fd4501ab0ee23ab4efca9edba334fa02d2869f11","eb380820a3a1feda3a182a3d078da18e0d5b7da08ae531ce11133a84b479678c","7fba5cc3088ad9acada3daeff52dae0f2cac8d84d19508abd78af5924dc96bea","ddaa88853f1ee35622267a9d95450cd00c80d6d920ff7acb438c5a6d265ba549","6e31c6594fa94eac6d3a41d969e46e5d12f611e8821c321486b427a06537f1b1","162356906f31fed8dec4b496c757a33e2c322ee2577637731846cb6c1dd311ea","105f944f1de6917982fd4a0154bd7b2758efa8641add4a8d157d5d381578f835","f780879a2ca63dbb59b36f772bc28dccd2840f1377d8d632e8c978b99c26a45f","335c2e013b572967a9a282a70f9dded38631189b992381f1df50e966c7f315d6","b2241e9c697bcec55b33a462ab09b6eaf9a06e3891ae21c25d70270cf0565168","c90f8038c75600e55db93d97bab73c0ab8fb618d75392d1d1ad32e2f6e9c7908","ca083f3bf68e813b5bded56ecbf177636aa75833eb86c7b40e3d75b8ce4c2f78","3c8bf00283ef468da8389119d3f5662c81106e302c8810f40ea86b1018df647e","67b248e4bac845c5139898b44cbd3e1213674bcc9831039701b5f0f957243a24","63d49516f359186f7b3e3115f2c829ed75c319b34022c97b56beead032a073b7","9f5f256c7b5cc4a98ef557ea9720f81e96319d569f731c897ddb4514936242b4","a20ded6c920f6e566537e93d69cbad79bc57d7e3ce85686003078cf88c1c9cfc","40b2d781df7b4a76d33454cb917c3883655ec1d8d05424b7a80d01610ad5082f","703ea2acd8b4741248897a5709cd46e22fcd9d13f01ff3481322a86505f0b77c","51ebaff0cba6b3adf43f13b57bb731d56946cabd06d14cf9dfc7c5eaa8f95770","9b4d4b0f6ed5dcb58459b3b6c83ce49ae20c92782382f0db111a9feeed40feac","88331dcab25eb03a0de8ea2d2a48b7d1df81b380e043c6560469d14c5452745b","c1b1433f217ceec10a94733abcf3a00f3324e9b48068188d9dfd6d03916c60c5","bcaf468eea143f8e68ca40e5da58d640656b4f36697170c339042500be78ac5d","92de961d1db5fe075db8c0b6414a6eec430adaf9022465fe9d0a23f437aafcb3","709b537e6cfef7ac19802d3d17d4ad4dd6c520284035688ec8cfe9e366efe335","7355edff7686f91edbca25e0fe9d6c3359df2520d48d3dc6d857aa47047f8ddf","08c5f1482614fe9bd9d10660abbcfeec30c64ddf758c319527581a21382ff57c","7960c50e56a66998e08c5d5e6c56e19e481384e27d50a8b0a85f08e21db940a2","f9568a3a6c74013aee8b09d73ef04175596b51ce6f5d9dcd4885418170fe9306","bd3910ccd4fcd05ebd83fbfeb62f5a82a6674c85c6c0e4755c16298df7abe4d7","2bfad224656e6eea9e6e59683cd0b8468f557969dd3d3acdcaaf47ee3d295604","b28b6875a761fd153ebf120fecb359660de80fd36e90c9b3d72a12318bd5d789","e4e30e82a21af99ab47223d894f8000a374d8f63dfd41dbf32f9f0c0437473e6","093c1fb38b09f197f34982ccc01e81ebcb189b10aa9b4c18a3ab0ec43550757f","73b0fd6255f24e82be861f800a264f0175984062b6ccca3052578b03ed6f397b","4a3f7c6f02cb01eb7a9800548b41cfa03a57e476fc92a72869983f37efa8067a","248de9c5d798c5e4e9ec8776f5fae1b4e7f4c9309f07c87b689c725dab966816","e15db0d01139d39213a40639352debd92786f311e0421c21ac97c2ca4003a299","c1cc2a1ac9ae043fd05e07193d408c0f0bf4628e54c19871621ce1049d4c200e","d005c21b9c42bd1ccde99f183dc2d3c992be407aa63c4ba3371e4f81cf36b2aa","9a7638d62db8cfa1466093d7d413fdf85c5e4a7c663ed76f2bfc8739c8e01505","1c101a4f280e868c9a0303c112f61bccc5c9aedf83039bd4294aaf05b39f85fd","c338859b98f8a11f80e3e47e33767299e7a4facdf0870c01c8694fa8fa048d16","4f64016165565f743356812e33ac22f5ef91891738927e413121f502b186210c","b113e9770d5be136c5e2add9e6cdf40d85051762ff2391f71d552975e66b1500","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","b6e995b5ef6661f5636ff738e67e4ec90150768ef119ad74b473c404304408a1","5d470930bf6142d7cbda81c157869024527dc7911ba55d90b8387ef6e1585aa1","074483fdbf20b30bd450e54e6892e96ea093430c313e61be5fdfe51588baa2d6","b7e6a6a3495301360edb9e1474702db73d18be7803b3f5c6c05571212acccd16","aa7527285c94043f21baf6e337bc60a92c20b6efaa90859473f6476954ac5f79","dd3be6d9dcd79e46d192175a756546630f2dc89dab28073823c936557b977f26","8d0566152618a1da6536c75a5659c139522d67c63a9ae27e8228d76ab0420584","ba06bf784edafe0db0e2bd1f6ecf3465b81f6b1819871bf190a0e0137b5b7f18","a0500233cb989bcb78f5f1a81f51eabc06b5c39e3042c560a7489f022f1f55a3","220508b3fb6b773f49d8fb0765b04f90ef15caacf0f3d260e3412ed38f71ef09","1ad113089ad5c188fec4c9a339cb53d1bcbb65682407d6937557bb23a6e1d4e5","e56427c055602078cbf0e58e815960541136388f4fc62554813575508def98b6","1f58b0676a80db38df1ce19d15360c20ce9e983b35298a5d0b4aa4eb4fb67e0f","3d67e7eb73c6955ee27f1d845cae88923f75c8b0830d4b5440eea2339958e8ec","11fec302d58b56033ab07290a3abc29e9908e29d504db9468544b15c4cd7670d","c66d6817c931633650edf19a8644eea61aeeb84190c7219911cefa8ddea8bd9a","ab1359707e4fc610c5f37f1488063af65cda3badca6b692d44b95e8380e0f6c2","37deda160549729287645b3769cf126b0a17e7e2218737352676705a01d5957e","d80ffdd55e7f4bc69cde66933582b8592d3736d3b0d1d8cc63995a7b2bcca579","c9b71952b2178e8737b63079dba30e1b29872240b122905cbaba756cb60b32f5","b596585338b0d870f0e19e6b6bcbf024f76328f2c4f4e59745714e38ee9b0582","e6717fc103dfa1635947bf2b41161b5e4f2fabbcaf555754cc1b4340ec4ca587","c36186d7bdf1f525b7685ee5bf639e4b157b1e803a70c25f234d4762496f771f","026726932a4964341ab8544f12b912c8dfaa388d2936b71cc3eca0cffb49cc1d","83188d037c81bd27076218934ba9e1742ddb69cd8cc64cdb8a554078de38eb12","7d82f2d6a89f07c46c7e3e9071ab890124f95931d9c999ba8f865fa6ef6cbf72","4fc523037d14d9bb6ddb586621a93dd05b6c6d8d59919a40c436ca3ac29d9716","e69d0b59db23f59172cb087ee44a71438f809bd214d4f4105abd6090b341cbdc","d5c1d4db425938fb1e0ff528b3edb945d4d851c001ab6e1528c62eb16813d96e","86f89124a90fae1b90421bcce1e0ba58614383ca72403bfc03ff89761b050a4d","5a6fbec8c8e62c37e9685a91a6ef0f6ecaddb1ee90f7b2c2b71b454b40a0d9a6","e7435f2f56c50688250f3b6ef99d8f3a1443f4e3d65b4526dfb31dfd4ba532f8","6fc56a681a637069675b2e11b4aa105efe146f7a88876f23537e9ea139297cf9","33b7f4106cf45ae7ccbb95acd551e9a5cd3c27f598d48216bda84213b8ae0c7e","542c82f0d719084ec6dde3ce4a69be8db0f5fa3ea1e38129f95ee6897b82de78","c5079a23a0200a682ec3db25bc789d6cee4275b676a86ec1a3964d919b977e6a","8bcb884d06860a129dbffa3500d51116d9d1040bb3bf1c9762eb2f1e7fd5c85c","e55c0f31407e1e4eee10994001a4f570e1817897a707655f0bbe4d4a66920e9e","a37c2194c586faa8979f50a5c5ca165b0903d31ee62a9fe65e4494aa099712c0","6602339ddc9cd7e54261bda0e70fb356d9cdc10e3ec7feb5fa28982f8a4d9e34","7ffaa736b8a04b0b8af66092da536f71ef13a5ef0428c7711f32b94b68f7c8c8","7b4930d666bbe5d10a19fcc8f60cfa392d3ad3383b7f61e979881d2c251bc895","46342f04405a2be3fbfb5e38fe3411325769f14482b8cd48077f2d14b64abcfb","8fa675c4f44e6020328cf85fdf25419300f35d591b4f56f56e00f9d52b6fbb3b","ba98f23160cfa6b47ee8072b8f54201f21a1ee9addc2ef461ebadf559fe5c43a","45a4591b53459e21217dc9803367a651e5a1c30358a015f27de0b3e719db816b","9ef22bee37885193b9fae7f4cad9502542c12c7fe16afe61e826cdd822643d84","b0451895b894c102eed19d50bd5fcb3afd116097f77a7d83625624fafcca8939","bce17120b679ff4f1be70f5fe5c56044e07ed45f1e555db6486c6ded8e1da1c8","7590477bfa2e309e677ff7f31cb466f377fcd0e10a72950439c3203175309958","3f9ebd554335d2c4c4e7dc67af342d37dc8f2938afa64605d8a93236022cc8a5","1c077c9f6c0bc02a36207994a6e92a8fbf72d017c4567f640b52bf32984d2392","600b42323925b32902b17563654405968aa12ee39e665f83987b7759224cc317","32c8f85f6b4e145537dfe61b94ddd98b47dbdd1d37dc4b7042a8d969cd63a1aa","0da77bc7e34afccd7d35dcc0d99db05b56235a536c69082c15f2a07ceb7ceae0","f364fb93abf1e50fa93e38b4cb32c99adb43e8c8044482da5b9bf29aa27eaf75","a460b56ced5a21969a819245f9f36b2b55aa2129e87159957d400d3dc0847529","e53e817cec71dc843700a1571356271d3e13abf8cb9d32f33b4a214c6dcdd1e0","252eb4750d0439d1674ad0dc30d2a2a3e4655e08ad9e58a7e236b21e78d1d540","e344b4a389bb2dfa98f144f3f195387a02b6bdb69deed4a96d16cc283c567778","ecb3f7a39c52816137f9a87278225ce7f522c6e493c46bb2fff2c2cc2ba0e2d4","31d26ca7224d3ef8d3d5e1e95aefba1c841dcb94edcdf9aaa23c7de437f0e4a2","c5b3da7e2ecd5968f723282aba49d8d1a2e178d0afe48998dad93f81e2724091","3e4ba3ecd2f4b94e22c38ff57b944e43591cac6fd4d83e3f58157f04524d8da6","4b8e57cbc17c20af9d4824447c89f0749f3aa1ec7267e4b982c95b1e2a01fab7","37d6dd79947b8c3f5eb759bd092d7c9b844d3655e547d16c3f2138d8d637674e","c96700cd147d5926d56ec9b45a66d6c8a86def5e94806157fa17c68831a6337f","f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","e252a2f541e86ee889bcab952a0f9844e7d5a62284b06cd09d67d67063b2519d","d618d077158335a50ae6bb789d93dd29b62f930195a2e909e94f0afadad5680a","ae0eeabdb4b4129356ba04ce086c675af383a9ab2b275950d73067842ccd91e4","54f664311746f12a5b0b93a6a58b12a52660e3ff74f06aa0e9c275f46bd22d0e","506bc8f4d2d639bebb120e18d3752ddeee11321fd1070ad2ce05612753c628d6","4069e28d9ec7bb86c714d2d11b5811ebca88c114c12df3fb56b8fec4423dcf18","1977f62a560f3b0fc824281fd027a97ce06c4b2d47b408f3a439c29f1e9f7e10","627570f2487bd8d899dd4f36ecb20fe0eb2f8c379eff297e24caba0c985a6c43","445bbd11741254b30eb904776cbebc72b9d13b35e6a04a0dda331a7bbafe2428","85c9be6b38726347f80c528c950302900db744b558a95206c4de12e1d99b2dee","735baa325c8211ac962fa5927fa69d3702666d1247ceb16bf94c789ccd7bef26","9e82194af3a7d314ccbc64bb94bfb62f4bfea047db3422a7f6c5caf2d06540a9","c32373a44722e84517acd1f923284ce32514fecf3dd93cc5ae52111dc6aa682a","952a9eab21103b79b7a6cca8ad970c3872883aa71273f540285cad360c35da40","8ba48776335db39e0329018c04486907069f3d7ee06ce8b1a6134b7d745271cc","e6d5809e52ed7ef1860d1c483e005d1f71bab36772ef0fd80d5df6db1da0e815","6ee38318bdaa2852d9309e92842f099a9f40c5d3c5aff3833066c02ffd42dade","12ae46c46c5e2405ad3d7e96e2638f1d183095fa8cf8a876d3b3b4d6ba985f5b","e4b1e912737472765e6d2264b8721995f86a463a1225f5e2a27f783ecc013a7b","da09c0171b55ccdf5329e38c5249c0878e7aec151c2a4390c630a2bc1383e768","c40d552bd2a4644b0617ec2f0f1c58618a25d098d2d4aa7c65fb446f3c305b54","ecb4c715f74eb8b0e289c87483f8a4933dfa566f0745b4c86231a077e2f13fea","424ddba00938bb9ae68138f1d03c669f43556fc3e9448ed676866c864ca3f1d6","a0fe12181346c8404aab9d9a938360133b770a0c08b75a2fce967d77ca4b543f","3cc6eb7935ff45d7628b93bb6aaf1a32e8cb3b24287f9e75694b607484b377b3","51451e948351903941a53ed002977984413a3e6a24f748339dd1ed156a6122bf","efd463021ccc91579ed8ae62584176baab2cd407c555c69214152480531a2072","29647c3b79320cfeecb5862e1f79220e059b26db2be52ea256df9cf9203fb401","e8cdefd2dc293cb4866ee8f04368e7001884650bb0f43357c4fe044cc2e1674f","582a3578ebba9238eb0c5d30b4d231356d3e8116fea497119920208fb48ccf85","185eae4a1e8a54e38f36cd6681cfa54c975a2fc3bc2ba6a39bf8163fac85188d","e6e7ac06b50b2693488813f8de73613934d9aa2eb355cdffd2ef898db60c9af1","5b504f247d6388daa92ffb5bbd3ffc5fc5a1ebd3ff928f90b6285b620455dd04","cee72255e129896f0240ceb58c22e207b83d2cc81d8446190d1b4ef9b507ccd6","3b54670e11a8d3512f87e46645aa9c83ae93afead4a302299a192ac5458aa586","c2fc4d3a130e9dc0e40f7e7d192ef2494a39c37da88b5454c8adf143623e5979","2e693158fc1eedba3a5766e032d3620c0e9c8ad0418e4769be8a0f103fdb52cd","516275ccf3e66dc391533afd4d326c44dd750345b68bb573fc592e4e4b74545f","07c342622568693847f6cb898679402dd19740f815fd43bec996daf24a1e2b85","fcfe042dc3134375bc247267993c55a931237910e5e5f410b804118341c777d4","ffb038772fa32bfb0b6cb74c1fe6f609335d086d715589aae790c33ee698801d","6aacd53b14c96a0cd21435cae68eabe6d9a3d78dc5442ec6edcf391efd7989ef","a4096686f982f6977433ee9759ecbef49da29d7e6a5d8278f0fbc7b9f70fce12","2eb279b2ae63cf59b419eb41c4ccd8f0850a7114c0a6a0da386286799f62c38b","9c9b902ae773d4c1ca6bb8f05e06b1dc6ffe7514463e3ee9b9e28153014836ee","86df53d43eccf5f18b4bc8f876932bd8a4a2a9601eb06bbba13f937f3b2a2377","2147f8d114cf58c05106c3dccea9924d069c69508b5980ed4011d2b648af2ffe","edb8332e0c7c7ec8f8f321c96d29c80d5e90de63efdb1b96ad8299d383d4b6b9","fe61f001bd4bd0a374daa75a2ba6d1bb12c849060a607593a3d9a44e6b1df590","cfe8221c909ad721b3da6080570553dea2f0e729afbdbcf2c141252cf22f39b5","34e89249b6d840032b9acdec61d136877f84f2cd3e3980355b8a18f119809956","6f36ff8f8a898184277e7c6e3bf6126f91c7a8b6a841f5b5e6cb415cfc34820e","4b6378c9b1b3a2521316c96f5c777e32a1b14d05b034ccd223499e26de8a379c","07be5ae9bf5a51f3d98ffcfacf7de2fe4842a7e5016f741e9fad165bb929be93","cb1b37eda1afc730d2909a0f62cac4a256276d5e62fea36db1473981a5a65ab1","195f855b39c8a6e50eb1f37d8f794fbd98e41199dffbc98bf629506b6def73d7","da32b37d9dec18a1e66ce7a540c1a466c0a7499a02819a78c049810f8c80ec8f","108314a60f3cb2454f2d889c1fb8b3826795399e5d92e87b2918f14d70c01e69","d75cc838286d6b1260f0968557cd5f28495d7341c02ac93989fb5096deddfb47","d531dc11bb3a8a577bd9ff83e12638098bfc9e0856b25852b91aac70b0887f2a","19968b998a2ab7dfd39de0c942fc738b2b610895843fec25477bc393687babd8","c0e6319f0839d76beed6e37b45ec4bb80b394d836db308ae9db4dea0fe8a9297","1a7b11be5c442dab3f4af9faf20402798fddf1d3c904f7b310f05d91423ba870","48709e4ac55179f5f6789207691759f44e8e0d2bfbadd1ceecb93d4123a12cef","2c817fa37b3d2aa72f01ce4d3f93413a7fbdecafe1b9fb7bd7baaa1bbd46eb08","682203aed293a0986cc2fccc6321d862742b48d7359118ac8f36b290d28920d2","7406d75a4761b34ce126f099eafe6643b929522e9696e5db5043f4e5c74a9e40","ad74043d72ed605cecf58a589112083c78dfd97452b80cd0a81b31c57976af12","9bc363b91528a169b3d9451fba33f865c339a3397da80a44a754547962f4a210","64efb52cb6cf86c8a05ceec920db05f9ebdaac4dff5980d9a62227eb6d2ebc11","3286cf198cf5f068cd74cb0b6648c8cba440dade2fc55eb819e50e5ea9b3f92e","16a6d4efcce5bb20d42134ce52855a46cd4783668c6d6a67a86397eb670ad0d2","46bd71615bdf9bfa8499b9cfce52da03507f7140c93866805d04155fa19caa1b","334b49c56ad2d1285a113ae3df77733d304853afcf7328367f320934e37559af","a0e74be326371c0d49be38e1ca065441fb587c26ca49772d1c96db7b77a1bb14","bb1e5cf70d99c277c9f1fe7a216b527dd6bd2f26b307a8ab65d24248fb3319f5","817547eacf93922e22570ba411f23e9164544dead83e379c7ae9c1cfc700c2cf","a728478cb11ab09a46e664c0782610d7dd5c9db3f9a249f002c92918ca0308f7","9e91ef9c3e057d6d9df8bcbfbba0207e83ef9ab98aa302cf9223e81e32fdfe8d","66d30ef7f307f95b3f9c4f97e6c1a5e4c462703de03f2f81aca8a1a2f8739dbd","0f562669bc473ed1e1e2804f12d09831e6bf506181d7684fb386f60f22989057","90a4be0e17ba5824558c38c93894e7f480b3adf5edd1fe04877ab56c56111595","fadd55cddab059940934df39ce2689d37110cfe37cc6775f06b0e8decf3092d7","9115cfffd8ea095accd6edf950d4bdfabbd5118e7604be2e13fe07150344bb9d","b4f3b4e20e2193179481ab325b8bd0871b986e1e8a8ed2961ce020c2dba7c02d","41744c67366a0482db029a21f0df4b52cd6f1c85cbc426b981b83b378ccb6e65","c3f3cf7561dd31867635c22f3c47c8491af4cfa3758c53e822a136828fc24e5d","1a3f603fedd85d20c65eb7ca522dd6f0e264dbb6e1bfa9fb4f214f2e61b8bdf8","82a74e031ab992424f8874ceacbb43ad33bdcf69538a0fbddc28145e54980f5a","5515f17f45c6aafe6459afa3318bba040cb466a8d91617041566808a5fd77a44","4df1f0c17953b0450aa988c9930061f8861b114e1649e1a16cfd70c5cbdf8d83","441104b363d80fe57eb79a50d495e0b7e3ebeb45a5f0d1a4067d71ef75e8fbfa",{"version":"83cb53507da5b46b6e46584268e1bcdd1e783c5cb985a6c6dd72a0d45bcf6fae","signature":"3be9ce1bbdb7cbb69250f1e8b8709d94e843cd3ca5182c32d2aa56213ed7263a"},{"version":"daef29db0372efdb684e08db888600f858347d659a0536e63bb1e0151e1ce72b","signature":"2b3ed110a1cb45ccf3f4d0f3bfff7b875b03993c30a201fe557a0f306cec160f"},{"version":"25164c57375cc16b8351e5e7bcec76009136acc130accae7631aed446ba549d3","signature":"0ab1da26a716915a219b8e76cc6e46d9d881e8467cc89b1981ddb6987b29885a"},"2bad09c4dc0810666ef5b6150aa910dd711051ce5f2184050c9859c708092a36","90b7749e090b5971669657bbf97c2f1f7bbde63e45ebee576e6d6a80cd274cd8","c938dac97b83703e7bd03862b5bc558425acc9f16ad9e24220771df184d25fcf","8941525aa2f1e097f0352e586bb9c755e2d533e9945508b7518346759b26e1b8","8acfefd1aec7626a3016ce7e82e3ac1a0e5b57248cffd8255b833503c29954c7","3cf73a203d499608e5b91d0c8f6ec729a39dd547cc2651a0d4647cdb420cc1fc","17f1d99666811b576261c5c9399cf2a643220188d6dcd0e6fe605a68a696d2c8","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f",{"version":"e4d1daa0964e6851de27a99e0da4a996b60120e8797a4d1f8a55100dc059ff58","signature":"a952647879e393357c290e9fb25c9cb8676d8b9aab9a6768459cae0a96931b20"},{"version":"c1d6167e4f75ae46f31df9fc6af22e73b2945647019f42bae2c5b8bce77838fd","signature":"9520f738f03aac3f3cc1d6ce242ae26c0eb310d3275fa1311754660ed0a16c93"},{"version":"a53c59851393fed9ff27d96c033ab5c7000676825ce91d25305b6d492cf5a198","signature":"d5dedd50c8acad15fbad92b0a85f291555103c62ef0112f8a92c99047b3d4647"},"e1641d43b97f4ed3fb386c82d86447f78d20a637dd479c20d3c133de5789a112",{"version":"4b2c263ad2951bec4d9337025dd22ea0fcf043022b2303d232fef38e234e5eee","signature":"aa1725e38b5a0b4009f6a74f296f173e7926c119a60454dbd2e523861735df69"},"ef7487702b8defa3ee39f8fdabec8c9d1b71c38876eead531d2b5b16b56d887f","839d15098cc51d756b67acda281788779645cbf8e95571897951afb52ea6535a","443e3123c41da4e34ba5bd439b892f01c8af842692bb943a1c5f5dccd4d3c764","e36ea8ba6b5047a39316422dc621d1f5acee06ac8d8294ab655911b8690978f8","b4896cee83379e159f83021e262223354db79e439092e485611163e2082224ff","5ca76111f37c0dc0c45d61af5d0f3617f5e5bb2005038613d5b2567f10007c34","08bb8fb1430620b088894ecbb0a6cb972f963d63911bb3704febfa0d3a2f6ea5","2d51cd3cd5a6e922b62f31fe8b99ebcf215ca09a8fe10ff0821580b11d2f1e34","ced3404358800496232fbeb884d609b9ba7e2a4d7aca3dfe33beea0e59f1785a","f30933a99daa806dbcc0497b539ae148ad924d58d13406398d4b60528bf5de9c","26f5e3ac9549255104244247c9635b19588a93b33ba670e0f65ebc619dc65363","c34aa174065847b91a8cf22a1c7f958fa027752fe3f09f9e43e8fe958895f594","aadc9a99a877b842474c622500d983eb1927f6ca27374f1b94e561bef54e5997","f9e034b1ae29825c00532e08ea852b0c72885c343ee48d2975db0a6481218ab3","2d83f7d8b38d5941370e769e98492fa28c1112cbc976958522bc92a11b8234aa","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f",{"version":"7ad579f5dc90a8d8f4dcd2a338042c7702f1d1e89aac5ea68549ccd74919b844","signature":"456f69342d9da3bc0f9fed6b525e3878af3f4388b7e8df74e93d3e69dfc00e75"},{"version":"44f7d6fc3d8e2926547637c48d8bcc55d38c4e80dde9decd7ca635039d829bc4","signature":"8c191028b44f9cdf3733f1a235658a05ec665b9c198d1169f5f4f37b528876c9"},{"version":"55a265c3771ed938a7714147ebef1eb39873b1d32c133c62a1128df5938afcaa","signature":"5d087e4b17aca5b4451c16467bc0782281eb2ea3f17bb53c816b1e67e0fef1fe"},"678f663f24c3bc637fc6c6eb5c7ed5a36064e699c269872f190e2ee214e96e78",{"version":"4ad2ba69901544349df9cc424c9a7f985648f62ce5415b3603f634387c1b96d4","signature":"bd57a3aef08ebf1096cf2305533db431478803befec454320d6cea6980c44440"},{"version":"430fcfe5b86a5861c787ebcbf578819fbbc878161585a2c36d29e923f5c55dcb","signature":"53de5e5e5b888c0edb413aed1a3ee90f596d4033e86c61ff63dca0d7249d4739"},"ba63131c5e91f797736444933af16ffa42f9f8c150d859ec65f568f037a416ea","aa99b580bd92dcb2802c9067534ebc32381f0e1f681a65366bcf3adae208a3a4","340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","0e9aa853b5eb2ca09e0e3e3eb94cbd1d5fb3d682ab69817d4d11fe225953fc57","b479363f4e787901f2c482feff206a2011ce816dbdd18a804580ec6a9f01d015","793c353144f16601da994fa4e62c09b7525836ce999c44f69c28929072ca206a","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"ae3fe461989bbd951344efc1f1fe932360ce7392e6126bdb225a82a1bbaf15ee","affectsGlobalScope":true},"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","f47887b61c6cf2f48746980390d6cb5b8013518951d912cfb37fe748071942be","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae",{"version":"d9aa2c3d6bb462015bb36be4282ec9dfeca33d687aae1b7d726c6c9543165dd1","affectsGlobalScope":true},"599ac4a84b7aa6a298731179ec1663a623ff8ac324cdc1dabb9c73c1259dc854","100509817f7a12b93f2ca4e07c1e3fe7f73ce2cbe2d69b609df2bf35fbbe7cf8","585bc61f439c027640754dd26e480afa202f33e51db41ee283311a59c12c62e7","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f",{"version":"c63c7306a88198df53b660d2e4192a8e8a8e7dfaa615fc83ee98974658643df2","signature":"ae85af8d0afea91fc56401895065b49682ebe6a75422caba74046b209496a1f7"},{"version":"c62a336926534eabbd9e07b0cbfb275c6e3480c688bdd51a0c61eedcae87ed40","signature":"7e103a5d1887cd302e878e710eaa083e006d9f1d041e5c457de53776f8aba54d"},{"version":"71ad94f120c4dda3d4ec9d7ef41456f2e5f2d1bbb3c6d574d410373145d7d0da","signature":"b82491e2990291580288c5602d4c017238977749d52b17391f0e45d9a29be644"},"e9cba458ea179833bba7b180c10e7293b4986d2f66a7bd99c13f243d91bab3d4","8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","27484cb3aa328bc5d0957fcb34df68a5db1be280af510d9ed3a282b1a0a93b38","6c2b8c78eb1476ad2668898923fda9c3e67b295b9a6dc7a7312ead2582a76883","d8fb0821bcebbcc5ef87655a6442e8909313eb0bd7960f696b10cdb31576fdaa","1053398d8fd9b1a45170b5cca30bd54abe7ec7061ef2929c4da9feaa71737930","c21f2aa4d38c2e9fea29dde79c15aed25f532ed1cb295794879cbeb8372a3ce7","7afedbfdd1a5220d472faacc2943242abb1f3f274b80984b11e804d6a8d8f17f","31a335eb49c1ea1b0d8ded51d2dee99d96b45e67f581638b2bce9cd121a2dcdc","c86ad86cc7a3ec3794deab9b943a823d9aaf09b846bb581a06bf263117e8d6d9","cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","f23601713615719b1a1394deae884fb9f507de819a086d5a019c63793da9efc6","50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","ad5ad568f2f537a43dcc1588b2379f9dc79539ae36b8821b13a5d03625211eb2","99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","d2d58166965f631fa203f405f3713b0f86f1f8b80755e9daea43057a25311e16","ce7dbf31739cc7bca35ca50e4f0cbd75cd31fd6c05c66841f8748e225dc73aaf","942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","a861cceeb708d23beebcf7f3235dcdd1a5a7d1655afd6ba49dbc0d45f5370469","0256d60785ede7860b5262f504f139aa68f74db44ba9f03807b752864580772c","396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","7cb9b6d5c1e3508fbc81e7bbab314eac54715f9326ac72fd0eb65f17a4393d50","eefa4f00b4a4c150786e5ed866999b44687388e94a99f0b67a78b59c5b2303fd","3bcc2bbb40a70477a56b4d2e817e4b0044d567bae25bbca6be9136607bea2afe","be75c12a8d61aaadb9e33e0d7d0e7b2f3bee9a3ac618d04367e0b7c2aea3f86d","e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","c0849999805318805a3932d166a8ae03899ec253c7c9fea35ba6e5a1d04e5572","f8a3096b501a807cd24f83dbd273bd4844a0c49d1d826eb821fafd2b37cf792b","903bb69c5e5ce0cb8f8159a86acca9116275f8c78253db80004fe0d78f436ef4","9daabcf8cac2bd41d4cb83511c0358fc24650fd08f9ae73e888582285a116a3f","82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","691e990c527fc0abefa2cd0922b0dcfd83cf98a3f0c11a96a854f34fc85361f5","6b92208e18bfa294582ff012c43a6f35834e611eed63488799f2d74c25c132d2","e3d221660c0b79a9a3ba1111b3dfbb1136c0b52d7609b0054d3ce09ce711a3e6","892adfd3427fa4ed24bede88e8e46e4cb67e53e794365023fd473f3be796981d","4541d8b29bed87d05434bd0af815a6e2293520f0c4ece541c6dabecdbcb2fc95","9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","992fda06eebba15d37625007500bef5b3fdd1c5e2f5a334064efeb1604c7bce3","07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","abdc0a8843b28c3cafbefb90079690b17b7b4e2a9c9bbf2cd8762e11a3958034","2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","f3e04e6c6db44b9ad05a0b7c89e914b08eee05f2050968b761ed98735d42cd62",{"version":"e5b7d7259363e9b297918668aeee80bc09eb19ebf0dfedc0074c1f91af61fe1e","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"cea31fda262c39189fed04e6eb4ff2459b81deca6f305a9feb6c117365ec3754","signature":"563694b5661a45bf669d37e2ff042c66c25aa2f076f406e75cbd90759105d88e"},{"version":"024c7fc35826156c8f3d05645b2b13da23bcdc540be4c3df75068bf07e8c7f01","signature":"ac063e63131e791f5074c47a64ad33d4c2f4180df1835aea98806e1572d006e6"},"9962e796b20716b18aed4836d6abff7f38e1e946c603246b913d487ba6395671","760cb9b76ab53a2f704ee0e731e162bcfc6af609f5e400a668efe2cc7923e4f4","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","7ec238b220ea991b6643e24191b1f552a65956d5f6de4c6144e700b9985265d8","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","dae3d1adc67ac3dbd1cd471889301339ec439837b5df565982345be20c8fca9a","5426e62886b7be7806312d31a00e8f7dccd6fe63ba9bbefe99ee2eab29cc48a3","8d48b8f8a377ade8dd1f000625bc276eea067f2529cc9cafdf082d17142107d6",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"a1c79f857f5c7754e14c93949dad8cfefcd7df2ecc0dc9dd79a30fd493e28449","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","5759f4fc8d144161afa3200476981479989923195c96ec8b9844152a1825d041","e050a0afcdbb269720a900c85076d18e0c1ab73e580202a2bf6964978181222a","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","763e521cf114b80e0dd0e21ca49b9f8ae62e8999555a5e7bade8ce36b33001c2","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","74986224d4bee6bdfe68db653bb46e389101227ad705065a050ea6dbb171897e","ffcc5500e77223169833fc6eb59b3a507944a1f89574e0a1276b0ea7fc22c4a4","22f13de9e2fe5f0f4724797abd3d34a1cdd6e47ef81fc4933fea3b8bf4ad524b","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2","f72f8428f3c1caa22e9c247d046603b85b442c0dae7b77a7a0bc092c18867cb7",{"version":"195f63105abc03e72b6a176e3e34dfb5ac932b55db378fdc7874b1617e24b465","affectsGlobalScope":true},"2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","29d59e921bc723594bbfc98230d24f38f0d5a669f28fcf989b7468f4f95b7c52","25e05fe63d24c13857e295d74010b5694894f571698e31ae555e0577331a2ce4","93c4fc5b5237c09bc9ed65cb8f0dc1d89034406ab40500b89701341994897142","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","6eef5113135a0f2bbac8259909a5bbb7666bcde022c28f4ab95145623cbe1f72","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","6aee496bf0ecfbf6731aa8cca32f4b6e92cdc0a444911a7d88410408a45ecc5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","31c502014e5ba046d5cb060136929b73fd53f0f989aa37b2b0424644cb0d93ef","76232dbb982272b182a76ad8745a9b02724dc9896e2328ce360e2c56c64c9778","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","28288f5e5f8b7b895ed2abe6359c1da3e0d14a64b5aef985071285671f347c01"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"experimentalDecorators":true,"module":1,"noFallthroughCasesInSwitch":false,"noImplicitAny":false,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":false,"strictNullChecks":false,"target":4},"fileIdsList":[[227,1101],[227],[227,1119],[227,354,356],[227,347,356,357],[227,386],[227,297,386],[227,387,388],[47,227,358,389,391,392],[227,293,347],[227,390],[227,347,354,355],[227,355,356],[227,347],[227,326,334],[227,450],[227,359,360,361,362,363,364,365,366,367,368,369,370,371,372],[227,302,334],[227,326],[227,299,347,450],[227,377,378,379,380,381,382,383,384],[227,304],[227,347,450],[227,373,376,385],[227,374,375],[227,338],[227,304,305,306,307],[227,394],[227,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415],[227,418],[215,227,234,417],[46,227,308,347,354,386,393,416,419,440,445,447,449],[51,227],[51,227,293],[227,302,421],[227,296,423],[227,293,297],[51,227,347],[227,301,302],[227,313],[227,315,316,317,318,319],[227,308,321,325,326],[227,327,328,329],[227,234],[48,49,50,51,52,227,294,295,296,297,298,299,300,301,302,303,313,314,320,325,326,330,331,332,334,342,343,344,345,346],[227,324],[227,309,310,311,312],[227,302,309,310],[227,302,308],[227,302,311],[227,302,338],[227,333,335,336,337,338,339,340,341],[48,227,302],[227,334],[48,227,302,333,337,339],[227,310],[227,335],[227,302,334,335,336],[227,323],[227,302,306,323,342],[227,321,322,324],[227,298,300,314,321,326,327,343,344,347],[52,227,298,300,303,343,344],[227,307],[227,293],[227,323,347,348,352],[227,352,353],[227,347,348],[227,347,348,349],[227,349,350],[227,349,350,351],[227,303],[227,433],[227,433,434,435,436,437,438],[227,425,433],[227,434,435,436,437],[227,303,433,436],[227,420,426,427,428,429,430,431,432,439],[227,303,347,426],[227,303,425],[227,303,425,450],[227,296,302,303,421,422,423,424,425],[227,293,347,421,422,441],[227,347,421],[227,443],[227,386,441],[227,441,442,444],[227,323,446],[227,333],[227,308,347],[227,448],[227,450,1013],[227,1009],[227,1009,1013,1014,1015,1018],[227,1010,1011],[227,1010,1012],[227,1005,1006,1007,1008],[227,1016,1017],[227,1009,1013,1019],[227,1019],[227,321,325,347,450],[227,1050],[227,347,450,1058,1059],[227,1054,1057,1058],[227,1062,1063],[227,450,1051,1065],[227,1066],[227,1058],[227,1065,1068],[46,227,1051,1060,1061,1064,1067,1069,1072,1078,1081,1082,1083,1085,1087,1093,1095],[227,347,1052],[227,302,331,450,1052,1053,1054,1057,1058,1060,1096],[227,1054,1055,1056,1058,1071,1077],[50,227,302,331,450,1057,1058],[227,1070],[227,450,1055,1057,1074],[227,347,450,1057],[227,450,1053,1054,1056,1073,1075,1076],[227,450,1055,1057,1058],[227,302,450],[227,302,347,1055,1056,1058],[227,1057],[227,331],[227,309,313,347,1079],[227,1080],[227,347,1055],[227,302,347,450,1055,1057,1058,1074],[227,314,321,325,450,1051,1055,1060,1082],[227,324,325,450,1050,1084],[227,1086],[214,227,234,450],[227,1089,1091,1092],[227,1088],[227,1090],[227,450,1054,1057,1089],[50,227,302,331,347,450,1055,1057,1060,1072],[227,1094],[227,992,993,994,995,996,997],[227,450,992],[227,998],[227,450,1028,1030],[227,1027,1030,1031,1032,1043,1044],[227,1028,1029],[227,450,1028],[227,1042],[227,1030],[227,1045],[227,821,822],[227,450,819,820],[227,293,450,819,820],[227,823,825,826],[227,819],[227,824],[227,450,819],[227,450,819,820,824],[227,827],[227,1101,1102,1103,1104,1105],[227,1101,1103],[201,227,234,1039],[201,227,234],[227,1109,1111],[227,1108,1109,1110],[198,201,227,234,1033,1034],[227,1034,1035,1038,1040],[199,227,234],[227,1114],[227,1115],[227,1121,1124],[227,1037],[227,1036],[183,227],[186,227],[187,192,218,227],[188,198,199,206,215,226,227],[188,189,198,206,227],[190,227],[191,192,199,207,227],[192,215,223,227],[193,195,198,206,227],[194,227],[195,196,227],[197,198,227],[198,227],[198,199,200,215,226,227],[198,199,200,215,227],[201,206,215,226,227],[198,199,201,202,206,215,223,226,227],[201,203,215,223,226,227],[183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233],[198,204,227],[205,226,227],[195,198,206,215,227],[207,227],[208,227],[186,209,227],[210,225,227,231],[211,227],[212,227],[198,213,227],[213,214,227,229],[187,198,215,216,217,227],[187,215,217,227],[215,216,227],[218,227],[219,227],[198,221,222,227],[221,222,227],[192,206,223,227],[224,227],[206,225,227],[187,201,212,226,227],[192,227],[215,227,228],[227,229],[227,230],[187,192,198,200,209,215,226,227,229,231],[215,227,232],[227,1041,1042,1127],[227,1041,1042],[201,227,1041],[227,1130,1169],[227,1130,1154,1169],[227,1169],[227,1130],[227,1130,1155,1169],[227,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168],[227,1155,1169],[201,227,234,1037],[187,199,201,215,227,234,1107],[227,1172],[227,889,890,891,892,893,894,895,896],[227,897],[227,1174],[227,845],[227,847,848,849,850,851,852,853],[227,836],[227,837,845,846,854],[227,838],[227,832],[227,829,830,831,832,833,834,835,838,839,840,841,842,843,844],[227,837,839],[227,840,845],[227,860],[227,861],[227,860,861,866],[227,862,863,864,865,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979],[227,861,897],[227,861,937],[227,856,857,858,859,860,861,866,980,981,982,983,987],[227,866],[227,858,985,986],[227,860,984],[227,861,866],[227,856,857],[227,1117,1123],[227,1121],[227,1118,1122],[227,936],[227,1120],[53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,69,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,114,115,116,117,118,120,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,172,173,174,176,227,237,239,240,241,242,243,244,246,247,249,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292],[98,227],[56,57,227],[53,54,55,57,227],[54,57,227],[57,98,227],[53,57,175,227],[55,56,57,227],[53,57,227],[57,227],[56,227],[53,56,98,227],[54,56,57,227,266],[56,57,227,266],[56,227,274],[54,56,57,227],[66,227],[89,227],[110,227],[56,57,98,227],[57,105,227],[56,57,98,116,227],[56,57,116,227],[57,157,227],[53,57,176,227],[182,227,236],[53,57,175,182,227,235],[175,176,227,236],[182,227],[53,57,182,227,235,236],[227,250],[227,245],[227,248],[54,56,176,177,178,179,227],[98,176,177,178,179,227],[176,178,227],[56,177,178,180,181,227,237],[53,56,227],[57,227,252],[58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104,106,107,108,109,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,227],[227,238],[227,510,627],[227,459,819],[227,513],[227,615],[227,611,615],[227,611],[227,472,506,507,508,509,511,512,615],[227,459,460,469,472,509,511,514,520,549,566,567,569,571,573,574,575,576,611,612,613,614,620,627,647],[227,578,580,582,583,592,594,595,596,597,598,599,600,602,604,605,606,607,610],[227,506],[227,759],[227,779],[227,463,465,466,493,728,729,730,731,732,733],[227,466],[227,463,466],[227,737,738,739],[227,744],[227,772],[227,760],[227,464],[227,463,464,465],[227,499],[227,495],[227,463],[227,454,455,456],[227,454],[227,496,497],[227,457,459],[227,647],[227,617,618],[227,455],[227,463,469,471,485,486,487,490,491,513,514,516,518,519,620,626,627],[227,488],[227,513,601],[223,227],[227,513,577],[227,513,525],[227,469,471,489,514,516,518,524,525,539,551,555,559,566,615,624,626,627],[227,524],[227,513,579],[227,513,593],[227,513,581],[227,513,603],[227,608,609],[227,584,585,586,587,588,589,590],[227,513,591],[227,459,460,469,525,527,531,532,533,534,535,561,563,564,565,567,569,570,571,572,574,615,627,647],[227,460,469,485,525,527,528,536,537,560,561,563,564,565,573,615,620],[227,573,615,627],[227,505],[227,463,464,493],[227,492,494,498,499,500,501,502,503,504,819],[227,453,454,455,456,460,495,496,497],[227,664],[227,620,664],[227,463,485,508,664],[227,460,664],[227,474,664],[227,474,620,664],[227,664,668],[227,520,664],[227,664,665,666,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726],[227,523],[227,531],[227,521,527,528,529,530],[227,469,522],[227,525],[227,469,531,532,568,620,647],[227,523,525,526],[227,536],[227,469,531],[227,523,526],[227,469,523],[227,459,460,469,566,567,569,573,574,611,612,615,647,659,660],[46,227,457,459,460,463,464,466,469,470,471,472,492,494,495,497,498,499,505,506,507,508,509,512,514,515,517,518,520,521,522,523,525,526,527,528,529,530,531,532,533,534,535,538,539,540,541,542,543,544,545,546,547,548,549,552,555,556,559,562,563,564,565,566,567,568,569,573,574,575,576,611,615,620,623,624,625,626,627,637,638,639,640,643,644,645,646,647,660,661,662,663,727,734,735,736,740,741,742,743,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,773,774,775,776,777,778,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,807,808,809,810,811,812,813,814,816,818],[227,507,509,627],[227,627],[227,466,467],[227,479],[227,460],[227,650],[227,462,468,475,476,480,482,553,557,616,619,621,648,649,650,651,652,653,654,655,656,657,658],[227,453,457,458,461],[227,499,500,819],[227,472,553,620],[227,463,464,468,469,474,484,615,620],[227,474,475,477,478,481,483,485,615,620,622],[227,469,479,480,484,620],[227,469,473,474,477,478,481,483,484,485,499,500,554,558,615,616,617,618,619,622,819],[227,472,557,620],[227,454,455,456,472,485,620],[227,472,484,485,620,621],[227,474,620,647,648],[227,469,474,476,620,647],[227,453,454,455,456,458,462,469,473,484,485,620],[227,454,472,482,484,485,620],[227,485],[227,575],[227,576,615,627],[227,472,626],[227,626],[227,469,474,485,620,667],[227,474,485,668],[198,199,215,227],[227,620],[227,638],[227,460,469,565,615,627,637,638,646],[227,460,469,485,561,563,642,646],[227,474,615,620,629,636],[227,637],[227,460,469,485,520,561,615,620,627,628,629,635,636,637,639,640,641,643,644,645,647],[227,469,474,485,499,615,620,628,629,630,631,632,633,634,635,646],[227,469],[227,469,474,615,647],[227,469,474,615,627,647],[227,469,646],[227,460,469,474,499,524,527,528,529,530,532,620,627,633,634,636,637,638,646],[227,460,469,499,564,615,627,637,638,646],[227,469,499,561,564,615,627,637,638,646],[227,469,637],[227,474,620,636,647],[227,562],[227,469,562],[227,469,620],[227,469,471,489,514,516,518,524,539,551,555,559,562,571,573,615,624,626],[227,459,469,569,573,574,647],[227,460,525,527,531,532,533,534,535,561,563,564,565,572,574,647,806],[227,469,525,531,536,537,566,574,627,647],[227,460,469,525,527,531,532,533,534,535,561,563,564,565,572,573,627,647,819],[227,469,568,574,647],[227,470,485,489,490,615,620,627],[227,489],[227,470,517,538,552,556,623],[227,471,518,520,539,555,559,620,624,625],[227,552,554],[227,470],[227,556,558],[227,473,517,520],[227,622,623],[227,483,538],[227,515,819],[227,469,474,485,549,550,620,627],[227,540,541,542,543,544,545,546,547,548],[227,573,615,620,627],[227,544],[227,469,474,485,573,615,620,627],[227,471,485,488,506,516,518,523,526,539,555,559,566,612,620,624,626,637,639,640,641,643,644,645,646,647,668,806,807,808,815],[227,573,620,817],[227,450,451],[227,450,451,452,828,1004,1020,1025,1048],[227,450,1041],[227,450,1004,1026,1047],[227,450,1046],[227,450,1026,1046],[227,988],[227,988,989],[227,999,1021],[227,819,988,990],[227,450,989,991,1021,1022,1023],[227,450,819,828,989,990,1021,1022],[227,450,828,989,990,1023,1024],[227,450,1049,1096],[227,1004,1025,1096],[227,819,988],[227,991,999],[227,819,855,988,989],[227,450,991,1000,1001,1002],[227,450,828,989,990,1002,1003],[227,293,450,819,828,988,989,990,991,1000,1001],[451],[1041],[450,1046],[1026],[989],[999,1021],[819,989,990,1021,1022],[991,999],[819,989,990,991,1000,1001]],"referencedMap":[[1103,1],[1101,2],[1117,2],[1120,3],[47,2],[357,4],[358,5],[387,6],[388,7],[389,8],[393,9],[390,10],[391,11],[355,2],[356,12],[392,13],[371,2],[359,2],[360,14],[361,15],[362,2],[363,16],[373,17],[364,2],[365,18],[366,2],[367,2],[368,14],[369,14],[370,14],[372,19],[380,20],[382,2],[379,2],[385,21],[383,2],[381,2],[377,22],[378,23],[384,2],[386,24],[374,2],[376,25],[375,26],[305,2],[308,27],[304,2],[306,2],[307,2],[410,28],[395,28],[402,28],[399,28],[412,28],[403,28],[409,28],[394,2],[413,28],[416,29],[407,28],[397,28],[415,28],[400,28],[398,28],[408,28],[404,28],[414,28],[401,28],[411,28],[396,28],[406,28],[405,28],[419,30],[418,31],[417,2],[450,32],[48,2],[49,2],[50,2],[52,33],[294,34],[295,33],[421,2],[321,2],[322,2],[422,35],[296,2],[423,2],[424,36],[51,2],[298,37],[299,2],[297,38],[300,37],[301,2],[303,39],[314,40],[315,2],[320,41],[316,2],[317,2],[318,2],[319,2],[327,42],[330,43],[328,2],[329,44],[347,45],[331,2],[332,2],[1084,46],[313,47],[311,48],[309,49],[310,50],[312,2],[339,51],[333,2],[342,52],[335,53],[340,54],[338,55],[341,56],[336,57],[337,58],[324,59],[343,60],[325,61],[345,62],[346,63],[334,2],[302,2],[326,64],[344,65],[353,66],[348,2],[354,67],[349,68],[350,69],[351,70],[352,71],[420,72],[434,73],[433,2],[439,74],[435,73],[436,75],[438,76],[437,77],[440,78],[427,79],[428,80],[431,81],[430,81],[429,80],[432,80],[426,82],[442,83],[441,84],[444,85],[443,86],[445,87],[446,59],[447,88],[323,2],[448,89],[425,90],[449,91],[1014,92],[1015,93],[1019,94],[1010,93],[1012,95],[1013,96],[1005,2],[1006,2],[1009,97],[1007,2],[1008,2],[1017,2],[1018,98],[1016,99],[1020,100],[1050,101],[1051,102],[1060,103],[1061,2],[1062,2],[1063,104],[1064,105],[1066,106],[1067,107],[1068,108],[1065,102],[1069,109],[1096,110],[1053,111],[1055,112],[1078,113],[1074,114],[1071,115],[1070,2],[1075,116],[1058,117],[1076,2],[1077,118],[1056,119],[1052,120],[1057,121],[1054,122],[1072,123],[1080,124],[1081,125],[1079,126],[1082,127],[1083,128],[1085,129],[1087,130],[1086,131],[1093,132],[1059,16],[1089,133],[1088,16],[1091,134],[1090,2],[1092,135],[1073,136],[1095,137],[1094,16],[998,138],[993,139],[992,16],[994,139],[995,139],[996,139],[997,16],[999,140],[1027,2],[1031,141],[1045,142],[1028,16],[1030,143],[1029,2],[1032,144],[1043,145],[1044,146],[1046,147],[823,148],[821,149],[822,150],[827,151],[820,152],[825,153],[824,154],[826,155],[828,156],[1119,2],[1106,157],[1102,1],[1104,158],[1105,1],[1040,159],[1039,160],[1107,2],[1112,161],[1108,2],[1111,162],[1109,2],[1035,163],[1041,164],[1113,165],[1114,2],[1115,166],[1116,167],[1125,168],[1110,2],[1036,169],[1037,170],[183,171],[184,171],[186,172],[187,173],[188,174],[189,175],[190,176],[191,177],[192,178],[193,179],[194,180],[195,181],[196,181],[197,182],[198,183],[199,184],[200,185],[185,2],[233,2],[201,186],[202,187],[203,188],[234,189],[204,190],[205,191],[206,192],[207,193],[208,194],[209,195],[210,196],[211,197],[212,198],[213,199],[214,200],[215,201],[217,202],[216,203],[218,204],[219,205],[220,2],[221,206],[222,207],[223,208],[224,209],[225,210],[226,211],[227,212],[228,213],[229,214],[230,215],[231,216],[232,217],[1126,2],[1128,218],[1127,219],[1042,220],[1129,2],[1034,2],[1033,2],[1154,221],[1155,222],[1130,223],[1133,223],[1152,221],[1153,221],[1143,221],[1142,224],[1140,221],[1135,221],[1148,221],[1146,221],[1150,221],[1134,221],[1147,221],[1151,221],[1136,221],[1137,221],[1149,221],[1131,221],[1138,221],[1139,221],[1141,221],[1145,221],[1156,225],[1144,221],[1132,221],[1169,226],[1168,2],[1163,225],[1165,227],[1164,225],[1157,225],[1158,225],[1160,225],[1162,225],[1166,227],[1167,227],[1159,227],[1161,227],[1038,228],[1170,2],[1172,229],[1173,230],[897,231],[889,232],[890,2],[891,2],[892,2],[893,2],[894,2],[896,2],[895,2],[1174,2],[1175,233],[1171,2],[846,234],[847,234],[848,234],[854,235],[849,234],[850,234],[851,234],[852,234],[853,234],[837,236],[836,2],[855,237],[843,2],[839,238],[830,2],[829,2],[831,2],[832,234],[833,239],[845,240],[834,234],[835,234],[840,241],[841,242],[842,234],[838,2],[844,2],[859,2],[861,243],[972,244],[976,244],[975,244],[973,244],[974,244],[977,244],[862,244],[874,244],[863,244],[876,244],[878,244],[871,244],[872,244],[873,244],[877,244],[879,244],[864,244],[875,244],[865,244],[867,245],[868,244],[869,244],[870,244],[886,244],[885,244],[980,246],[880,244],[882,244],[881,244],[883,244],[884,244],[979,244],[978,244],[887,244],[898,247],[899,247],[901,244],[946,244],[945,244],[902,244],[943,244],[947,244],[903,244],[904,244],[905,247],[948,244],[942,247],[900,247],[949,244],[906,247],[950,244],[907,247],[930,244],[908,244],[951,244],[909,244],[940,247],[911,244],[912,244],[952,244],[914,244],[916,244],[917,244],[923,244],[924,244],[918,247],[954,244],[941,247],[953,247],[919,244],[920,244],[955,244],[921,244],[913,247],[956,244],[939,244],[957,244],[922,247],[925,244],[926,244],[944,247],[958,244],[959,244],[938,248],[915,244],[960,247],[961,244],[962,244],[963,244],[927,244],[929,244],[931,244],[928,247],[910,244],[932,244],[935,244],[933,244],[934,244],[888,244],[970,244],[964,244],[965,244],[967,244],[968,244],[966,244],[971,244],[969,244],[988,249],[986,250],[987,251],[985,252],[984,244],[983,253],[858,2],[860,2],[856,2],[981,2],[982,254],[866,243],[857,2],[1011,44],[1124,255],[1122,256],[1123,257],[1118,2],[937,258],[936,2],[1121,259],[46,2],[293,260],[266,2],[244,261],[242,261],[105,262],[56,263],[55,264],[243,265],[176,266],[98,267],[54,268],[53,269],[292,264],[257,270],[256,270],[116,271],[264,262],[265,262],[267,272],[268,262],[269,269],[270,262],[241,262],[271,262],[272,273],[273,262],[274,270],[275,274],[276,262],[277,262],[278,262],[279,262],[280,270],[281,262],[282,262],[283,262],[284,262],[285,275],[286,262],[287,262],[288,262],[289,262],[290,262],[58,269],[59,269],[60,262],[61,269],[62,269],[63,269],[64,269],[65,262],[67,276],[68,269],[66,269],[69,269],[70,269],[71,269],[72,269],[73,269],[74,269],[75,262],[76,269],[77,269],[78,269],[79,269],[80,269],[81,262],[82,269],[83,262],[84,269],[85,269],[86,269],[87,269],[88,262],[90,277],[89,269],[91,269],[92,269],[93,269],[94,269],[95,275],[96,262],[97,262],[111,278],[99,279],[100,269],[101,269],[102,262],[103,269],[104,269],[106,280],[107,269],[108,269],[109,269],[110,269],[112,269],[113,269],[114,269],[115,269],[117,281],[118,269],[119,269],[120,269],[121,262],[122,269],[123,282],[124,282],[125,282],[126,262],[127,269],[128,269],[129,269],[134,269],[130,269],[131,262],[132,269],[133,262],[135,262],[136,269],[137,269],[138,262],[139,262],[140,269],[141,262],[142,269],[143,269],[144,262],[145,269],[146,269],[147,269],[148,269],[149,269],[150,269],[151,269],[152,269],[153,269],[154,269],[155,269],[156,269],[157,269],[158,283],[159,269],[160,269],[161,269],[162,269],[163,269],[164,269],[165,262],[166,262],[167,262],[168,262],[169,262],[170,269],[171,269],[172,269],[173,269],[291,262],[175,284],[250,285],[245,285],[236,286],[182,287],[248,288],[237,289],[251,290],[246,291],[247,288],[249,292],[235,44],[240,2],[180,293],[181,294],[178,2],[179,295],[177,269],[238,296],[57,297],[258,2],[259,2],[260,2],[261,2],[262,2],[263,2],[252,2],[255,270],[254,2],[253,298],[174,299],[239,300],[511,301],[510,2],[533,2],[460,302],[512,2],[469,2],[459,2],[663,2],[608,303],[811,304],[660,305],[810,306],[809,306],[662,2],[513,307],[615,308],[611,309],[806,305],[781,2],[784,310],[782,2],[783,2],[778,311],[780,312],[734,313],[735,314],[736,314],[746,314],[741,315],[740,316],[742,314],[743,314],[745,317],[773,318],[770,2],[769,319],[771,314],[747,2],[748,2],[751,2],[749,2],[750,2],[752,2],[753,2],[756,2],[754,2],[755,2],[757,2],[758,2],[465,320],[731,2],[730,2],[732,2],[729,2],[466,321],[728,2],[733,2],[760,322],[759,2],[495,2],[496,323],[497,323],[739,324],[737,324],[738,2],[457,325],[493,2],[779,326],[464,2],[744,320],[772,152],[761,323],[762,327],[763,328],[764,328],[765,328],[766,328],[767,329],[768,329],[777,330],[776,2],[774,2],[775,331],[520,332],[488,2],[489,333],[601,2],[602,334],[605,303],[606,303],[607,303],[577,335],[578,336],[596,303],[600,303],[595,337],[560,338],[525,339],[579,2],[580,340],[599,303],[593,2],[594,341],[581,335],[582,342],[598,303],[603,2],[604,343],[609,2],[610,344],[583,303],[597,303],[808,2],[591,345],[592,346],[585,2],[586,2],[587,2],[588,2],[589,2],[584,2],[590,2],[463,2],[486,2],[491,2],[508,2],[571,2],[487,324],[514,2],[519,2],[573,347],[566,348],[612,349],[506,350],[502,2],[494,351],[814,310],[503,2],[492,2],[505,352],[504,329],[498,353],[501,326],[666,354],[689,354],[670,354],[673,355],[675,354],[725,354],[701,354],[665,354],[693,354],[722,354],[672,354],[702,354],[687,354],[690,354],[678,354],[712,356],[707,354],[700,354],[682,357],[681,357],[698,355],[708,354],[713,358],[704,354],[685,354],[671,354],[674,354],[706,354],[691,355],[699,354],[696,359],[714,359],[697,355],[683,354],[709,354],[692,354],[726,354],[716,354],[703,354],[724,354],[705,354],[684,354],[720,354],[710,354],[686,354],[715,354],[723,354],[688,354],[711,357],[694,354],[719,360],[669,360],[680,354],[679,354],[677,361],[664,2],[676,354],[721,359],[717,359],[695,359],[718,359],[727,362],[526,363],[532,364],[531,365],[523,366],[522,2],[530,367],[529,367],[528,367],[801,368],[527,369],[568,2],[521,2],[499,2],[537,370],[536,371],[785,363],[786,363],[787,363],[788,363],[789,363],[790,372],[795,363],[791,363],[792,363],[793,363],[794,363],[796,363],[797,363],[798,363],[799,363],[800,373],[661,374],[819,375],[802,376],[804,376],[509,377],[507,2],[803,376],[553,2],[468,378],[654,2],[475,2],[480,379],[655,380],[652,2],[557,2],[658,2],[621,2],[653,314],[650,2],[651,381],[659,382],[649,2],[648,329],[476,329],[462,383],[616,384],[656,2],[657,2],[619,330],[482,326],[467,2],[554,385],[485,386],[484,387],[481,388],[620,389],[558,390],[473,391],[622,392],[478,393],[477,394],[474,395],[483,396],[618,397],[454,2],[479,2],[455,2],[456,2],[458,2],[461,380],[453,2],[500,2],[617,2],[576,398],[812,399],[575,377],[813,400],[472,401],[668,402],[667,403],[524,404],[629,405],[637,406],[640,407],[642,2],[643,408],[630,409],[645,410],[646,411],[628,2],[636,412],[561,413],[614,414],[613,415],[644,416],[633,2],[647,417],[634,2],[641,418],[639,419],[635,2],[638,420],[632,421],[631,421],[565,422],[563,423],[564,423],[570,424],[562,2],[627,425],[805,426],[807,427],[817,2],[567,428],[535,2],[574,429],[534,2],[569,430],[572,2],[815,431],[490,432],[552,2],[470,2],[556,2],[517,2],[623,2],[625,433],[538,2],[515,152],[626,434],[555,435],[471,436],[559,437],[518,438],[624,439],[539,440],[516,441],[551,442],[550,2],[549,443],[545,444],[546,444],[548,445],[544,444],[547,445],[540,349],[541,349],[542,349],[543,446],[816,447],[818,448],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[45,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[44,2],[11,2],[10,2],[452,449],[1049,450],[451,16],[1098,451],[1048,452],[1026,16],[1099,453],[1047,454],[1001,455],[1021,456],[1022,457],[989,458],[1024,459],[1023,460],[1025,461],[1097,462],[1100,463],[991,464],[1000,465],[990,466],[1003,467],[1004,468],[1002,469]],"exportedModulesMap":[[1103,1],[1101,2],[1117,2],[1120,3],[47,2],[357,4],[358,5],[387,6],[388,7],[389,8],[393,9],[390,10],[391,11],[355,2],[356,12],[392,13],[371,2],[359,2],[360,14],[361,15],[362,2],[363,16],[373,17],[364,2],[365,18],[366,2],[367,2],[368,14],[369,14],[370,14],[372,19],[380,20],[382,2],[379,2],[385,21],[383,2],[381,2],[377,22],[378,23],[384,2],[386,24],[374,2],[376,25],[375,26],[305,2],[308,27],[304,2],[306,2],[307,2],[410,28],[395,28],[402,28],[399,28],[412,28],[403,28],[409,28],[394,2],[413,28],[416,29],[407,28],[397,28],[415,28],[400,28],[398,28],[408,28],[404,28],[414,28],[401,28],[411,28],[396,28],[406,28],[405,28],[419,30],[418,31],[417,2],[450,32],[48,2],[49,2],[50,2],[52,33],[294,34],[295,33],[421,2],[321,2],[322,2],[422,35],[296,2],[423,2],[424,36],[51,2],[298,37],[299,2],[297,38],[300,37],[301,2],[303,39],[314,40],[315,2],[320,41],[316,2],[317,2],[318,2],[319,2],[327,42],[330,43],[328,2],[329,44],[347,45],[331,2],[332,2],[1084,46],[313,47],[311,48],[309,49],[310,50],[312,2],[339,51],[333,2],[342,52],[335,53],[340,54],[338,55],[341,56],[336,57],[337,58],[324,59],[343,60],[325,61],[345,62],[346,63],[334,2],[302,2],[326,64],[344,65],[353,66],[348,2],[354,67],[349,68],[350,69],[351,70],[352,71],[420,72],[434,73],[433,2],[439,74],[435,73],[436,75],[438,76],[437,77],[440,78],[427,79],[428,80],[431,81],[430,81],[429,80],[432,80],[426,82],[442,83],[441,84],[444,85],[443,86],[445,87],[446,59],[447,88],[323,2],[448,89],[425,90],[449,91],[1014,92],[1015,93],[1019,94],[1010,93],[1012,95],[1013,96],[1005,2],[1006,2],[1009,97],[1007,2],[1008,2],[1017,2],[1018,98],[1016,99],[1020,100],[1050,101],[1051,102],[1060,103],[1061,2],[1062,2],[1063,104],[1064,105],[1066,106],[1067,107],[1068,108],[1065,102],[1069,109],[1096,110],[1053,111],[1055,112],[1078,113],[1074,114],[1071,115],[1070,2],[1075,116],[1058,117],[1076,2],[1077,118],[1056,119],[1052,120],[1057,121],[1054,122],[1072,123],[1080,124],[1081,125],[1079,126],[1082,127],[1083,128],[1085,129],[1087,130],[1086,131],[1093,132],[1059,16],[1089,133],[1088,16],[1091,134],[1090,2],[1092,135],[1073,136],[1095,137],[1094,16],[998,138],[993,139],[992,16],[994,139],[995,139],[996,139],[997,16],[999,140],[1027,2],[1031,141],[1045,142],[1028,16],[1030,143],[1029,2],[1032,144],[1043,145],[1044,146],[1046,147],[823,148],[821,149],[822,150],[827,151],[820,152],[825,153],[824,154],[826,155],[828,156],[1119,2],[1106,157],[1102,1],[1104,158],[1105,1],[1040,159],[1039,160],[1107,2],[1112,161],[1108,2],[1111,162],[1109,2],[1035,163],[1041,164],[1113,165],[1114,2],[1115,166],[1116,167],[1125,168],[1110,2],[1036,169],[1037,170],[183,171],[184,171],[186,172],[187,173],[188,174],[189,175],[190,176],[191,177],[192,178],[193,179],[194,180],[195,181],[196,181],[197,182],[198,183],[199,184],[200,185],[185,2],[233,2],[201,186],[202,187],[203,188],[234,189],[204,190],[205,191],[206,192],[207,193],[208,194],[209,195],[210,196],[211,197],[212,198],[213,199],[214,200],[215,201],[217,202],[216,203],[218,204],[219,205],[220,2],[221,206],[222,207],[223,208],[224,209],[225,210],[226,211],[227,212],[228,213],[229,214],[230,215],[231,216],[232,217],[1126,2],[1128,218],[1127,219],[1042,220],[1129,2],[1034,2],[1033,2],[1154,221],[1155,222],[1130,223],[1133,223],[1152,221],[1153,221],[1143,221],[1142,224],[1140,221],[1135,221],[1148,221],[1146,221],[1150,221],[1134,221],[1147,221],[1151,221],[1136,221],[1137,221],[1149,221],[1131,221],[1138,221],[1139,221],[1141,221],[1145,221],[1156,225],[1144,221],[1132,221],[1169,226],[1168,2],[1163,225],[1165,227],[1164,225],[1157,225],[1158,225],[1160,225],[1162,225],[1166,227],[1167,227],[1159,227],[1161,227],[1038,228],[1170,2],[1172,229],[1173,230],[897,231],[889,232],[890,2],[891,2],[892,2],[893,2],[894,2],[896,2],[895,2],[1174,2],[1175,233],[1171,2],[846,234],[847,234],[848,234],[854,235],[849,234],[850,234],[851,234],[852,234],[853,234],[837,236],[836,2],[855,237],[843,2],[839,238],[830,2],[829,2],[831,2],[832,234],[833,239],[845,240],[834,234],[835,234],[840,241],[841,242],[842,234],[838,2],[844,2],[859,2],[861,243],[972,244],[976,244],[975,244],[973,244],[974,244],[977,244],[862,244],[874,244],[863,244],[876,244],[878,244],[871,244],[872,244],[873,244],[877,244],[879,244],[864,244],[875,244],[865,244],[867,245],[868,244],[869,244],[870,244],[886,244],[885,244],[980,246],[880,244],[882,244],[881,244],[883,244],[884,244],[979,244],[978,244],[887,244],[898,247],[899,247],[901,244],[946,244],[945,244],[902,244],[943,244],[947,244],[903,244],[904,244],[905,247],[948,244],[942,247],[900,247],[949,244],[906,247],[950,244],[907,247],[930,244],[908,244],[951,244],[909,244],[940,247],[911,244],[912,244],[952,244],[914,244],[916,244],[917,244],[923,244],[924,244],[918,247],[954,244],[941,247],[953,247],[919,244],[920,244],[955,244],[921,244],[913,247],[956,244],[939,244],[957,244],[922,247],[925,244],[926,244],[944,247],[958,244],[959,244],[938,248],[915,244],[960,247],[961,244],[962,244],[963,244],[927,244],[929,244],[931,244],[928,247],[910,244],[932,244],[935,244],[933,244],[934,244],[888,244],[970,244],[964,244],[965,244],[967,244],[968,244],[966,244],[971,244],[969,244],[988,249],[986,250],[987,251],[985,252],[984,244],[983,253],[858,2],[860,2],[856,2],[981,2],[982,254],[866,243],[857,2],[1011,44],[1124,255],[1122,256],[1123,257],[1118,2],[937,258],[936,2],[1121,259],[46,2],[293,260],[266,2],[244,261],[242,261],[105,262],[56,263],[55,264],[243,265],[176,266],[98,267],[54,268],[53,269],[292,264],[257,270],[256,270],[116,271],[264,262],[265,262],[267,272],[268,262],[269,269],[270,262],[241,262],[271,262],[272,273],[273,262],[274,270],[275,274],[276,262],[277,262],[278,262],[279,262],[280,270],[281,262],[282,262],[283,262],[284,262],[285,275],[286,262],[287,262],[288,262],[289,262],[290,262],[58,269],[59,269],[60,262],[61,269],[62,269],[63,269],[64,269],[65,262],[67,276],[68,269],[66,269],[69,269],[70,269],[71,269],[72,269],[73,269],[74,269],[75,262],[76,269],[77,269],[78,269],[79,269],[80,269],[81,262],[82,269],[83,262],[84,269],[85,269],[86,269],[87,269],[88,262],[90,277],[89,269],[91,269],[92,269],[93,269],[94,269],[95,275],[96,262],[97,262],[111,278],[99,279],[100,269],[101,269],[102,262],[103,269],[104,269],[106,280],[107,269],[108,269],[109,269],[110,269],[112,269],[113,269],[114,269],[115,269],[117,281],[118,269],[119,269],[120,269],[121,262],[122,269],[123,282],[124,282],[125,282],[126,262],[127,269],[128,269],[129,269],[134,269],[130,269],[131,262],[132,269],[133,262],[135,262],[136,269],[137,269],[138,262],[139,262],[140,269],[141,262],[142,269],[143,269],[144,262],[145,269],[146,269],[147,269],[148,269],[149,269],[150,269],[151,269],[152,269],[153,269],[154,269],[155,269],[156,269],[157,269],[158,283],[159,269],[160,269],[161,269],[162,269],[163,269],[164,269],[165,262],[166,262],[167,262],[168,262],[169,262],[170,269],[171,269],[172,269],[173,269],[291,262],[175,284],[250,285],[245,285],[236,286],[182,287],[248,288],[237,289],[251,290],[246,291],[247,288],[249,292],[235,44],[240,2],[180,293],[181,294],[178,2],[179,295],[177,269],[238,296],[57,297],[258,2],[259,2],[260,2],[261,2],[262,2],[263,2],[252,2],[255,270],[254,2],[253,298],[174,299],[239,300],[511,301],[510,2],[533,2],[460,302],[512,2],[469,2],[459,2],[663,2],[608,303],[811,304],[660,305],[810,306],[809,306],[662,2],[513,307],[615,308],[611,309],[806,305],[781,2],[784,310],[782,2],[783,2],[778,311],[780,312],[734,313],[735,314],[736,314],[746,314],[741,315],[740,316],[742,314],[743,314],[745,317],[773,318],[770,2],[769,319],[771,314],[747,2],[748,2],[751,2],[749,2],[750,2],[752,2],[753,2],[756,2],[754,2],[755,2],[757,2],[758,2],[465,320],[731,2],[730,2],[732,2],[729,2],[466,321],[728,2],[733,2],[760,322],[759,2],[495,2],[496,323],[497,323],[739,324],[737,324],[738,2],[457,325],[493,2],[779,326],[464,2],[744,320],[772,152],[761,323],[762,327],[763,328],[764,328],[765,328],[766,328],[767,329],[768,329],[777,330],[776,2],[774,2],[775,331],[520,332],[488,2],[489,333],[601,2],[602,334],[605,303],[606,303],[607,303],[577,335],[578,336],[596,303],[600,303],[595,337],[560,338],[525,339],[579,2],[580,340],[599,303],[593,2],[594,341],[581,335],[582,342],[598,303],[603,2],[604,343],[609,2],[610,344],[583,303],[597,303],[808,2],[591,345],[592,346],[585,2],[586,2],[587,2],[588,2],[589,2],[584,2],[590,2],[463,2],[486,2],[491,2],[508,2],[571,2],[487,324],[514,2],[519,2],[573,347],[566,348],[612,349],[506,350],[502,2],[494,351],[814,310],[503,2],[492,2],[505,352],[504,329],[498,353],[501,326],[666,354],[689,354],[670,354],[673,355],[675,354],[725,354],[701,354],[665,354],[693,354],[722,354],[672,354],[702,354],[687,354],[690,354],[678,354],[712,356],[707,354],[700,354],[682,357],[681,357],[698,355],[708,354],[713,358],[704,354],[685,354],[671,354],[674,354],[706,354],[691,355],[699,354],[696,359],[714,359],[697,355],[683,354],[709,354],[692,354],[726,354],[716,354],[703,354],[724,354],[705,354],[684,354],[720,354],[710,354],[686,354],[715,354],[723,354],[688,354],[711,357],[694,354],[719,360],[669,360],[680,354],[679,354],[677,361],[664,2],[676,354],[721,359],[717,359],[695,359],[718,359],[727,362],[526,363],[532,364],[531,365],[523,366],[522,2],[530,367],[529,367],[528,367],[801,368],[527,369],[568,2],[521,2],[499,2],[537,370],[536,371],[785,363],[786,363],[787,363],[788,363],[789,363],[790,372],[795,363],[791,363],[792,363],[793,363],[794,363],[796,363],[797,363],[798,363],[799,363],[800,373],[661,374],[819,375],[802,376],[804,376],[509,377],[507,2],[803,376],[553,2],[468,378],[654,2],[475,2],[480,379],[655,380],[652,2],[557,2],[658,2],[621,2],[653,314],[650,2],[651,381],[659,382],[649,2],[648,329],[476,329],[462,383],[616,384],[656,2],[657,2],[619,330],[482,326],[467,2],[554,385],[485,386],[484,387],[481,388],[620,389],[558,390],[473,391],[622,392],[478,393],[477,394],[474,395],[483,396],[618,397],[454,2],[479,2],[455,2],[456,2],[458,2],[461,380],[453,2],[500,2],[617,2],[576,398],[812,399],[575,377],[813,400],[472,401],[668,402],[667,403],[524,404],[629,405],[637,406],[640,407],[642,2],[643,408],[630,409],[645,410],[646,411],[628,2],[636,412],[561,413],[614,414],[613,415],[644,416],[633,2],[647,417],[634,2],[641,418],[639,419],[635,2],[638,420],[632,421],[631,421],[565,422],[563,423],[564,423],[570,424],[562,2],[627,425],[805,426],[807,427],[817,2],[567,428],[535,2],[574,429],[534,2],[569,430],[572,2],[815,431],[490,432],[552,2],[470,2],[556,2],[517,2],[623,2],[625,433],[538,2],[515,152],[626,434],[555,435],[471,436],[559,437],[518,438],[624,439],[539,440],[516,441],[551,442],[550,2],[549,443],[545,444],[546,444],[548,445],[544,444],[547,445],[540,349],[541,349],[542,349],[543,446],[816,447],[818,448],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[45,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[44,2],[11,2],[10,2],[452,470],[1098,471],[1099,472],[1047,473],[1021,474],[1022,475],[1024,459],[1023,476],[1100,463],[1000,477],[990,474],[1003,467],[1002,478]],"semanticDiagnosticsPerFile":[1103,1101,1117,1120,47,357,358,387,388,389,393,390,391,355,356,392,371,359,360,361,362,363,373,364,365,366,367,368,369,370,372,380,382,379,385,383,381,377,378,384,386,374,376,375,305,308,304,306,307,410,395,402,399,412,403,409,394,413,416,407,397,415,400,398,408,404,414,401,411,396,406,405,419,418,417,450,48,49,50,52,294,295,421,321,322,422,296,423,424,51,298,299,297,300,301,303,314,315,320,316,317,318,319,327,330,328,329,347,331,332,1084,313,311,309,310,312,339,333,342,335,340,338,341,336,337,324,343,325,345,346,334,302,326,344,353,348,354,349,350,351,352,420,434,433,439,435,436,438,437,440,427,428,431,430,429,432,426,442,441,444,443,445,446,447,323,448,425,449,1014,1015,1019,1010,1012,1013,1005,1006,1009,1007,1008,1017,1018,1016,1020,1050,1051,1060,1061,1062,1063,1064,1066,1067,1068,1065,1069,1096,1053,1055,1078,1074,1071,1070,1075,1058,1076,1077,1056,1052,1057,1054,1072,1080,1081,1079,1082,1083,1085,1087,1086,1093,1059,1089,1088,1091,1090,1092,1073,1095,1094,998,993,992,994,995,996,997,999,1027,1031,1045,1028,1030,1029,1032,1043,1044,1046,823,821,822,827,820,825,824,826,828,1119,1106,1102,1104,1105,1040,1039,1107,1112,1108,1111,1109,1035,1041,1113,1114,1115,1116,1125,1110,1036,1037,183,184,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,185,233,201,202,203,234,204,205,206,207,208,209,210,211,212,213,214,215,217,216,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,1126,1128,1127,1042,1129,1034,1033,1154,1155,1130,1133,1152,1153,1143,1142,1140,1135,1148,1146,1150,1134,1147,1151,1136,1137,1149,1131,1138,1139,1141,1145,1156,1144,1132,1169,1168,1163,1165,1164,1157,1158,1160,1162,1166,1167,1159,1161,1038,1170,1172,1173,897,889,890,891,892,893,894,896,895,1174,1175,1171,846,847,848,854,849,850,851,852,853,837,836,855,843,839,830,829,831,832,833,845,834,835,840,841,842,838,844,859,861,972,976,975,973,974,977,862,874,863,876,878,871,872,873,877,879,864,875,865,867,868,869,870,886,885,980,880,882,881,883,884,979,978,887,898,899,901,946,945,902,943,947,903,904,905,948,942,900,949,906,950,907,930,908,951,909,940,911,912,952,914,916,917,923,924,918,954,941,953,919,920,955,921,913,956,939,957,922,925,926,944,958,959,938,915,960,961,962,963,927,929,931,928,910,932,935,933,934,888,970,964,965,967,968,966,971,969,988,986,987,985,984,983,858,860,856,981,982,866,857,1011,1124,1122,1123,1118,937,936,1121,46,293,266,244,242,105,56,55,243,176,98,54,53,292,257,256,116,264,265,267,268,269,270,241,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,58,59,60,61,62,63,64,65,67,68,66,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,90,89,91,92,93,94,95,96,97,111,99,100,101,102,103,104,106,107,108,109,110,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,134,130,131,132,133,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,291,175,250,245,236,182,248,237,251,246,247,249,235,240,180,181,178,179,177,238,57,258,259,260,261,262,263,252,255,254,253,174,239,511,510,533,460,512,469,459,663,608,811,660,810,809,662,513,615,611,806,781,784,782,783,778,780,734,735,736,746,741,740,742,743,745,773,770,769,771,747,748,751,749,750,752,753,756,754,755,757,758,465,731,730,732,729,466,728,733,760,759,495,496,497,739,737,738,457,493,779,464,744,772,761,762,763,764,765,766,767,768,777,776,774,775,520,488,489,601,602,605,606,607,577,578,596,600,595,560,525,579,580,599,593,594,581,582,598,603,604,609,610,583,597,808,591,592,585,586,587,588,589,584,590,463,486,491,508,571,487,514,519,573,566,612,506,502,494,814,503,492,505,504,498,501,666,689,670,673,675,725,701,665,693,722,672,702,687,690,678,712,707,700,682,681,698,708,713,704,685,671,674,706,691,699,696,714,697,683,709,692,726,716,703,724,705,684,720,710,686,715,723,688,711,694,719,669,680,679,677,664,676,721,717,695,718,727,526,532,531,523,522,530,529,528,801,527,568,521,499,537,536,785,786,787,788,789,790,795,791,792,793,794,796,797,798,799,800,661,819,802,804,509,507,803,553,468,654,475,480,655,652,557,658,621,653,650,651,659,649,648,476,462,616,656,657,619,482,467,554,485,484,481,620,558,473,622,478,477,474,483,618,454,479,455,456,458,461,453,500,617,576,812,575,813,472,668,667,524,629,637,640,642,643,630,645,646,628,636,561,614,613,644,633,647,634,641,639,635,638,632,631,565,563,564,570,562,627,805,807,817,567,535,574,534,569,572,815,490,552,470,556,517,623,625,538,515,626,555,471,559,518,624,539,516,551,550,549,545,546,548,544,547,540,541,542,543,816,818,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,45,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,37,42,43,38,39,40,41,1,44,11,10,452,1049,451,1098,1048,1026,1099,1047,1001,1021,1022,989,1024,1023,1025,1097,1100,991,1000,990,1003,1004,1002]},"version":"4.8.4"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.d.ts b/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.d.ts index d48fce2e..95ea4c36 100644 --- a/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.d.ts +++ b/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.d.ts @@ -1,9 +1,11 @@ import { Friendship } from "../../friendship/entities/friendship.entity"; export declare class User { id: number; + fourtyTwoId: string; username: string; email: string; password: string; + avatar: string; status: [string]; requesterId: Friendship[]; addresseeId: Friendship[]; diff --git a/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.js b/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.js index 75d167b4..c553d4c3 100644 --- a/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.js +++ b/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.js @@ -19,6 +19,10 @@ __decorate([ (0, typeorm_1.PrimaryGeneratedColumn)(), __metadata("design:type", Number) ], User.prototype, "id", void 0); +__decorate([ + (0, typeorm_1.Column)({ name: 'fourty_two_id' }), + __metadata("design:type", String) +], User.prototype, "fourtyTwoId", void 0); __decorate([ (0, typeorm_1.Column)(), __metadata("design:type", String) @@ -32,6 +36,10 @@ __decorate([ (0, typeorm_1.Column)(), __metadata("design:type", String) ], User.prototype, "password", void 0); +__decorate([ + (0, typeorm_1.Column)({ nullable: true }), + __metadata("design:type", String) +], User.prototype, "avatar", void 0); __decorate([ (0, typeorm_1.Column)('json', { nullable: true }), __metadata("design:type", Array) diff --git a/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.js.map b/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.js.map index 27869a04..7e5bf19d 100644 --- a/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.js.map +++ b/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.js.map @@ -1 +1 @@ -{"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../../src/users/entities/user.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qDAAkD;AAClD,qCAA2G;AAC3G,mFAAyE;AAKlE,IAAM,IAAI,GAAV,MAAM,IAAI;CAyBhB,CAAA;AAvBA;IAAC,IAAA,gCAAsB,GAAE;;gCACd;AAEX;IAAC,IAAA,gBAAM,GAAE;;sCACQ;AAEjB;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,yBAAO,GAAE;;mCACI;AAEd;IAAC,IAAA,gBAAM,GAAE;;sCACQ;AAEjB;IAAC,IAAA,gBAAM,EAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oCAClB;AAEjB;IAAC,IAAA,mBAAS,GAAE;IACX,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,8BAAU,EAAG,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;;yCAC7C;AAE1B;IAAC,IAAA,mBAAS,GAAE;IACX,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,8BAAU,EAAG,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;;yCAC7C;AAxBd,IAAI;IAFhB,IAAA,gBAAM,EAAC,MAAM,CAAC;IACd,IAAA,gBAAM,EAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;GACjB,IAAI,CAyBhB;AAzBY,oBAAI"} \ No newline at end of file +{"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../../src/users/entities/user.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qDAAkD;AAClD,qCAA2G;AAC3G,mFAAyE;AAKlE,IAAM,IAAI,GAAV,MAAM,IAAI;CA+BhB,CAAA;AA7BA;IAAC,IAAA,gCAAsB,GAAE;;gCACd;AAEX;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;;yCACd;AAEpB;IAAC,IAAA,gBAAM,GAAE;;sCACQ;AAEjB;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,yBAAO,GAAE;;mCACI;AAEd;IAAC,IAAA,gBAAM,GAAE;;sCACQ;AAEjB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oCACZ;AAEf;IAAC,IAAA,gBAAM,EAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oCAClB;AAEjB;IAAC,IAAA,mBAAS,GAAE;IACX,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,8BAAU,EAAG,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;;yCAC7C;AAE1B;IAAC,IAAA,mBAAS,GAAE;IACX,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,8BAAU,EAAG,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;;yCAC7C;AA9Bd,IAAI;IAFhB,IAAA,gBAAM,EAAC,MAAM,CAAC;IACd,IAAA,gBAAM,EAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;GACjB,IAAI,CA+BhB;AA/BY,oBAAI"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/.package-lock.json b/srcs/requirements/nestjs/api_back/node_modules/.package-lock.json index 802aa06f..90a36bd4 100644 --- a/srcs/requirements/nestjs/api_back/node_modules/.package-lock.json +++ b/srcs/requirements/nestjs/api_back/node_modules/.package-lock.json @@ -2827,6 +2827,14 @@ } ] }, + "node_modules/base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -6419,6 +6427,11 @@ "node": ">=8" } }, + "node_modules/oauth": { + "version": "0.9.15", + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", + "integrity": "sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==" + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6675,6 +6688,17 @@ "url": "https://github.com/sponsors/jaredhanson" } }, + "node_modules/passport-42": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/passport-42/-/passport-42-1.2.6.tgz", + "integrity": "sha512-a1SraWSwH33NqRDe9ScG4MQwfj7RRBYLFtrJySn4tU4Ou7+caLxj6VQgaL4i+eZoKC6QAooL1Nqevn/W8vLXuQ==", + "dependencies": { + "passport-oauth2": "^1.4.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/passport-local": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", @@ -6686,6 +6710,25 @@ "node": ">= 0.4.0" } }, + "node_modules/passport-oauth2": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.6.1.tgz", + "integrity": "sha512-ZbV43Hq9d/SBSYQ22GOiglFsjsD1YY/qdiptA+8ej+9C1dL1TVB+mBE5kDH/D4AJo50+2i8f4bx0vg4/yDDZCQ==", + "dependencies": { + "base64url": "3.x.x", + "oauth": "0.9.x", + "passport-strategy": "1.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, "node_modules/passport-strategy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", @@ -8510,6 +8553,11 @@ "node": ">=4.2.0" } }, + "node_modules/uid2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", diff --git a/srcs/requirements/nestjs/api_back/node_modules/base64url/LICENSE b/srcs/requirements/nestjs/api_back/node_modules/base64url/LICENSE new file mode 100644 index 00000000..bca88ce8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/base64url/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2013–2016 Brian J. Brennan + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/.gitkeep b/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/base64url.d.ts b/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/base64url.d.ts new file mode 100644 index 00000000..f3b828b1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/base64url.d.ts @@ -0,0 +1,11 @@ +/// +export interface Base64Url { + (input: string | Buffer, encoding?: string): string; + encode(input: string | Buffer, encoding?: string): string; + decode(base64url: string, encoding?: string): string; + toBase64(base64url: string | Buffer): string; + fromBase64(base64: string): string; + toBuffer(base64url: string): Buffer; +} +declare let base64url: Base64Url; +export default base64url; diff --git a/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/base64url.js b/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/base64url.js new file mode 100644 index 00000000..e0897b0d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/base64url.js @@ -0,0 +1,37 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var pad_string_1 = require("./pad-string"); +function encode(input, encoding) { + if (encoding === void 0) { encoding = "utf8"; } + if (Buffer.isBuffer(input)) { + return fromBase64(input.toString("base64")); + } + return fromBase64(Buffer.from(input, encoding).toString("base64")); +} +; +function decode(base64url, encoding) { + if (encoding === void 0) { encoding = "utf8"; } + return Buffer.from(toBase64(base64url), "base64").toString(encoding); +} +function toBase64(base64url) { + base64url = base64url.toString(); + return pad_string_1.default(base64url) + .replace(/\-/g, "+") + .replace(/_/g, "/"); +} +function fromBase64(base64) { + return base64 + .replace(/=/g, "") + .replace(/\+/g, "-") + .replace(/\//g, "_"); +} +function toBuffer(base64url) { + return Buffer.from(toBase64(base64url), "base64"); +} +var base64url = encode; +base64url.encode = encode; +base64url.decode = decode; +base64url.toBase64 = toBase64; +base64url.fromBase64 = fromBase64; +base64url.toBuffer = toBuffer; +exports.default = base64url; diff --git a/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/pad-string.d.ts b/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/pad-string.d.ts new file mode 100644 index 00000000..1f692ecd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/pad-string.d.ts @@ -0,0 +1 @@ +export default function padString(input: string): string; diff --git a/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/pad-string.js b/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/pad-string.js new file mode 100644 index 00000000..638e25b6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/base64url/dist/pad-string.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +function padString(input) { + var segmentLength = 4; + var stringLength = input.length; + var diff = stringLength % segmentLength; + if (!diff) { + return input; + } + var position = stringLength; + var padLength = segmentLength - diff; + var paddedStringLength = stringLength + padLength; + var buffer = Buffer.alloc(paddedStringLength); + buffer.write(input); + while (padLength--) { + buffer.write("=", position++); + } + return buffer.toString(); +} +exports.default = padString; diff --git a/srcs/requirements/nestjs/api_back/node_modules/base64url/index.js b/srcs/requirements/nestjs/api_back/node_modules/base64url/index.js new file mode 100644 index 00000000..85e5831e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/base64url/index.js @@ -0,0 +1,2 @@ +module.exports = require('./dist/base64url').default; +module.exports.default = module.exports; diff --git a/srcs/requirements/nestjs/api_back/node_modules/base64url/package.json b/srcs/requirements/nestjs/api_back/node_modules/base64url/package.json new file mode 100644 index 00000000..bb392c2b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/base64url/package.json @@ -0,0 +1,35 @@ +{ + "name": "base64url", + "version": "3.0.1", + "description": "For encoding to/from base64urls", + "main": "index.js", + "types": "./dist/base64url.d.ts", + "files": [ + "dist/", + "index.js" + ], + "scripts": { + "build": "tsc", + "clean": "rm -f dist/*", + "test": "npm run clean && npm run build && tap test/*.test.js", + "prepublishOnly": "npm run test" + }, + "repository": { + "type": "git", + "url": "git://github.com/brianloveswords/base64url.git" + }, + "keywords": [ + "base64", + "base64url" + ], + "author": "Brian J Brennan", + "license": "MIT", + "readmeFilename": "README.md", + "engines": { + "node": ">=6.0.0" + }, + "devDependencies": { + "@types/node": "^10.0.0", + "tap": "^12.1.0" + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/base64url/readme.md b/srcs/requirements/nestjs/api_back/node_modules/base64url/readme.md new file mode 100644 index 00000000..eb7a6e7b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/base64url/readme.md @@ -0,0 +1,127 @@ +# base64url [![Build Status](https://secure.travis-ci.org/brianloveswords/base64url.png)](http://travis-ci.org/brianloveswords/base64url) + +Converting to, and from, [base64url](http://en.wikipedia.org/wiki/Base64#RFC_4648) + +# Install + +```bash +$ npm install base64url +``` + +After installing with `npm` you can require this library from JavaScript or TypeScript: + +JavaScript +```js +const base64url = require('base64url'); +``` + +TypeScript: +```typescript +import base64url from "base64url"; +``` + +# Usage + +## CLI + +The CLI has been removed. For the time being, please install `base64url@1.0.6` if you need the CLI. + +## Library + +### base64url(input: string | Buffer, encoding: string = "utf8"): string + +### base64url.encode(input: string | Buffer, encoding: string = "utf8"): string + +base64url encode `input`. Input should be a `string` or a `Buffer`. + + +Example + +```js +> base64url("ladies and gentlemen we are floating in space") +'bGFkaWVzIGFuZCBnZW50bGVtYW4sIHdlIGFyZSBmbG9hdGluZyBpbiBzcGFjZQ' +``` + +--- + +### base64url.decode(input: string, encoding: string = "utf8"): string + +Convert a base64url encoded string into a raw string. The `encoding` argument can be used if the input is a string that's not utf8. + +```js +> base64url.decode("cmlkZTogZHJlYW1zIGJ1cm4gZG93bg") +'ride: dreams burn down' +``` + +--- + +### base64url.fromBase64(input: string): string + +Convert a base64 encoded string to a base64url encoded string. + +Example + +```js +> base64url.fromBase64('qL8R4QIcQ/ZsRqOAbeRfcZhilN/MksRtDaErMA==') +'qL8R4QIcQ_ZsRqOAbeRfcZhilN_MksRtDaErMA' +``` + +--- + + +### base64url.toBase64(input: string): string + +Convert a base64url encoded string to a base64 encoded string. + +```js +> base64url.toBase64('qL8R4QIcQ_ZsRqOAbeRfcZhilN_MksRtDaErMA') +'qL8R4QIcQ/ZsRqOAbeRfcZhilN/MksRtDaErMA==' +``` + +--- + + +### base64url.toBuffer(input: string): Buffer + +Convert a base64url encoded string to a Buffer containing the decoded bytes. + +```js +> base64url.toBuffer('c3Bpcml0dWFsaXplZA') + +``` + +# Alternatives + +- [base64-url](https://github.com/joaquimserafim/base64-url) + +# Supported Node.js versions + +This library should be used with current versions of the Node.js runtime's long-term stable (LTS) +schedule. More information can be found [at the Node.js Release Working Group](https://github.com/nodejs/Release) repo. + +# License + +MIT + +``` +Copyright (c) 2013–2016 Brian J. Brennan + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/.npmignore b/srcs/requirements/nestjs/api_back/node_modules/oauth/.npmignore new file mode 100644 index 00000000..3c3629e6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/LICENSE b/srcs/requirements/nestjs/api_back/node_modules/oauth/LICENSE new file mode 100644 index 00000000..f8049f8c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/LICENSE @@ -0,0 +1,8 @@ +The MIT License (MIT) +Copyright (c) <2010-2012> + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/Makefile b/srcs/requirements/nestjs/api_back/node_modules/oauth/Makefile new file mode 100644 index 00000000..7723a390 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/Makefile @@ -0,0 +1,7 @@ +# +# Run all tests +# +test: + @@node_modules/.bin/vows tests/*tests.js --spec + +.PHONY: test install diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/Readme.md b/srcs/requirements/nestjs/api_back/node_modules/oauth/Readme.md new file mode 100644 index 00000000..bfbb8058 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/Readme.md @@ -0,0 +1,190 @@ +node-oauth +=========== +A simple oauth API for node.js . This API allows users to authenticate against OAUTH providers, and thus act as OAuth consumers. It also has support for OAuth Echo, which is used for communicating with 3rd party media providers such as TwitPic and yFrog. + +Tested against Twitter (http://twitter.com), term.ie (http://term.ie/oauth/example/), TwitPic, and Yahoo! + +Also provides rudimentary OAuth2 support, tested against facebook, github, foursquare, google and Janrain. For more complete usage examples please take a look at connect-auth (http://github.com/ciaranj/connect-auth) + +[![Clone in Koding](http://learn.koding.com/btn/clone_d.png)][koding] +[koding]: https://koding.com/Teamwork?import=https://github.com/ciaranj/node-oauth/archive/master.zip&c=git1 +[![Pair on Thinkful](https://tf-assets-staging.s3.amazonaws.com/badges/thinkful_repo_badge.svg)][Thinkful] +[Thinkful]: http://start.thinkful.com/node/?utm_source=github&utm_medium=badge&utm_campaign=node-oauth + +Installation +============== + + $ npm install oauth + + +Examples +========== + +To run examples/tests install Mocha `$ npm install -g mocha` and run `$ mocha you-file-name.js`: + +## OAuth1.0 + +```javascript +describe('OAuth1.0',function(){ + var OAuth = require('oauth'); + + it('tests trends Twitter API v1.1',function(done){ + var oauth = new OAuth.OAuth( + 'https://api.twitter.com/oauth/request_token', + 'https://api.twitter.com/oauth/access_token', + 'your application consumer key', + 'your application secret', + '1.0A', + null, + 'HMAC-SHA1' + ); + oauth.get( + 'https://api.twitter.com/1.1/trends/place.json?id=23424977', + 'your user token for this app', //test user token + 'your user secret for this app', //test user secret + function (e, data, res){ + if (e) console.error(e); + console.log(require('util').inspect(data)); + done(); + }); + }); +}); +``` + +## OAuth2.0 +```javascript +describe('OAuth2',function(){ + var OAuth = require('oauth'); + + it('gets bearer token', function(done){ + var OAuth2 = OAuth.OAuth2; + var twitterConsumerKey = 'your key'; + var twitterConsumerSecret = 'your secret'; + var oauth2 = new OAuth2(server.config.keys.twitter.consumerKey, + twitterConsumerSecret, + 'https://api.twitter.com/', + null, + 'oauth2/token', + null); + oauth2.getOAuthAccessToken( + '', + {'grant_type':'client_credentials'}, + function (e, access_token, refresh_token, results){ + console.log('bearer: ',access_token); + done(); + }); + }); +``` + +Change History +============== +* 0.9.15 + - OAuth2: Allow specification of agent +* 0.9.14 + - OAuth2: Extend 'successful' token responses to include anything in the 2xx range. +* 0.9.13 + - OAuth2: Fixes the "createCredentials() is deprecated, use tls.createSecureContext instead" message. (thank you AJ ONeal) +* 0.9.12 + - OAuth1/2: Can now pass Buffer instance directly for PUTs+POSTs (thank you Evan Prodromou) + - OAuth1: Improve interoperability with libraries that mess with the prototype. (thank you Jose Ignacio Andres) + - OAuth2: Adds PUT support for OAuth2 (thank you Derek Brooks) + - OAuth1: Improves use_strict compatibility (thank you Ted Goddard) +* 0.9.11 + - OAuth2: No longer sends the type=webserver argument with the OAuth2 requests (thank you bendiy) + - OAuth2: Provides a default (and overrideable) User-Agent header (thanks to Andrew Martens & Daniel Mahlow) + - OAuth1: New followRedirects client option (true by default) (thanks to Pieter Joost van de Sande) + - OAuth1: Adds RSA-SHA1 support (thanks to Jeffrey D. Van Alstine & Michael Garvin & Andreas Knecht) +* 0.9.10 + - OAuth2: Addresses 2 issues that came in with 0.9.9, #129 & #125 (thank you José F. Romaniello) +* 0.9.9 + - OAuth1: Fix the mismatch between the output of querystring.stringify() and this._encodeData(). (thank you rolandboon) + - OAuth2: Adds Authorization Header and supports extra headers by default ( thanks to Brian Park) +* 0.9.8 + - OAuth1: Support overly-strict OAuth server's that require whitespace separating the Authorization Header parameters (e.g. 500px.com) (Thanks to Christian Schwarz) + - OAuth1: Fix incorrect double-encoding of PLAINTEXT OAuth connections (Thanks to Joe Rozner) + - OAuth1: Minor safety check added when checking hostnames. (Thanks to Garrick Cheung) +* 0.9.7 + - OAuth2: Pass back any extra response data for calls to getOAuthAccessToken (Thanks to Tang Bo Hao) + - OAuth2: Don't force a https request if given a http url (Thanks to Damien Mathieu) + - OAuth2: Supports specifying a grant-type of 'refresh-token' (Thanks to Luke Baker) +* 0.9.6 + - OAuth2: Support for 302 redirects (Thanks Patrick Negri). + - OAuth1/2: Some code tidying. ( Thanks to Raoul Millais ) +* 0.9.5 + - OAuth1: Allow usage of HTTP verbs other than GET for retrieving the access and request tokens (Thanks to Raoul Millais) +* 0.9.4 + - OAuth1/2: Support for OAuth providers that drop connections (don't send response lengths? [Google]) + - OAuth2: Change getOAuthAccessToken to POST rather than GET ( Possible Breaking change!!! ... re-tested against Google, Github, Facebook, FourSquare and Janrain and seems ok .. is closer to the spec (v20) ) +* 0.9.3 + - OAuth1: Adds support for following 301 redirects (Thanks bdickason) +* 0.9.2 + - OAuth1: Correct content length calculated for non-ascii post bodies (Thanks selead) + - OAuth1: Allowed for configuration of the 'access token' name used when requesting protected resources (OAuth2) +* 0.9.1 + - OAuth1: Added support for automatically following 302 redirects (Thanks neyric) + - OAuth1: Added support for OAuth Echo (Thanks Ryan LeFevre). + - OAuth1: Improved handling of 2xx responses (Thanks Neil Mansilla). +* 0.9.0 + - OAuth1/2: Compatibility fixes to bring node-oauth up to speed with node.js 0.4x [thanks to Rasmus Andersson for starting the work ] +* 0.8.4 + - OAuth1: Fixed issue #14 (Parameter ordering ignored encodings). + - OAuth1: Added support for repeated parameter names. + - OAuth1/2: Implements issue #15 (Use native SHA1 if available, 10x speed improvement!). + - OAuth2: Fixed issue #16 (Should use POST when requesting access tokens.). + - OAuth2: Fixed Issue #17 (OAuth2 spec compliance). + - OAuth1: Implemented enhancement #13 (Adds support for PUT & DELETE http verbs). + - OAuth1: Fixes issue #18 (Complex/Composite url arguments [thanks novemberborn]) +* 0.8.3 + - OAuth1: Fixed an issue where the auth header code depended on the Array's toString method (Yohei Sasaki) Updated the getOAuthRequestToken method so we can access google's OAuth secured methods. Also re-implemented and fleshed out the test suite. +* 0.8.2 + - OAuth1: The request returning methods will now write the POST body if provided (Chris Anderson), the code responsible for manipulating the headers is a bit safe now when working with other code (Paul McKellar) + - Package: Tweaked the package.json to use index.js instead of main.js +* 0.8.1 + - OAuth1: Added mechanism to get hold of a signed Node Request object, ready for attaching response listeners etc. (Perfect for streaming APIs) +* 0.8.0 + - OAuth1: Standardised method capitalisation, the old getOauthAccessToken is now getOAuthAccessToken (Breaking change to existing code) +* 0.7.7 + - OAuth1: Looks like non oauth_ parameters where appearing within the Authorization headers, which I believe to be incorrect. +* 0.7.6 + - OAuth1: Added in oauth_verifier property to getAccessToken required for 1.0A +* 0.7.5 + - Package: Added in a main.js to simplify the require'ing of OAuth +* 0.7.4 + - OAuth1: Minor change to add an error listener to the OAuth client (thanks troyk) +* 0.7.3 + - OAuth2: Now sends a Content-Length Http header to keep nginx happy :) +* 0.7.2 + - OAuth1: Fixes some broken unit tests! +* 0.7.0 + - OAuth1/2: Introduces support for HTTPS end points and callback URLS for OAuth 1.0A and Oauth 2 (Please be aware that this was a breaking change to the constructor arguments order) + +Contributors (In no particular order) +===================================== + +* Evan Prodromou +* Jose Ignacio Andres +* Ted Goddard +* Derek Brooks +* Ciaran Jessup - ciaranj@gmail.com +* Mark Wubben - http://equalmedia.com/ +* Ryan LeFevre - http://meltingice.net +* Raoul Millais +* Patrick Negri - http://github.com/pnegri +* Tang Bo Hao - http://github.com/btspoony +* Damien Mathieu - http://42.dmathieu.com +* Luke Baker - http://github.com/lukebaker +* Christian Schwarz - http://github.com/chrischw/ +* Joe Rozer - http://www.deadbytes.net +* Garrick Cheung - http://www.garrickcheung.com/ +* rolandboon - http://rolandboon.com +* Brian Park - http://github.com/yaru22 +* José F. Romaniello - http://github.com/jfromaniello +* bendiy - https://github.com/bendiy +* Andrew Martins - http://www.andrewmartens.com +* Daniel Mahlow - https://github.com/dmahlow +* Pieter Joost van de Sande - https://github.com/pjvds +* Jeffrey D. Van Alstine +* Michael Garvin +* Andreas Knecht +* AJ ONeal +* Philip Skinner - https://github.com/PhilipSkinner diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/server.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/server.js new file mode 100644 index 00000000..3c7bf7fe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/server.js @@ -0,0 +1,168 @@ +var express = require('express'), + OAuth = require('oauth').OAuth, + querystring = require('querystring'); + +// Setup the Express.js server +var app = express.createServer(); +app.use(express.logger()); +app.use(express.bodyParser()); +app.use(express.cookieParser()); +app.use(express.session({ + secret: "skjghskdjfhbqigohqdiouk" +})); + +// Home Page +app.get('/', function(req, res){ + if(!req.session.oauth_access_token) { + res.redirect("/google_login"); + } + else { + res.redirect("/google_contacts"); + } +}); + +// Request an OAuth Request Token, and redirects the user to authorize it +app.get('/google_login', function(req, res) { + + var getRequestTokenUrl = "https://www.google.com/accounts/OAuthGetRequestToken"; + + // GData specifid: scopes that wa want access to + var gdataScopes = [ + querystring.escape("https://www.google.com/m8/feeds/"), + querystring.escape("https://www.google.com/calendar/feeds/") + ]; + + var oa = new OAuth(getRequestTokenUrl+"?scope="+gdataScopes.join('+'), + "https://www.google.com/accounts/OAuthGetAccessToken", + "anonymous", + "anonymous", + "1.0", + "http://localhost:3000/google_cb"+( req.param('action') && req.param('action') != "" ? "?action="+querystring.escape(req.param('action')) : "" ), + "HMAC-SHA1"); + + oa.getOAuthRequestToken(function(error, oauth_token, oauth_token_secret, results){ + if(error) { + console.log('error'); + console.log(error); + } + else { + // store the tokens in the session + req.session.oa = oa; + req.session.oauth_token = oauth_token; + req.session.oauth_token_secret = oauth_token_secret; + + // redirect the user to authorize the token + res.redirect("https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token="+oauth_token); + } + }) + +}); + +// Callback for the authorization page +app.get('/google_cb', function(req, res) { + + // get the OAuth access token with the 'oauth_verifier' that we received + + var oa = new OAuth(req.session.oa._requestUrl, + req.session.oa._accessUrl, + req.session.oa._consumerKey, + req.session.oa._consumerSecret, + req.session.oa._version, + req.session.oa._authorize_callback, + req.session.oa._signatureMethod); + + console.log(oa); + + oa.getOAuthAccessToken( + req.session.oauth_token, + req.session.oauth_token_secret, + req.param('oauth_verifier'), + function(error, oauth_access_token, oauth_access_token_secret, results2) { + + if(error) { + console.log('error'); + console.log(error); + } + else { + + // store the access token in the session + req.session.oauth_access_token = oauth_access_token; + req.session.oauth_access_token_secret = oauth_access_token_secret; + + res.redirect((req.param('action') && req.param('action') != "") ? req.param('action') : "/google_contacts"); + } + + }); + +}); + + +function require_google_login(req, res, next) { + if(!req.session.oauth_access_token) { + res.redirect("/google_login?action="+querystring.escape(req.originalUrl)); + return; + } + next(); +}; + +app.get('/google_contacts', require_google_login, function(req, res) { + var oa = new OAuth(req.session.oa._requestUrl, + req.session.oa._accessUrl, + req.session.oa._consumerKey, + req.session.oa._consumerSecret, + req.session.oa._version, + req.session.oa._authorize_callback, + req.session.oa._signatureMethod); + + console.log(oa); + + // Example using GData API v3 + // GData Specific Header + oa._headers['GData-Version'] = '3.0'; + + oa.getProtectedResource( + "https://www.google.com/m8/feeds/contacts/default/full?alt=json", + "GET", + req.session.oauth_access_token, + req.session.oauth_access_token_secret, + function (error, data, response) { + + var feed = JSON.parse(data); + + res.render('google_contacts.ejs', { + locals: { feed: feed } + }); + }); + +}); + +app.get('/google_calendars', require_google_login, function(req, res) { + var oa = new OAuth(req.session.oa._requestUrl, + req.session.oa._accessUrl, + req.session.oa._consumerKey, + req.session.oa._consumerSecret, + req.session.oa._version, + req.session.oa._authorize_callback, + req.session.oa._signatureMethod); + // Example using GData API v2 + // GData Specific Header + oa._headers['GData-Version'] = '2'; + + oa.getProtectedResource( + "https://www.google.com/calendar/feeds/default/allcalendars/full?alt=jsonc", + "GET", + req.session.oauth_access_token, + req.session.oauth_access_token_secret, + function (error, data, response) { + + var feed = JSON.parse(data); + + res.render('google_calendars.ejs', { + locals: { feed: feed } + }); + }); + +}); + +app.listen(3000); +console.log("listening on http://localhost:3000"); diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/views/google_calendars.ejs b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/views/google_calendars.ejs new file mode 100644 index 00000000..15b826f8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/views/google_calendars.ejs @@ -0,0 +1,21 @@ + +

Check google_contacts

+ +

Google Calendars

+ +<% for(var i = 0 ; i < feed.data.items.length ; i++ ) { + + var calendar = feed.data.items[i]; %> +
+ +

"><%= calendar["title"] %>

+ +

canEdit: <%= calendar["canEdit"] %>

+

accessLevel: <%= calendar["accessLevel"] %>

+

timeZone: <%= calendar["timeZone"] %>

+

kind: <%= calendar["kind"] %>

+

updated: <%= calendar["updated"] %>

+

created: <%= calendar["created"] %>

+ +
+<% } %> \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/views/google_contacts.ejs b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/views/google_contacts.ejs new file mode 100644 index 00000000..a2050b21 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/views/google_contacts.ejs @@ -0,0 +1,24 @@ + +

Check google_calendars

+ +

Google Contacts

+ +<% for(var i = 0 ; i < feed.feed.entry.length ; i++ ) { + + var contact = feed.feed.entry[i]; %> + +
+ + <%= contact["title"]["$t"] %> + <% emails = contact["gd$email"] %> + +
    + <% for(var j = 0 ; j < emails.length ; j++) { %> +
  • <%= emails[j]["address" ]%>
  • + <% } %> +
+ +
+ + +<% } %> diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/views/layout.ejs b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/views/layout.ejs new file mode 100644 index 00000000..8d1ac6d5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/express-gdata/views/layout.ejs @@ -0,0 +1,9 @@ + + + + + +<%- body %> + + + \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/github-example.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/github-example.js new file mode 100644 index 00000000..1a388bdb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/github-example.js @@ -0,0 +1,73 @@ +var http = require('http'); +var qs = require('querystring'); +// var OAuth = require('oauth'), OAuth2 = OAuth.OAuth2; +var OAuth2 = require('../lib/oauth2.js').OAuth2; + +var clientID = ''; +var clientSecret = ''; +var oauth2 = new OAuth2(clientID, + clientSecret, + 'https://github.com/', + 'login/oauth/authorize', + 'login/oauth/access_token', + null); /** Custom headers */ + +http.createServer(function (req, res) { + var p = req.url.split('/'); + pLen = p.length; + + /** + * Authorised url as per github docs: + * https://developer.github.com/v3/oauth/#redirect-users-to-request-github-access + * + * getAuthorizedUrl: https://github.com/ciaranj/node-oauth/blob/master/lib/oauth2.js#L148 + * Adding params to authorize url with fields as mentioned in github docs + * + */ + var authURL = oauth2.getAuthorizeUrl({ + redirect_uri: 'http://localhost:8080/code', + scope: ['repo', 'user'], + state: 'some random string to protect against cross-site request forgery attacks' + }); + + + /** + * Creating an anchor with authURL as href and sending as response + */ + var body = ' Get Code '; + if (pLen === 2 && p[1] === '') { + res.writeHead(200, { + 'Content-Length': body.length, + 'Content-Type': 'text/html' }); + res.end(body); + } else if (pLen === 2 && p[1].indexOf('code') === 0) { + + /** Github sends auth code so that access_token can be obtained */ + var qsObj = {}; + + /** To obtain and parse code='...' from code?code='...' */ + qsObj = qs.parse(p[1].split('?')[1]); + + /** Obtaining access_token */ + oauth2.getOAuthAccessToken( + qsObj.code, + {'redirect_uri': 'http://localhost:8080/code/'}, + function (e, access_token, refresh_token, results){ + if (e) { + console.log(e); + res.end(e); + } else if (results.error) { + console.log(results); + res.end(JSON.stringify(results)); + } + else { + console.log('Obtained access_token: ', access_token); + res.end( access_token); + } + }); + + } else { + // Unhandled url + } + +}).listen(8080); diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/term.ie.oauth-HMAC-SHA1.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/term.ie.oauth-HMAC-SHA1.js new file mode 100644 index 00000000..91af05db --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/term.ie.oauth-HMAC-SHA1.js @@ -0,0 +1,31 @@ +var util= require('util') + +var OAuth= require('../lib/oauth').OAuth; + +var oa= new OAuth("http://term.ie/oauth/example/request_token.php", + "http://term.ie/oauth/example/access_token.php", + "key", + "secret", + "1.0", + null, + "HMAC-SHA1") + +oa.getOAuthRequestToken(function(error, oauth_token, oauth_token_secret, results){ + if(error) util.puts('error :' + error) + else { + util.puts('oauth_token :' + oauth_token) + util.puts('oauth_token_secret :' + oauth_token_secret) + util.puts('requestoken results :' + util.inspect(results)) + util.puts("Requesting access token") + oa.getOAuthAccessToken(oauth_token, oauth_token_secret, function(error, oauth_access_token, oauth_access_token_secret, results2) { + util.puts('oauth_access_token :' + oauth_access_token) + util.puts('oauth_token_secret :' + oauth_access_token_secret) + util.puts('accesstoken results :' + util.inspect(results2)) + util.puts("Requesting access token") + var data= ""; + oa.getProtectedResource("http://term.ie/oauth/example/echo_api.php?foo=bar&too=roo", "GET", oauth_access_token, oauth_access_token_secret, function (error, data, response) { + util.puts(data); + }); + }); + } +}) diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/twitter-example.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/twitter-example.js new file mode 100644 index 00000000..90b6adcb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/examples/twitter-example.js @@ -0,0 +1,75 @@ +var http = require('http'); +var OAuth = require('../lib/oauth.js').OAuth; +var nodeUrl = require('url'); +var clientID = ''; +var clientSecret = ''; +var callbackURL = ''; + +oa = new OAuth( + 'https://api.twitter.com/oauth/request_token', + 'https://api.twitter.com/oauth/access_token', + clientID, + clientSecret, + '1.0', + callbackURL, + 'HMAC-SHA1' +); + +http.createServer(function (request, response) { + oa.getOAuthRequestToken(function (error, oAuthToken, oAuthTokenSecret, results) { + var urlObj = nodeUrl.parse(request.url, true); + var authURL = 'https://twitter.com/' + + 'oauth/authenticate?oauth_token=' + oAuthToken; + var handlers = { + '/': function (request, response) { + /** + * Creating an anchor with authURL as href and sending as response + */ + var body = ' Get Code '; + response.writeHead(200, { + 'Content-Length': body.length, + 'Content-Type': 'text/html' }); + response.end(body); + }, + '/callback': function (request, response) { + /** Obtaining access_token */ + var getOAuthRequestTokenCallback = function (error, oAuthAccessToken, + oAuthAccessTokenSecret, results) { + if (error) { + console.log(error); + response.end(JSON.stringify({ + message: 'Error occured while getting access token', + error: error + })); + return; + } + + oa.get('https://api.twitter.com/1.1/account/verify_credentials.json', + oAuthAccessToken, + oAuthAccessTokenSecret, + function (error, twitterResponseData, result) { + if (error) { + console.log(error) + res.end(JSON.stringify(error)); + return; + } + try { + console.log(JSON.parse(twitterResponseData)); + } catch (parseError) { + console.log(parseError); + } + console.log(twitterResponseData); + response.end(twitterResponseData); + }); + }; + + oa.getOAuthAccessToken(urlObj.query.oauth_token, oAuthTokenSecret, + urlObj.query.oauth_verifier, + getOAuthRequestTokenCallback); + + } + }; + handlers[urlObj.pathname](request, response); + }) + +}).listen(3000); diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/index.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/index.js new file mode 100644 index 00000000..e20716dd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/index.js @@ -0,0 +1,3 @@ +exports.OAuth = require("./lib/oauth").OAuth; +exports.OAuthEcho = require("./lib/oauth").OAuthEcho; +exports.OAuth2 = require("./lib/oauth2").OAuth2; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/lib/_utils.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/lib/_utils.js new file mode 100644 index 00000000..69fc3009 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/lib/_utils.js @@ -0,0 +1,4 @@ +// Returns true if this is a host that closes *before* it ends?!?! +module.exports.isAnEarlyCloseHost= function( hostName ) { + return hostName && hostName.match(".*google(apis)?.com$") +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/lib/oauth.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/lib/oauth.js new file mode 100644 index 00000000..50dccf99 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/lib/oauth.js @@ -0,0 +1,581 @@ +var crypto= require('crypto'), + sha1= require('./sha1'), + http= require('http'), + https= require('https'), + URL= require('url'), + querystring= require('querystring'), + OAuthUtils= require('./_utils'); + +exports.OAuth= function(requestUrl, accessUrl, consumerKey, consumerSecret, version, authorize_callback, signatureMethod, nonceSize, customHeaders) { + this._isEcho = false; + + this._requestUrl= requestUrl; + this._accessUrl= accessUrl; + this._consumerKey= consumerKey; + this._consumerSecret= this._encodeData( consumerSecret ); + if (signatureMethod == "RSA-SHA1") { + this._privateKey = consumerSecret; + } + this._version= version; + if( authorize_callback === undefined ) { + this._authorize_callback= "oob"; + } + else { + this._authorize_callback= authorize_callback; + } + + if( signatureMethod != "PLAINTEXT" && signatureMethod != "HMAC-SHA1" && signatureMethod != "RSA-SHA1") + throw new Error("Un-supported signature method: " + signatureMethod ) + this._signatureMethod= signatureMethod; + this._nonceSize= nonceSize || 32; + this._headers= customHeaders || {"Accept" : "*/*", + "Connection" : "close", + "User-Agent" : "Node authentication"} + this._clientOptions= this._defaultClientOptions= {"requestTokenHttpMethod": "POST", + "accessTokenHttpMethod": "POST", + "followRedirects": true}; + this._oauthParameterSeperator = ","; +}; + +exports.OAuthEcho= function(realm, verify_credentials, consumerKey, consumerSecret, version, signatureMethod, nonceSize, customHeaders) { + this._isEcho = true; + + this._realm= realm; + this._verifyCredentials = verify_credentials; + this._consumerKey= consumerKey; + this._consumerSecret= this._encodeData( consumerSecret ); + if (signatureMethod == "RSA-SHA1") { + this._privateKey = consumerSecret; + } + this._version= version; + + if( signatureMethod != "PLAINTEXT" && signatureMethod != "HMAC-SHA1" && signatureMethod != "RSA-SHA1") + throw new Error("Un-supported signature method: " + signatureMethod ); + this._signatureMethod= signatureMethod; + this._nonceSize= nonceSize || 32; + this._headers= customHeaders || {"Accept" : "*/*", + "Connection" : "close", + "User-Agent" : "Node authentication"}; + this._oauthParameterSeperator = ","; +} + +exports.OAuthEcho.prototype = exports.OAuth.prototype; + +exports.OAuth.prototype._getTimestamp= function() { + return Math.floor( (new Date()).getTime() / 1000 ); +} + +exports.OAuth.prototype._encodeData= function(toEncode){ + if( toEncode == null || toEncode == "" ) return "" + else { + var result= encodeURIComponent(toEncode); + // Fix the mismatch between OAuth's RFC3986's and Javascript's beliefs in what is right and wrong ;) + return result.replace(/\!/g, "%21") + .replace(/\'/g, "%27") + .replace(/\(/g, "%28") + .replace(/\)/g, "%29") + .replace(/\*/g, "%2A"); + } +} + +exports.OAuth.prototype._decodeData= function(toDecode) { + if( toDecode != null ) { + toDecode = toDecode.replace(/\+/g, " "); + } + return decodeURIComponent( toDecode); +} + +exports.OAuth.prototype._getSignature= function(method, url, parameters, tokenSecret) { + var signatureBase= this._createSignatureBase(method, url, parameters); + return this._createSignature( signatureBase, tokenSecret ); +} + +exports.OAuth.prototype._normalizeUrl= function(url) { + var parsedUrl= URL.parse(url, true) + var port =""; + if( parsedUrl.port ) { + if( (parsedUrl.protocol == "http:" && parsedUrl.port != "80" ) || + (parsedUrl.protocol == "https:" && parsedUrl.port != "443") ) { + port= ":" + parsedUrl.port; + } + } + + if( !parsedUrl.pathname || parsedUrl.pathname == "" ) parsedUrl.pathname ="/"; + + return parsedUrl.protocol + "//" + parsedUrl.hostname + port + parsedUrl.pathname; +} + +// Is the parameter considered an OAuth parameter +exports.OAuth.prototype._isParameterNameAnOAuthParameter= function(parameter) { + var m = parameter.match('^oauth_'); + if( m && ( m[0] === "oauth_" ) ) { + return true; + } + else { + return false; + } +}; + +// build the OAuth request authorization header +exports.OAuth.prototype._buildAuthorizationHeaders= function(orderedParameters) { + var authHeader="OAuth "; + if( this._isEcho ) { + authHeader += 'realm="' + this._realm + '",'; + } + + for( var i= 0 ; i < orderedParameters.length; i++) { + // Whilst the all the parameters should be included within the signature, only the oauth_ arguments + // should appear within the authorization header. + if( this._isParameterNameAnOAuthParameter(orderedParameters[i][0]) ) { + authHeader+= "" + this._encodeData(orderedParameters[i][0])+"=\""+ this._encodeData(orderedParameters[i][1])+"\""+ this._oauthParameterSeperator; + } + } + + authHeader= authHeader.substring(0, authHeader.length-this._oauthParameterSeperator.length); + return authHeader; +} + +// Takes an object literal that represents the arguments, and returns an array +// of argument/value pairs. +exports.OAuth.prototype._makeArrayOfArgumentsHash= function(argumentsHash) { + var argument_pairs= []; + for(var key in argumentsHash ) { + if (argumentsHash.hasOwnProperty(key)) { + var value= argumentsHash[key]; + if( Array.isArray(value) ) { + for(var i=0;i= 200 && response.statusCode <= 299 ) { + callback(null, data, response); + } else { + // Follow 301 or 302 redirects with Location HTTP header + if((response.statusCode == 301 || response.statusCode == 302) && clientOptions.followRedirects && response.headers && response.headers.location) { + self._performSecureRequest( oauth_token, oauth_token_secret, method, response.headers.location, extra_params, post_body, post_content_type, callback); + } + else { + callback({ statusCode: response.statusCode, data: data }, data, response); + } + } + } + } + + request.on('response', function (response) { + response.setEncoding('utf8'); + response.on('data', function (chunk) { + data+=chunk; + }); + response.on('end', function () { + passBackControl( response ); + }); + response.on('close', function () { + if( allowEarlyClose ) { + passBackControl( response ); + } + }); + }); + + request.on("error", function(err) { + if(!callbackCalled) { + callbackCalled= true; + callback( err ) + } + }); + + if( (method == "POST" || method =="PUT") && post_body != null && post_body != "" ) { + request.write(post_body); + } + request.end(); + } + else { + if( (method == "POST" || method =="PUT") && post_body != null && post_body != "" ) { + request.write(post_body); + } + return request; + } + + return; +} + +exports.OAuth.prototype.setClientOptions= function(options) { + var key, + mergedOptions= {}, + hasOwnProperty= Object.prototype.hasOwnProperty; + + for( key in this._defaultClientOptions ) { + if( !hasOwnProperty.call(options, key) ) { + mergedOptions[key]= this._defaultClientOptions[key]; + } else { + mergedOptions[key]= options[key]; + } + } + + this._clientOptions= mergedOptions; +}; + +exports.OAuth.prototype.getOAuthAccessToken= function(oauth_token, oauth_token_secret, oauth_verifier, callback) { + var extraParams= {}; + if( typeof oauth_verifier == "function" ) { + callback= oauth_verifier; + } else { + extraParams.oauth_verifier= oauth_verifier; + } + + this._performSecureRequest( oauth_token, oauth_token_secret, this._clientOptions.accessTokenHttpMethod, this._accessUrl, extraParams, null, null, function(error, data, response) { + if( error ) callback(error); + else { + var results= querystring.parse( data ); + var oauth_access_token= results["oauth_token"]; + delete results["oauth_token"]; + var oauth_access_token_secret= results["oauth_token_secret"]; + delete results["oauth_token_secret"]; + callback(null, oauth_access_token, oauth_access_token_secret, results ); + } + }) +} + +// Deprecated +exports.OAuth.prototype.getProtectedResource= function(url, method, oauth_token, oauth_token_secret, callback) { + this._performSecureRequest( oauth_token, oauth_token_secret, method, url, null, "", null, callback ); +} + +exports.OAuth.prototype.delete= function(url, oauth_token, oauth_token_secret, callback) { + return this._performSecureRequest( oauth_token, oauth_token_secret, "DELETE", url, null, "", null, callback ); +} + +exports.OAuth.prototype.get= function(url, oauth_token, oauth_token_secret, callback) { + return this._performSecureRequest( oauth_token, oauth_token_secret, "GET", url, null, "", null, callback ); +} + +exports.OAuth.prototype._putOrPost= function(method, url, oauth_token, oauth_token_secret, post_body, post_content_type, callback) { + var extra_params= null; + if( typeof post_content_type == "function" ) { + callback= post_content_type; + post_content_type= null; + } + if ( typeof post_body != "string" && !Buffer.isBuffer(post_body) ) { + post_content_type= "application/x-www-form-urlencoded" + extra_params= post_body; + post_body= null; + } + return this._performSecureRequest( oauth_token, oauth_token_secret, method, url, extra_params, post_body, post_content_type, callback ); +} + + +exports.OAuth.prototype.put= function(url, oauth_token, oauth_token_secret, post_body, post_content_type, callback) { + return this._putOrPost("PUT", url, oauth_token, oauth_token_secret, post_body, post_content_type, callback); +} + +exports.OAuth.prototype.post= function(url, oauth_token, oauth_token_secret, post_body, post_content_type, callback) { + return this._putOrPost("POST", url, oauth_token, oauth_token_secret, post_body, post_content_type, callback); +} + +/** + * Gets a request token from the OAuth provider and passes that information back + * to the calling code. + * + * The callback should expect a function of the following form: + * + * function(err, token, token_secret, parsedQueryString) {} + * + * This method has optional parameters so can be called in the following 2 ways: + * + * 1) Primary use case: Does a basic request with no extra parameters + * getOAuthRequestToken( callbackFunction ) + * + * 2) As above but allows for provision of extra parameters to be sent as part of the query to the server. + * getOAuthRequestToken( extraParams, callbackFunction ) + * + * N.B. This method will HTTP POST verbs by default, if you wish to override this behaviour you will + * need to provide a requestTokenHttpMethod option when creating the client. + * + **/ +exports.OAuth.prototype.getOAuthRequestToken= function( extraParams, callback ) { + if( typeof extraParams == "function" ){ + callback = extraParams; + extraParams = {}; + } + // Callbacks are 1.0A related + if( this._authorize_callback ) { + extraParams["oauth_callback"]= this._authorize_callback; + } + this._performSecureRequest( null, null, this._clientOptions.requestTokenHttpMethod, this._requestUrl, extraParams, null, null, function(error, data, response) { + if( error ) callback(error); + else { + var results= querystring.parse(data); + + var oauth_token= results["oauth_token"]; + var oauth_token_secret= results["oauth_token_secret"]; + delete results["oauth_token"]; + delete results["oauth_token_secret"]; + callback(null, oauth_token, oauth_token_secret, results ); + } + }); +} + +exports.OAuth.prototype.signUrl= function(url, oauth_token, oauth_token_secret, method) { + + if( method === undefined ) { + var method= "GET"; + } + + var orderedParameters= this._prepareParameters(oauth_token, oauth_token_secret, method, url, {}); + var parsedUrl= URL.parse( url, false ); + + var query=""; + for( var i= 0 ; i < orderedParameters.length; i++) { + query+= orderedParameters[i][0]+"="+ this._encodeData(orderedParameters[i][1]) + "&"; + } + query= query.substring(0, query.length-1); + + return parsedUrl.protocol + "//"+ parsedUrl.host + parsedUrl.pathname + "?" + query; +}; + +exports.OAuth.prototype.authHeader= function(url, oauth_token, oauth_token_secret, method) { + if( method === undefined ) { + var method= "GET"; + } + + var orderedParameters= this._prepareParameters(oauth_token, oauth_token_secret, method, url, {}); + return this._buildAuthorizationHeaders(orderedParameters); +}; diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/lib/oauth2.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/lib/oauth2.js new file mode 100644 index 00000000..77241c43 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/lib/oauth2.js @@ -0,0 +1,228 @@ +var querystring= require('querystring'), + crypto= require('crypto'), + https= require('https'), + http= require('http'), + URL= require('url'), + OAuthUtils= require('./_utils'); + +exports.OAuth2= function(clientId, clientSecret, baseSite, authorizePath, accessTokenPath, customHeaders) { + this._clientId= clientId; + this._clientSecret= clientSecret; + this._baseSite= baseSite; + this._authorizeUrl= authorizePath || "/oauth/authorize"; + this._accessTokenUrl= accessTokenPath || "/oauth/access_token"; + this._accessTokenName= "access_token"; + this._authMethod= "Bearer"; + this._customHeaders = customHeaders || {}; + this._useAuthorizationHeaderForGET= false; + + //our agent + this._agent = undefined; +}; + +// Allows you to set an agent to use instead of the default HTTP or +// HTTPS agents. Useful when dealing with your own certificates. +exports.OAuth2.prototype.setAgent = function(agent) { + this._agent = agent; +}; + +// This 'hack' method is required for sites that don't use +// 'access_token' as the name of the access token (for requests). +// ( http://tools.ietf.org/html/draft-ietf-oauth-v2-16#section-7 ) +// it isn't clear what the correct value should be atm, so allowing +// for specific (temporary?) override for now. +exports.OAuth2.prototype.setAccessTokenName= function ( name ) { + this._accessTokenName= name; +} + +// Sets the authorization method for Authorization header. +// e.g. Authorization: Bearer # "Bearer" is the authorization method. +exports.OAuth2.prototype.setAuthMethod = function ( authMethod ) { + this._authMethod = authMethod; +}; + + +// If you use the OAuth2 exposed 'get' method (and don't construct your own _request call ) +// this will specify whether to use an 'Authorize' header instead of passing the access_token as a query parameter +exports.OAuth2.prototype.useAuthorizationHeaderforGET = function(useIt) { + this._useAuthorizationHeaderForGET= useIt; +} + +exports.OAuth2.prototype._getAccessTokenUrl= function() { + return this._baseSite + this._accessTokenUrl; /* + "?" + querystring.stringify(params); */ +} + +// Build the authorization header. In particular, build the part after the colon. +// e.g. Authorization: Bearer # Build "Bearer " +exports.OAuth2.prototype.buildAuthHeader= function(token) { + return this._authMethod + ' ' + token; +}; + +exports.OAuth2.prototype._chooseHttpLibrary= function( parsedUrl ) { + var http_library= https; + // As this is OAUth2, we *assume* https unless told explicitly otherwise. + if( parsedUrl.protocol != "https:" ) { + http_library= http; + } + return http_library; +}; + +exports.OAuth2.prototype._request= function(method, url, headers, post_body, access_token, callback) { + + var parsedUrl= URL.parse( url, true ); + if( parsedUrl.protocol == "https:" && !parsedUrl.port ) { + parsedUrl.port= 443; + } + + var http_library= this._chooseHttpLibrary( parsedUrl ); + + + var realHeaders= {}; + for( var key in this._customHeaders ) { + realHeaders[key]= this._customHeaders[key]; + } + if( headers ) { + for(var key in headers) { + realHeaders[key] = headers[key]; + } + } + realHeaders['Host']= parsedUrl.host; + + if (!realHeaders['User-Agent']) { + realHeaders['User-Agent'] = 'Node-oauth'; + } + + if( post_body ) { + if ( Buffer.isBuffer(post_body) ) { + realHeaders["Content-Length"]= post_body.length; + } else { + realHeaders["Content-Length"]= Buffer.byteLength(post_body); + } + } else { + realHeaders["Content-length"]= 0; + } + + if( access_token && !('Authorization' in realHeaders)) { + if( ! parsedUrl.query ) parsedUrl.query= {}; + parsedUrl.query[this._accessTokenName]= access_token; + } + + var queryStr= querystring.stringify(parsedUrl.query); + if( queryStr ) queryStr= "?" + queryStr; + var options = { + host:parsedUrl.hostname, + port: parsedUrl.port, + path: parsedUrl.pathname + queryStr, + method: method, + headers: realHeaders + }; + + this._executeRequest( http_library, options, post_body, callback ); +} + +exports.OAuth2.prototype._executeRequest= function( http_library, options, post_body, callback ) { + // Some hosts *cough* google appear to close the connection early / send no content-length header + // allow this behaviour. + var allowEarlyClose= OAuthUtils.isAnEarlyCloseHost(options.host); + var callbackCalled= false; + function passBackControl( response, result ) { + if(!callbackCalled) { + callbackCalled=true; + if( !(response.statusCode >= 200 && response.statusCode <= 299) && (response.statusCode != 301) && (response.statusCode != 302) ) { + callback({ statusCode: response.statusCode, data: result }); + } else { + callback(null, result, response); + } + } + } + + var result= ""; + + //set the agent on the request options + if (this._agent) { + options.agent = this._agent; + } + + var request = http_library.request(options); + request.on('response', function (response) { + response.on("data", function (chunk) { + result+= chunk + }); + response.on("close", function (err) { + if( allowEarlyClose ) { + passBackControl( response, result ); + } + }); + response.addListener("end", function () { + passBackControl( response, result ); + }); + }); + request.on('error', function(e) { + callbackCalled= true; + callback(e); + }); + + if( (options.method == 'POST' || options.method == 'PUT') && post_body ) { + request.write(post_body); + } + request.end(); +} + +exports.OAuth2.prototype.getAuthorizeUrl= function( params ) { + var params= params || {}; + params['client_id'] = this._clientId; + return this._baseSite + this._authorizeUrl + "?" + querystring.stringify(params); +} + +exports.OAuth2.prototype.getOAuthAccessToken= function(code, params, callback) { + var params= params || {}; + params['client_id'] = this._clientId; + params['client_secret'] = this._clientSecret; + var codeParam = (params.grant_type === 'refresh_token') ? 'refresh_token' : 'code'; + params[codeParam]= code; + + var post_data= querystring.stringify( params ); + var post_headers= { + 'Content-Type': 'application/x-www-form-urlencoded' + }; + + + this._request("POST", this._getAccessTokenUrl(), post_headers, post_data, null, function(error, data, response) { + if( error ) callback(error); + else { + var results; + try { + // As of http://tools.ietf.org/html/draft-ietf-oauth-v2-07 + // responses should be in JSON + results= JSON.parse( data ); + } + catch(e) { + // .... However both Facebook + Github currently use rev05 of the spec + // and neither seem to specify a content-type correctly in their response headers :( + // clients of these services will suffer a *minor* performance cost of the exception + // being thrown + results= querystring.parse( data ); + } + var access_token= results["access_token"]; + var refresh_token= results["refresh_token"]; + delete results["refresh_token"]; + callback(null, access_token, refresh_token, results); // callback results =-= + } + }); +} + +// Deprecated +exports.OAuth2.prototype.getProtectedResource= function(url, access_token, callback) { + this._request("GET", url, {}, "", access_token, callback ); +} + +exports.OAuth2.prototype.get= function(url, access_token, callback) { + if( this._useAuthorizationHeaderForGET ) { + var headers= {'Authorization': this.buildAuthHeader(access_token) } + access_token= null; + } + else { + headers= {}; + } + this._request("GET", url, headers, "", access_token, callback ); +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/lib/sha1.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/lib/sha1.js new file mode 100644 index 00000000..d73277a6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/lib/sha1.js @@ -0,0 +1,334 @@ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS 180-1 + * Version 2.2 Copyright Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +/* + * Configurable variables. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + */ +var hexcase = 1; /* hex output format. 0 - lowercase; 1 - uppercase */ +var b64pad = "="; /* base-64 pad character. "=" for strict RFC compliance */ + +/* + * These are the functions you'll usually want to call + * They take string arguments and return either hex or base-64 encoded strings + */ +function hex_sha1(s) { return rstr2hex(rstr_sha1(str2rstr_utf8(s))); } +function b64_sha1(s) { return rstr2b64(rstr_sha1(str2rstr_utf8(s))); } +function any_sha1(s, e) { return rstr2any(rstr_sha1(str2rstr_utf8(s)), e); } +function hex_hmac_sha1(k, d) + { return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); } +function b64_hmac_sha1(k, d) + { return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); } +function any_hmac_sha1(k, d, e) + { return rstr2any(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d)), e); } + +/* + * Perform a simple self-test to see if the VM is working + */ +function sha1_vm_test() +{ + return hex_sha1("abc").toLowerCase() == "a9993e364706816aba3e25717850c26c9cd0d89d"; +} + +/* + * Calculate the SHA1 of a raw string + */ +function rstr_sha1(s) +{ + return binb2rstr(binb_sha1(rstr2binb(s), s.length * 8)); +} + +/* + * Calculate the HMAC-SHA1 of a key and some data (raw strings) + */ +function rstr_hmac_sha1(key, data) +{ + var bkey = rstr2binb(key); + if(bkey.length > 16) bkey = binb_sha1(bkey, key.length * 8); + + var ipad = Array(16), opad = Array(16); + for(var i = 0; i < 16; i++) + { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + var hash = binb_sha1(ipad.concat(rstr2binb(data)), 512 + data.length * 8); + return binb2rstr(binb_sha1(opad.concat(hash), 512 + 160)); +} + +/* + * Convert a raw string to a hex string + */ +function rstr2hex(input) +{ + try { hexcase } catch(e) { hexcase=0; } + var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; + var output = ""; + var x; + for(var i = 0; i < input.length; i++) + { + x = input.charCodeAt(i); + output += hex_tab.charAt((x >>> 4) & 0x0F) + + hex_tab.charAt( x & 0x0F); + } + return output; +} + +/* + * Convert a raw string to a base-64 string + */ +function rstr2b64(input) +{ + try { b64pad } catch(e) { b64pad=''; } + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var output = ""; + var len = input.length; + for(var i = 0; i < len; i += 3) + { + var triplet = (input.charCodeAt(i) << 16) + | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0) + | (i + 2 < len ? input.charCodeAt(i+2) : 0); + for(var j = 0; j < 4; j++) + { + if(i * 8 + j * 6 > input.length * 8) output += b64pad; + else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); + } + } + return output; +} + +/* + * Convert a raw string to an arbitrary string encoding + */ +function rstr2any(input, encoding) +{ + var divisor = encoding.length; + var remainders = Array(); + var i, q, x, quotient; + + /* Convert to an array of 16-bit big-endian values, forming the dividend */ + var dividend = Array(Math.ceil(input.length / 2)); + for(i = 0; i < dividend.length; i++) + { + dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1); + } + + /* + * Repeatedly perform a long division. The binary array forms the dividend, + * the length of the encoding is the divisor. Once computed, the quotient + * forms the dividend for the next step. We stop when the dividend is zero. + * All remainders are stored for later use. + */ + while(dividend.length > 0) + { + quotient = Array(); + x = 0; + for(i = 0; i < dividend.length; i++) + { + x = (x << 16) + dividend[i]; + q = Math.floor(x / divisor); + x -= q * divisor; + if(quotient.length > 0 || q > 0) + quotient[quotient.length] = q; + } + remainders[remainders.length] = x; + dividend = quotient; + } + + /* Convert the remainders to the output string */ + var output = ""; + for(i = remainders.length - 1; i >= 0; i--) + output += encoding.charAt(remainders[i]); + + /* Append leading zero equivalents */ + var full_length = Math.ceil(input.length * 8 / + (Math.log(encoding.length) / Math.log(2))) + for(i = output.length; i < full_length; i++) + output = encoding[0] + output; + + return output; +} + +/* + * Encode a string as utf-8. + * For efficiency, this assumes the input is valid utf-16. + */ +function str2rstr_utf8(input) +{ + var output = ""; + var i = -1; + var x, y; + + while(++i < input.length) + { + /* Decode utf-16 surrogate pairs */ + x = input.charCodeAt(i); + y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0; + if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) + { + x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); + i++; + } + + /* Encode output as utf-8 */ + if(x <= 0x7F) + output += String.fromCharCode(x); + else if(x <= 0x7FF) + output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F), + 0x80 | ( x & 0x3F)); + else if(x <= 0xFFFF) + output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), + 0x80 | ((x >>> 6 ) & 0x3F), + 0x80 | ( x & 0x3F)); + else if(x <= 0x1FFFFF) + output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), + 0x80 | ((x >>> 12) & 0x3F), + 0x80 | ((x >>> 6 ) & 0x3F), + 0x80 | ( x & 0x3F)); + } + return output; +} + +/* + * Encode a string as utf-16 + */ +function str2rstr_utf16le(input) +{ + var output = ""; + for(var i = 0; i < input.length; i++) + output += String.fromCharCode( input.charCodeAt(i) & 0xFF, + (input.charCodeAt(i) >>> 8) & 0xFF); + return output; +} + +function str2rstr_utf16be(input) +{ + var output = ""; + for(var i = 0; i < input.length; i++) + output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, + input.charCodeAt(i) & 0xFF); + return output; +} + +/* + * Convert a raw string to an array of big-endian words + * Characters >255 have their high-byte silently ignored. + */ +function rstr2binb(input) +{ + var output = Array(input.length >> 2); + for(var i = 0; i < output.length; i++) + output[i] = 0; + for(var i = 0; i < input.length * 8; i += 8) + output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32); + return output; +} + +/* + * Convert an array of big-endian words to a string + */ +function binb2rstr(input) +{ + var output = ""; + for(var i = 0; i < input.length * 32; i += 8) + output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF); + return output; +} + +/* + * Calculate the SHA-1 of an array of big-endian words, and a bit length + */ +function binb_sha1(x, len) +{ + /* append padding */ + x[len >> 5] |= 0x80 << (24 - len % 32); + x[((len + 64 >> 9) << 4) + 15] = len; + + var w = Array(80); + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + var e = -1009589776; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + var olde = e; + + for(var j = 0; j < 80; j++) + { + if(j < 16) w[j] = x[i + j]; + else w[j] = bit_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); + var t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)), + safe_add(safe_add(e, w[j]), sha1_kt(j))); + e = d; + d = c; + c = bit_rol(b, 30); + b = a; + a = t; + } + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + e = safe_add(e, olde); + } + return Array(a, b, c, d, e); + +} + +/* + * Perform the appropriate triplet combination function for the current + * iteration + */ +function sha1_ft(t, b, c, d) +{ + if(t < 20) return (b & c) | ((~b) & d); + if(t < 40) return b ^ c ^ d; + if(t < 60) return (b & c) | (b & d) | (c & d); + return b ^ c ^ d; +} + +/* + * Determine the appropriate additive constant for the current iteration + */ +function sha1_kt(t) +{ + return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : + (t < 60) ? -1894007588 : -899497514; +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function bit_rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} + +exports.HMACSHA1= function(key, data) { + return b64_hmac_sha1(key, data); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/package.json b/srcs/requirements/nestjs/api_back/node_modules/oauth/package.json new file mode 100644 index 00000000..fa35b6f7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/package.json @@ -0,0 +1,15 @@ +{ "name" : "oauth" +, "description" : "Library for interacting with OAuth 1.0, 1.0A, 2 and Echo. Provides simplified client access and allows for construction of more complex apis and OAuth providers." +, "version" : "0.9.15" +, "directories" : { "lib" : "./lib" } +, "main" : "index.js" +, "author" : "Ciaran Jessup " +, "repository" : { "type":"git", "url":"http://github.com/ciaranj/node-oauth.git" } +, "devDependencies": { + "vows": "0.5.x" + } +, "scripts": { + "test": "make test" + } +, "license": "MIT" +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/tests/oauth2tests.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/tests/oauth2tests.js new file mode 100644 index 00000000..8be23e35 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/tests/oauth2tests.js @@ -0,0 +1,304 @@ +var vows = require('vows'), + assert = require('assert'), + DummyResponse= require('./shared').DummyResponse, + DummyRequest= require('./shared').DummyRequest, + https = require('https'), + OAuth2= require('../lib/oauth2').OAuth2, + url = require('url'); + +vows.describe('OAuth2').addBatch({ + 'Given an OAuth2 instance with clientId and clientSecret, ': { + topic: new OAuth2("clientId", "clientSecret"), + 'When dealing with the response from the OP': { + 'we should treat a 201 response as a success': function(oa) { + var callbackCalled= false; + var http_library= { + request: function() { + return new DummyRequest(new DummyResponse(201)); + } + }; + oa._executeRequest( http_library, {}, null, function(err, result, response) { + callbackCalled= true; + assert.equal(err, null); + }); + assert.ok(callbackCalled); + }, + 'we should treat a 200 response as a success': function(oa) { + var callbackCalled= false; + var http_library= { + request: function() { + return new DummyRequest(new DummyResponse(200)); + } + }; + oa._executeRequest( http_library, {}, null, function(err, result, response) { + callbackCalled= true; + assert.equal(err, null); + }); + assert.ok(callbackCalled); + } + }, + 'When handling the access token response': { + 'we should correctly extract the token if received as form-data': function (oa) { + oa._request= function( method, url, fo, bar, bleh, callback) { + callback(null, "access_token=access&refresh_token=refresh"); + }; + oa.getOAuthAccessToken("", {}, function(error, access_token, refresh_token) { + assert.equal( access_token, "access"); + assert.equal( refresh_token, "refresh"); + }); + }, + 'we should not include access token in both querystring and headers (favours headers if specified)': function (oa) { + oa._request = new OAuth2("clientId", "clientSecret")._request.bind(oa); + oa._executeRequest= function( http_library, options, post_body, callback) { + callback(null, url.parse(options.path, true).query, options.headers); + }; + + oa._request("GET", "http://foo/", {"Authorization":"Bearer BadNews"}, null, "accessx", function(error, query, headers) { + assert.ok( !('access_token' in query), "access_token also in query"); + assert.ok( 'Authorization' in headers, "Authorization not in headers"); + }); + }, + 'we should include access token in the querystring if no Authorization header present to override it': function (oa) { + oa._request = new OAuth2("clientId", "clientSecret")._request.bind(oa); + oa._executeRequest= function( http_library, options, post_body, callback) { + callback(null, url.parse(options.path, true).query, options.headers); + }; + oa._request("GET", "http://foo/", {}, null, "access", function(error, query, headers) { + assert.ok( 'access_token' in query, "access_token not present in query"); + assert.ok( !('Authorization' in headers), "Authorization in headers"); + }); + }, + 'we should correctly extract the token if received as a JSON literal': function (oa) { + oa._request= function(method, url, headers, post_body, access_token, callback) { + callback(null, '{"access_token":"access","refresh_token":"refresh"}'); + }; + oa.getOAuthAccessToken("", {}, function(error, access_token, refresh_token) { + assert.equal( access_token, "access"); + assert.equal( refresh_token, "refresh"); + }); + }, + 'we should return the received data to the calling method': function (oa) { + oa._request= function(method, url, headers, post_body, access_token, callback) { + callback(null, '{"access_token":"access","refresh_token":"refresh","extra_1":1, "extra_2":"foo"}'); + }; + oa.getOAuthAccessToken("", {}, function(error, access_token, refresh_token, results) { + assert.equal( access_token, "access"); + assert.equal( refresh_token, "refresh"); + assert.isNotNull( results ); + assert.equal( results.extra_1, 1); + assert.equal( results.extra_2, "foo"); + }); + } + }, + 'When no grant_type parameter is specified': { + 'we should pass the value of the code argument as the code parameter': function(oa) { + oa._request= function(method, url, headers, post_body, access_token, callback) { + assert.isTrue( post_body.indexOf("code=xsds23") != -1 ); + }; + oa.getOAuthAccessToken("xsds23", {} ); + } + }, + 'When an invalid grant_type parameter is specified': { + 'we should pass the value of the code argument as the code parameter': function(oa) { + oa._request= function(method, url, headers, post_body, access_token, callback) { + assert.isTrue( post_body.indexOf("code=xsds23") != -1 ); + }; + oa.getOAuthAccessToken("xsds23", {grant_type:"refresh_toucan"} ); + } + }, + 'When a grant_type parameter of value "refresh_token" is specified': { + 'we should pass the value of the code argument as the refresh_token parameter, should pass a grant_type parameter, but shouldn\'t pass a code parameter' : function(oa) { + oa._request= function(method, url, headers, post_body, access_token, callback) { + assert.isTrue( post_body.indexOf("refresh_token=sdsds2") != -1 ); + assert.isTrue( post_body.indexOf("grant_type=refresh_token") != -1 ); + assert.isTrue( post_body.indexOf("code=") == -1 ); + }; + oa.getOAuthAccessToken("sdsds2", {grant_type:"refresh_token"} ); + } + }, + 'When we use the authorization header': { + 'and call get with the default authorization method': { + 'we should pass the authorization header with Bearer method and value of the access_token, _request should be passed a null access_token' : function(oa) { + oa._request= function(method, url, headers, post_body, access_token, callback) { + assert.equal(headers["Authorization"], "Bearer abcd5"); + assert.isNull( access_token ); + }; + oa.useAuthorizationHeaderforGET(true); + oa.get("", "abcd5"); + } + }, + 'and call get with the authorization method set to Basic': { + 'we should pass the authorization header with Basic method and value of the access_token, _request should be passed a null access_token' : function(oa) { + oa._request= function(method, url, headers, post_body, access_token, callback) { + assert.equal(headers["Authorization"], "Basic cdg2"); + assert.isNull( access_token ); + }; + oa.useAuthorizationHeaderforGET(true); + oa.setAuthMethod("Basic"); + oa.get("", "cdg2"); + } + } + }, + 'When we do not use the authorization header': { + 'and call get': { + 'we should pass NOT provide an authorization header and the access_token should be being passed to _request' : function(oa) { + oa._request= function(method, url, headers, post_body, access_token, callback) { + assert.isUndefined(headers["Authorization"]); + assert.equal( access_token, "abcd5" ); + }; + oa.useAuthorizationHeaderforGET(false); + oa.get("", "abcd5"); + } + } + } + }, + 'Given an OAuth2 instance with clientId, clientSecret and customHeaders': { + topic: new OAuth2("clientId", "clientSecret", undefined, undefined, undefined, + { 'SomeHeader': '123' }), + 'When GETing': { + 'we should see the custom headers mixed into headers property in options passed to http-library' : function(oa) { + oa._executeRequest= function( http_library, options, callback ) { + assert.equal(options.headers["SomeHeader"], "123"); + }; + oa.get("", {}); + }, + } + }, + 'Given an OAuth2 instance with a clientId and clientSecret': { + topic: new OAuth2("clientId", "clientSecret"), + 'When POSTing': { + 'we should see a given string being sent to the request' : function(oa) { + var bodyWritten= false; + oa._chooseHttpLibrary= function() { + return { + request: function(options) { + assert.equal(options.headers["Content-Type"], "text/plain"); + assert.equal(options.headers["Content-Length"], 26); + assert.equal(options.method, "POST"); + return { + end: function() {}, + on: function() {}, + write: function(body) { + bodyWritten= true; + assert.isNotNull(body); + assert.equal(body, "THIS_IS_A_POST_BODY_STRING") + } + } + } + }; + } + oa._request("POST", "", {"Content-Type":"text/plain"}, "THIS_IS_A_POST_BODY_STRING"); + assert.ok( bodyWritten ); + }, + 'we should see a given buffer being sent to the request' : function(oa) { + var bodyWritten= false; + oa._chooseHttpLibrary= function() { + return { + request: function(options) { + assert.equal(options.headers["Content-Type"], "application/octet-stream"); + assert.equal(options.headers["Content-Length"], 4); + assert.equal(options.method, "POST"); + return { + end: function() {}, + on: function() {}, + write: function(body) { + bodyWritten= true; + assert.isNotNull(body); + assert.equal(4, body.length) + } + } + } + }; + } + oa._request("POST", "", {"Content-Type":"application/octet-stream"}, new Buffer([1,2,3,4])); + assert.ok( bodyWritten ); + } + }, + 'When PUTing': { + 'we should see a given string being sent to the request' : function(oa) { + var bodyWritten= false; + oa._chooseHttpLibrary= function() { + return { + request: function(options) { + assert.equal(options.headers["Content-Type"], "text/plain"); + assert.equal(options.headers["Content-Length"], 25); + assert.equal(options.method, "PUT"); + return { + end: function() {}, + on: function() {}, + write: function(body) { + bodyWritten= true; + assert.isNotNull(body); + assert.equal(body, "THIS_IS_A_PUT_BODY_STRING") + } + } + } + }; + } + oa._request("PUT", "", {"Content-Type":"text/plain"}, "THIS_IS_A_PUT_BODY_STRING"); + assert.ok( bodyWritten ); + }, + 'we should see a given buffer being sent to the request' : function(oa) { + var bodyWritten= false; + oa._chooseHttpLibrary= function() { + return { + request: function(options) { + assert.equal(options.headers["Content-Type"], "application/octet-stream"); + assert.equal(options.headers["Content-Length"], 4); + assert.equal(options.method, "PUT"); + return { + end: function() {}, + on: function() {}, + write: function(body) { + bodyWritten= true; + assert.isNotNull(body); + assert.equal(4, body.length) + } + } + } + }; + } + oa._request("PUT", "", {"Content-Type":"application/octet-stream"}, new Buffer([1,2,3,4])); + assert.ok( bodyWritten ); + } + } + }, + 'When the user passes in the User-Agent in customHeaders': { + topic: new OAuth2("clientId", "clientSecret", undefined, undefined, undefined, + { 'User-Agent': '123Agent' }), + 'When calling get': { + 'we should see the User-Agent mixed into headers property in options passed to http-library' : function(oa) { + oa._executeRequest= function( http_library, options, callback ) { + assert.equal(options.headers["User-Agent"], "123Agent"); + }; + oa.get("", {}); + } + } + }, + 'When the user does not pass in a User-Agent in customHeaders': { + topic: new OAuth2("clientId", "clientSecret", undefined, undefined, undefined, + undefined), + 'When calling get': { + 'we should see the default User-Agent mixed into headers property in options passed to http-library' : function(oa) { + oa._executeRequest= function( http_library, options, callback ) { + assert.equal(options.headers["User-Agent"], "Node-oauth"); + }; + oa.get("", {}); + } + } + }, + 'When specifying an agent, that agent is passed to the HTTP request method' : { + topic : new OAuth2('clientId', 'clientSecret', undefined, undefined, undefined, undefined), + 'When calling _executeRequest': { + 'we whould see the agent being put into the options' : function(oa) { + oa.setAgent('awesome agent'); + oa._executeRequest({ + request : function(options, cb) { + assert.equal(options.agent, 'awesome agent'); + return new DummyRequest(new DummyResponse(200)); + } + }, {}, null, function() {}); + } + } + } +}).export(module); diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/tests/oauthtests.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/tests/oauthtests.js new file mode 100644 index 00000000..d36bfed7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/tests/oauthtests.js @@ -0,0 +1,1064 @@ +var vows = require('vows'), + assert = require('assert'), + DummyResponse= require('./shared').DummyResponse, + DummyRequest= require('./shared').DummyRequest, + events = require('events'), + OAuth= require('../lib/oauth').OAuth, + OAuthEcho= require('../lib/oauth').OAuthEcho, + crypto = require('crypto'); + +//Valid RSA keypair used to test RSA-SHA1 signature method +var RsaPrivateKey = "-----BEGIN RSA PRIVATE KEY-----\n" + +"MIICXQIBAAKBgQDizE4gQP5nPQhzof/Vp2U2DDY3UY/Gxha2CwKW0URe7McxtnmE\n" + +"CrZnT1n/YtfrrCNxY5KMP4o8hMrxsYEe05+1ZGFT68ztms3puUxilU5E3BQMhz1t\n" + +"JMJEGcTt8nZUlM4utli7fHgDtWbhvqvYjRMGn3AjyLOfY8XZvnFkGjipvQIDAQAB\n" + +"AoGAKgk6FcpWHOZ4EY6eL4iGPt1Gkzw/zNTcUsN5qGCDLqDuTq2Gmk2t/zn68VXt\n" + +"tVXDf/m3qN0CDzOBtghzaTZKLGhnSewQ98obMWgPcvAsb4adEEeW1/xigbMiaW2X\n" + +"cu6GhZxY16edbuQ40LRrPoVK94nXQpj8p7w4IQ301Sm8PSECQQD1ZlOj4ugvfhEt\n" + +"exi4WyAaM45fylmN290UXYqZ8SYPI/VliDytIlMfyq5Rv+l+dud1XDPrWOQ0ImgV\n" + +"HJn7uvoZAkEA7JhHNmHF9dbdF9Koj86K2Cl6c8KUu7U7d2BAuB6pPkt8+D8+y4St\n" + +"PaCmN4oP4X+sf5rqBYoXywHlqEei2BdpRQJBAMYgR4cZu7wcXGIL8HlnmROObHSK\n" + +"OqN9z5CRtUV0nPW8YnQG+nYOMG6KhRMbjri750OpnYF100kEPmRNI0VKQIECQE8R\n" + +"fQsRleTYz768ahTVQ9WF1ySErMwmfx8gDcD6jjkBZVxZVpURXAwyehopi7Eix/VF\n" + +"QlxjkBwKIEQi3Ks297kCQQCL9by1bueKDMJO2YX1Brm767pkDKkWtGfPS+d3xMtC\n" + +"KJHHCqrS1V+D5Q89x5wIRHKxE5UMTc0JNa554OxwFORX\n" + +"-----END RSA PRIVATE KEY-----"; + +var RsaPublicKey = "-----BEGIN PUBLIC KEY-----\n" + +"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDizE4gQP5nPQhzof/Vp2U2DDY3\n" + +"UY/Gxha2CwKW0URe7McxtnmECrZnT1n/YtfrrCNxY5KMP4o8hMrxsYEe05+1ZGFT\n" + +"68ztms3puUxilU5E3BQMhz1tJMJEGcTt8nZUlM4utli7fHgDtWbhvqvYjRMGn3Aj\n" + +"yLOfY8XZvnFkGjipvQIDAQAB\n" + +"-----END PUBLIC KEY-----"; + +vows.describe('OAuth').addBatch({ + 'When newing OAuth': { + topic: new OAuth(null, null, null, null, null, null, "PLAINTEXT"), + 'followRedirects is enabled by default': function (oa) { + assert.equal(oa._clientOptions.followRedirects, true) + } + }, + 'When generating the signature base string described in http://oauth.net/core/1.0/#sig_base_example': { + topic: new OAuth(null, null, null, null, null, null, "HMAC-SHA1"), + 'we get the expected result string': function (oa) { + var result= oa._createSignatureBase("GET", "http://photos.example.net/photos", + "file=vacation.jpg&oauth_consumer_key=dpf43f3p2l4k3l03&oauth_nonce=kllo9940pd9333jh&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1191242096&oauth_token=nnch734d00sl2jdk&oauth_version=1.0&size=original") + assert.equal( result, "GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3Dkllo9940pd9333jh%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26oauth_version%3D1.0%26size%3Doriginal"); + } + }, + 'When generating the signature with RSA-SHA1': { + topic: new OAuth(null, null, null, RsaPrivateKey, null, null, "RSA-SHA1"), + 'we get a valid oauth signature': function (oa) { + var signatureBase = "GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3Dkllo9940pd9333jh%26oauth_signature_method%3DRSA-SHA1%26oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26oauth_version%3D1.0%26size%3Doriginal"; + var oauthSignature = oa._createSignature(signatureBase, "xyz4992k83j47x0b"); + + assert.equal( oauthSignature, "qS4rhWog7GPgo4ZCJvUdC/1ZAax/Q4Ab9yOBvgxSopvmKUKp5rso+Zda46GbyN2hnYDTiA/g3P/d/YiPWa454BEBb/KWFV83HpLDIoqUUhJnlXX9MqRQQac0oeope4fWbGlfTdL2PXjSFJmvfrzybERD/ZufsFtVrQKS3QBpYiw="); + + //now check that given the public key we can verify this signature + var verifier = crypto.createVerify("RSA-SHA1").update(signatureBase); + var valid = verifier.verify(RsaPublicKey, oauthSignature, 'base64'); + assert.ok( valid, "Signature could not be verified with RSA public key"); + } + }, + 'When generating the signature base string with PLAINTEXT': { + topic: new OAuth(null, null, null, null, null, null, "PLAINTEXT"), + 'we get the expected result string': function (oa) { + var result= oa._getSignature("GET", "http://photos.example.net/photos", + "file=vacation.jpg&oauth_consumer_key=dpf43f3p2l4k3l03&oauth_nonce=kllo9940pd9333jh&oauth_signature_method=PLAINTEXT&oauth_timestamp=1191242096&oauth_token=nnch734d00sl2jdk&oauth_version=1.0&size=original", + "test"); + assert.equal( result, "&test"); + } + }, + 'When normalising a url': { + topic: new OAuth(null, null, null, null, null, null, "HMAC-SHA1"), + 'default ports should be stripped': function(oa) { + assert.equal( oa._normalizeUrl("https://somehost.com:443/foo/bar"), "https://somehost.com/foo/bar" ); + }, + 'should leave in non-default ports from urls for use in signature generation': function(oa) { + assert.equal( oa._normalizeUrl("https://somehost.com:446/foo/bar"), "https://somehost.com:446/foo/bar" ); + assert.equal( oa._normalizeUrl("http://somehost.com:81/foo/bar"), "http://somehost.com:81/foo/bar" ); + }, + 'should add a trailing slash when no path at all is present': function(oa) { + assert.equal( oa._normalizeUrl("http://somehost.com"), "http://somehost.com/") + } + }, + 'When making an array out of the arguments hash' : { + topic: new OAuth(null, null, null, null, null, null, "HMAC-SHA1"), + 'flatten out arguments that are arrays' : function(oa) { + var parameters= {"z": "a", + "a": ["1", "2"], + "1": "c" }; + var parameterResults= oa._makeArrayOfArgumentsHash(parameters); + assert.equal(parameterResults.length, 4); + assert.equal(parameterResults[0][0], "1"); + assert.equal(parameterResults[1][0], "z"); + assert.equal(parameterResults[2][0], "a"); + assert.equal(parameterResults[3][0], "a"); + } + }, + 'When ordering the request parameters' : { + topic: new OAuth(null, null, null, null, null, null, "HMAC-SHA1"), + 'Order them by name' : function(oa) { + var parameters= {"z": "a", + "a": "b", + "1": "c" }; + var parameterResults= oa._sortRequestParams(oa._makeArrayOfArgumentsHash(parameters)) + assert.equal(parameterResults[0][0], "1"); + assert.equal(parameterResults[1][0], "a"); + assert.equal(parameterResults[2][0], "z"); + }, + 'If two parameter names are the same then order by the value': function(oa) { + var parameters= {"z": "a", + "a": ["z", "b", "b", "a", "y"], + "1": "c" }; + var parameterResults= oa._sortRequestParams(oa._makeArrayOfArgumentsHash(parameters)) + assert.equal(parameterResults[0][0], "1"); + assert.equal(parameterResults[1][0], "a"); + assert.equal(parameterResults[1][1], "a"); + assert.equal(parameterResults[2][0], "a"); + assert.equal(parameterResults[2][1], "b"); + assert.equal(parameterResults[3][0], "a"); + assert.equal(parameterResults[3][1], "b"); + assert.equal(parameterResults[4][0], "a"); + assert.equal(parameterResults[4][1], "y"); + assert.equal(parameterResults[5][0], "a"); + assert.equal(parameterResults[5][1], "z"); + assert.equal(parameterResults[6][0], "z"); + } + }, + 'When normalising the request parameters': { + topic: new OAuth(null, null, null, null, null, null, "HMAC-SHA1"), + 'the resulting parameters should be encoded and ordered as per http://tools.ietf.org/html/rfc5849#section-3.1 (3.4.1.3.2)' : function(oa) { + var parameters= {"b5" : "=%3D", + "a3": ["a", "2 q"], + "c@": "", + "a2": "r b", + "oauth_consumer_key": "9djdj82h48djs9d2", + "oauth_token":"kkk9d7dh3k39sjv7", + "oauth_signature_method": "HMAC-SHA1", + "oauth_timestamp": "137131201", + "oauth_nonce": "7d8f3e4a", + "c2" : ""}; + var normalisedParameterString= oa._normaliseRequestParams(parameters); + assert.equal(normalisedParameterString, "a2=r%20b&a3=2%20q&a3=a&b5=%3D%253D&c%40=&c2=&oauth_consumer_key=9djdj82h48djs9d2&oauth_nonce=7d8f3e4a&oauth_signature_method=HMAC-SHA1&oauth_timestamp=137131201&oauth_token=kkk9d7dh3k39sjv7"); + } + }, + 'When preparing the parameters for use in signing': { + topic: new OAuth(null, null, null, null, null, null, "HMAC-SHA1"), + 'We need to be wary of node\'s auto object creation from foo[bar] style url parameters' : function(oa) { + var result= oa._prepareParameters( "", "", "", "http://foo.com?foo[bar]=xxx&bar[foo]=yyy", {} ); + assert.equal( result[0][0], "bar[foo]") + assert.equal( result[0][1], "yyy") + assert.equal( result[1][0], "foo[bar]") + assert.equal( result[1][1], "xxx") + } + }, + 'When signing a url': { + topic: function() { + var oa= new OAuth(null, null, "consumerkey", "consumersecret", "1.0", null, "HMAC-SHA1"); + oa._getTimestamp= function(){ return "1272399856"; } + oa._getNonce= function(){ return "ybHPeOEkAUJ3k2wJT9Xb43MjtSgTvKqp"; } + return oa; + }, + 'Provide a valid signature when no token present': function(oa) { + assert.equal( oa.signUrl("http://somehost.com:3323/foo/poop?bar=foo"), "http://somehost.com:3323/foo/poop?bar=foo&oauth_consumer_key=consumerkey&oauth_nonce=ybHPeOEkAUJ3k2wJT9Xb43MjtSgTvKqp&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1272399856&oauth_version=1.0&oauth_signature=7ytO8vPSLut2GzHjU9pn1SV9xjc%3D"); + }, + 'Provide a valid signature when a token is present': function(oa) { + assert.equal( oa.signUrl("http://somehost.com:3323/foo/poop?bar=foo", "token"), "http://somehost.com:3323/foo/poop?bar=foo&oauth_consumer_key=consumerkey&oauth_nonce=ybHPeOEkAUJ3k2wJT9Xb43MjtSgTvKqp&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1272399856&oauth_token=token&oauth_version=1.0&oauth_signature=9LwCuCWw5sURtpMroIolU3YwsdI%3D"); + }, + 'Provide a valid signature when a token and a token secret is present': function(oa) { + assert.equal( oa.signUrl("http://somehost.com:3323/foo/poop?bar=foo", "token", "tokensecret"), "http://somehost.com:3323/foo/poop?bar=foo&oauth_consumer_key=consumerkey&oauth_nonce=ybHPeOEkAUJ3k2wJT9Xb43MjtSgTvKqp&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1272399856&oauth_token=token&oauth_version=1.0&oauth_signature=zeOR0Wsm6EG6XSg0Vw%2FsbpoSib8%3D"); + } + }, + 'When getting a request token': { + topic: function() { + var oa= new OAuth(null, null, "consumerkey", "consumersecret", "1.0", null, "HMAC-SHA1"); + oa._getTimestamp= function(){ return "1272399856"; } + oa._getNonce= function(){ return "ybHPeOEkAUJ3k2wJT9Xb43MjtSgTvKqp"; } + oa._performSecureRequest= function(){ return this.requestArguments = arguments; } + return oa; + }, + 'Use the HTTP method in the client options': function(oa) { + oa.setClientOptions({ requestTokenHttpMethod: "GET" }); + oa.getOAuthRequestToken(function() {}); + assert.equal(oa.requestArguments[2], "GET"); + }, + 'Use a POST by default': function(oa) { + oa.setClientOptions({}); + oa.getOAuthRequestToken(function() {}); + assert.equal(oa.requestArguments[2], "POST"); + } + }, + 'When getting an access token': { + topic: function() { + var oa= new OAuth(null, null, "consumerkey", "consumersecret", "1.0", null, "HMAC-SHA1"); + oa._getTimestamp= function(){ return "1272399856"; } + oa._getNonce= function(){ return "ybHPeOEkAUJ3k2wJT9Xb43MjtSgTvKqp"; } + oa._performSecureRequest= function(){ return this.requestArguments = arguments; } + return oa; + }, + 'Use the HTTP method in the client options': function(oa) { + oa.setClientOptions({ accessTokenHttpMethod: "GET" }); + oa.getOAuthAccessToken(function() {}); + assert.equal(oa.requestArguments[2], "GET"); + }, + 'Use a POST by default': function(oa) { + oa.setClientOptions({}); + oa.getOAuthAccessToken(function() {}); + assert.equal(oa.requestArguments[2], "POST"); + } + }, + 'When get authorization header' : { + topic: function() { + var oa= new OAuth(null, null, "consumerkey", "consumersecret", "1.0", null, "HMAC-SHA1"); + oa._getTimestamp= function(){ return "1272399856"; } + oa._getNonce= function(){ return "ybHPeOEkAUJ3k2wJT9Xb43MjtSgTvKqp"; } + return oa; + }, + 'Provide a valid signature when a token and a token secret is present': function(oa) { + assert.equal( oa.authHeader("http://somehost.com:3323/foo/poop?bar=foo", "token", "tokensecret"), 'OAuth oauth_consumer_key="consumerkey",oauth_nonce="ybHPeOEkAUJ3k2wJT9Xb43MjtSgTvKqp",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1272399856",oauth_token="token",oauth_version="1.0",oauth_signature="zeOR0Wsm6EG6XSg0Vw%2FsbpoSib8%3D"'); + }, + 'Support variable whitespace separating the arguments': function(oa) { + oa._oauthParameterSeperator= ", "; + assert.equal( oa.authHeader("http://somehost.com:3323/foo/poop?bar=foo", "token", "tokensecret"), 'OAuth oauth_consumer_key="consumerkey", oauth_nonce="ybHPeOEkAUJ3k2wJT9Xb43MjtSgTvKqp", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1272399856", oauth_token="token", oauth_version="1.0", oauth_signature="zeOR0Wsm6EG6XSg0Vw%2FsbpoSib8%3D"'); + } + }, + 'When get the OAuth Echo authorization header': { + topic: function () { + var realm = "http://foobar.com/"; + var verifyCredentials = "http://api.foobar.com/verify.json"; + var oa = new OAuthEcho(realm, verifyCredentials, "consumerkey", "consumersecret", "1.0A", "HMAC-SHA1"); + oa._getTimestamp= function(){ return "1272399856"; } + oa._getNonce= function(){ return "ybHPeOEkAUJ3k2wJT9Xb43MjtSgTvKqp"; } + return oa; + }, + 'Provide a valid signature when a token and token secret is present': function (oa) { + assert.equal( oa.authHeader("http://somehost.com:3323/foo/poop?bar=foo", "token", "tokensecret"), 'OAuth realm="http://foobar.com/",oauth_consumer_key="consumerkey",oauth_nonce="ybHPeOEkAUJ3k2wJT9Xb43MjtSgTvKqp",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1272399856",oauth_token="token",oauth_version="1.0A",oauth_signature="0rr1LhSxACX2IEWRq3uCb4IwtOs%3D"'); + } + }, + 'When non standard ports are used': { + topic: function() { + var oa= new OAuth(null, null, null, null, null, null, "HMAC-SHA1"), + mockProvider= {}; + + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + assert.equal(headers.Host, "somehost.com:8080"); + assert.equal(hostname, "somehost.com"); + assert.equal(port, "8080"); + return { + on: function() {}, + end: function() {} + }; + } + return oa; + }, + 'getProtectedResource should correctly define the host headers': function(oa) { + oa.getProtectedResource("http://somehost.com:8080", "GET", "oauth_token", null, function(){}) + } + }, + 'When building the OAuth Authorization header': { + topic: new OAuth(null, null, null, null, null, null, "HMAC-SHA1"), + 'All provided oauth arguments should be concatentated correctly' : function(oa) { + var parameters= [ + ["oauth_timestamp", "1234567"], + ["oauth_nonce", "ABCDEF"], + ["oauth_version", "1.0"], + ["oauth_signature_method", "HMAC-SHA1"], + ["oauth_consumer_key", "asdasdnm2321b3"]]; + assert.equal(oa._buildAuthorizationHeaders(parameters), 'OAuth oauth_timestamp="1234567",oauth_nonce="ABCDEF",oauth_version="1.0",oauth_signature_method="HMAC-SHA1",oauth_consumer_key="asdasdnm2321b3"'); + }, + '*Only* Oauth arguments should be concatentated, others should be disregarded' : function(oa) { + var parameters= [ + ["foo", "2343"], + ["oauth_timestamp", "1234567"], + ["oauth_nonce", "ABCDEF"], + ["bar", "dfsdfd"], + ["oauth_version", "1.0"], + ["oauth_signature_method", "HMAC-SHA1"], + ["oauth_consumer_key", "asdasdnm2321b3"], + ["foobar", "asdasdnm2321b3"]]; + assert.equal(oa._buildAuthorizationHeaders(parameters), 'OAuth oauth_timestamp="1234567",oauth_nonce="ABCDEF",oauth_version="1.0",oauth_signature_method="HMAC-SHA1",oauth_consumer_key="asdasdnm2321b3"'); + }, + '_buildAuthorizationHeaders should not depends on Array.prototype.toString' : function(oa) { + var _toString = Array.prototype.toString; + Array.prototype.toString = function(){ return '[Array] ' + this.length; }; // toString overwrite example used in jsdom. + var parameters= [ + ["foo", "2343"], + ["oauth_timestamp", "1234567"], + ["oauth_nonce", "ABCDEF"], + ["bar", "dfsdfd"], + ["oauth_version", "1.0"], + ["oauth_signature_method", "HMAC-SHA1"], + ["oauth_consumer_key", "asdasdnm2321b3"], + ["foobar", "asdasdnm2321b3"]]; + assert.equal(oa._buildAuthorizationHeaders(parameters), 'OAuth oauth_timestamp="1234567",oauth_nonce="ABCDEF",oauth_version="1.0",oauth_signature_method="HMAC-SHA1",oauth_consumer_key="asdasdnm2321b3"'); + Array.prototype.toString = _toString; + } + }, + 'When performing the Secure Request' : { + topic: new OAuth("http://foo.com/RequestToken", + "http://foo.com/AccessToken", + "anonymous", "anonymous", + "1.0A", "http://foo.com/callback", "HMAC-SHA1"), + 'using the POST method' : { + 'Any passed extra_params should form part of the POST body': function(oa) { + var post_body_written= false; + var op= oa._createClient; + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return { + write: function(post_body){ + post_body_written= true; + assert.equal(post_body,"scope=foobar%2C1%2C2"); + } + }; + } + oa._performSecureRequest("token", "token_secret", 'POST', 'http://foo.com/protected_resource', {"scope": "foobar,1,2"}); + assert.equal(post_body_written, true); + } + finally { + oa._createClient= op; + } + } + } + }, + 'When performing a secure' : { + topic: new OAuth("http://foo.com/RequestToken", + "http://foo.com/AccessToken", + "anonymous", "anonymous", + "1.0A", "http://foo.com/callback", "HMAC-SHA1"), + 'POST' : { + 'if no callback is passed' : { + 'it should return a request object': function(oa) { + var request= oa.post("http://foo.com/blah", "token", "token_secret", "BLAH", "text/plain") + assert.isObject(request); + assert.equal(request.method, "POST"); + request.end(); + } + }, + 'if a callback is passed' : { + "it should call the internal request's end method and return nothing": function(oa) { + var callbackCalled= false; + var op= oa._createClient; + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return { + write: function(){}, + on: function() {}, + end: function() { + callbackCalled= true; + } + }; + } + var request= oa.post("http://foo.com/blah", "token", "token_secret", "BLAH", "text/plain", function(e,d){}) + assert.equal(callbackCalled, true); + assert.isUndefined(request); + } + finally { + oa._createClient= op; + } + } + }, + 'if the post_body is a buffer' : { + "It should be passed through as is, and the original content-type (if specified) should be passed through": function(oa) { + var op= oa._createClient; + try { + var callbackCalled= false; + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + assert.equal(headers["Content-Type"], "image/jpeg") + return { + write: function(data){ + callbackCalled= true; + assert.equal(data.length, 4); + }, + on: function() {}, + end: function() { + } + }; + } + var request= oa.post("http://foo.com/blah", "token", "token_secret", new Buffer([10,20,30,40]), "image/jpeg") + assert.equal(callbackCalled, true); + } + finally { + oa._createClient= op; + } + }, + "It should be passed through as is, and no content-type is specified.": function(oa) { + //Should probably actually set application/octet-stream, but to avoid a change in behaviour + // will just document (here) that the library will set it to application/x-www-form-urlencoded + var op= oa._createClient; + try { + var callbackCalled= false; + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + assert.equal(headers["Content-Type"], "application/x-www-form-urlencoded") + return { + write: function(data){ + callbackCalled= true; + assert.equal(data.length, 4); + }, + on: function() {}, + end: function() { + } + }; + } + var request= oa.post("http://foo.com/blah", "token", "token_secret", new Buffer([10,20,30,40])) + assert.equal(callbackCalled, true); + } + finally { + oa._createClient= op; + } + } + }, + 'if the post_body is not a string or a buffer' : { + "It should be url encoded and the content type set to be x-www-form-urlencoded" : function(oa) { + var op= oa._createClient; + try { + var callbackCalled= false; + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + assert.equal(headers["Content-Type"], "application/x-www-form-urlencoded") + return { + write: function(data){ + callbackCalled= true; + assert.equal(data, "foo=1%2C2%2C3&bar=1%2B2"); + }, + on: function() {}, + end: function() { + } + }; + } + var request= oa.post("http://foo.com/blah", "token", "token_secret", {"foo":"1,2,3", "bar":"1+2"}) + assert.equal(callbackCalled, true); + } + finally { + oa._createClient= op; + } + } + }, + 'if the post_body is a string' : { + "and it contains non ascii (7/8bit) characters" : { + "the content length should be the byte count, and not the string length" : function(oa) { + var testString= "Tôi yêu node"; + var testStringLength= testString.length; + var testStringBytesLength= Buffer.byteLength(testString); + assert.notEqual(testStringLength, testStringBytesLength); // Make sure we're testing a string that differs between byte-length and char-length! + + var op= oa._createClient; + try { + var callbackCalled= false; + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + assert.equal(headers["Content-length"], testStringBytesLength); + return { + write: function(data){ + callbackCalled= true; + assert.equal(data, testString); + }, + on: function() {}, + end: function() { + } + }; + } + var request= oa.post("http://foo.com/blah", "token", "token_secret", "Tôi yêu node") + assert.equal(callbackCalled, true); + } + finally { + oa._createClient= op; + } + } + }, + "and no post_content_type is specified" : { + "It should be written as is, with a content length specified, and the encoding should be set to be x-www-form-urlencoded" : function(oa) { + var op= oa._createClient; + try { + var callbackCalled= false; + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + assert.equal(headers["Content-Type"], "application/x-www-form-urlencoded"); + assert.equal(headers["Content-length"], 23); + return { + write: function(data){ + callbackCalled= true; + assert.equal(data, "foo=1%2C2%2C3&bar=1%2B2"); + }, + on: function() {}, + end: function() { + } + }; + } + var request= oa.post("http://foo.com/blah", "token", "token_secret", "foo=1%2C2%2C3&bar=1%2B2") + assert.equal(callbackCalled, true); + } + finally { + oa._createClient= op; + } + } + }, + "and a post_content_type is specified" : { + "It should be written as is, with a content length specified, and the encoding should be set to be as specified" : function(oa) { + var op= oa._createClient; + try { + var callbackCalled= false; + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + assert.equal(headers["Content-Type"], "unicorn/encoded"); + assert.equal(headers["Content-length"], 23); + return { + write: function(data){ + callbackCalled= true; + assert.equal(data, "foo=1%2C2%2C3&bar=1%2B2"); + }, + on: function() {}, + end: function() { + } + }; + } + var request= oa.post("http://foo.com/blah", "token", "token_secret", "foo=1%2C2%2C3&bar=1%2B2", "unicorn/encoded") + assert.equal(callbackCalled, true); + } + finally { + oa._createClient= op; + } + } + } + } + }, + 'GET' : { + 'if no callback is passed' : { + 'it should return a request object': function(oa) { + var request= oa.get("http://foo.com/blah", "token", "token_secret") + assert.isObject(request); + assert.equal(request.method, "GET"); + request.end(); + } + }, + 'if a callback is passed' : { + "it should call the internal request's end method and return nothing": function(oa) { + var callbackCalled= false; + var op= oa._createClient; + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return { + on: function() {}, + end: function() { + callbackCalled= true; + } + }; + } + var request= oa.get("http://foo.com/blah", "token", "token_secret", function(e,d) {}) + assert.equal(callbackCalled, true); + assert.isUndefined(request); + } + finally { + oa._createClient= op; + } + } + }, + }, + 'PUT' : { + 'if no callback is passed' : { + 'it should return a request object': function(oa) { + var request= oa.put("http://foo.com/blah", "token", "token_secret", "BLAH", "text/plain") + assert.isObject(request); + assert.equal(request.method, "PUT"); + request.end(); + } + }, + 'if a callback is passed' : { + "it should call the internal request's end method and return nothing": function(oa) { + var callbackCalled= 0; + var op= oa._createClient; + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return { + on: function() {}, + write: function(data) { + callbackCalled++; + }, + end: function() { + callbackCalled++; + } + }; + } + var request= oa.put("http://foo.com/blah", "token", "token_secret", "BLAH", "text/plain", function(e,d){}) + assert.equal(callbackCalled, 2); + assert.isUndefined(request); + } + finally { + oa._createClient= op; + } + } + }, + 'if the post_body is a buffer' : { + "It should be passed through as is, and the original content-type (if specified) should be passed through": function(oa) { + var op= oa._createClient; + try { + var callbackCalled= false; + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + assert.equal(headers["Content-Type"], "image/jpeg") + return { + write: function(data){ + callbackCalled= true; + assert.equal(data.length, 4); + }, + on: function() {}, + end: function() { + } + }; + } + var request= oa.put("http://foo.com/blah", "token", "token_secret", new Buffer([10,20,30,40]), "image/jpeg") + assert.equal(callbackCalled, true); + } + finally { + oa._createClient= op; + } + }, + "It should be passed through as is, and no content-type is specified.": function(oa) { + //Should probably actually set application/octet-stream, but to avoid a change in behaviour + // will just document (here) that the library will set it to application/x-www-form-urlencoded + var op= oa._createClient; + try { + var callbackCalled= false; + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + assert.equal(headers["Content-Type"], "application/x-www-form-urlencoded") + return { + write: function(data){ + callbackCalled= true; + assert.equal(data.length, 4); + }, + on: function() {}, + end: function() { + } + }; + } + var request= oa.put("http://foo.com/blah", "token", "token_secret", new Buffer([10,20,30,40])) + assert.equal(callbackCalled, true); + } + finally { + oa._createClient= op; + } + } + }, + 'if the post_body is not a string' : { + "It should be url encoded and the content type set to be x-www-form-urlencoded" : function(oa) { + var op= oa._createClient; + try { + var callbackCalled= false; + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + assert.equal(headers["Content-Type"], "application/x-www-form-urlencoded") + return { + write: function(data) { + callbackCalled= true; + assert.equal(data, "foo=1%2C2%2C3&bar=1%2B2"); + } + }; + } + var request= oa.put("http://foo.com/blah", "token", "token_secret", {"foo":"1,2,3", "bar":"1+2"}) + assert.equal(callbackCalled, true); + } + finally { + oa._createClient= op; + } + } + }, + 'if the post_body is a string' : { + "and no post_content_type is specified" : { + "It should be written as is, with a content length specified, and the encoding should be set to be x-www-form-urlencoded" : function(oa) { + var op= oa._createClient; + try { + var callbackCalled= false; + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + assert.equal(headers["Content-Type"], "application/x-www-form-urlencoded"); + assert.equal(headers["Content-length"], 23); + return { + write: function(data) { + callbackCalled= true; + assert.equal(data, "foo=1%2C2%2C3&bar=1%2B2"); + } + }; + } + var request= oa.put("http://foo.com/blah", "token", "token_secret", "foo=1%2C2%2C3&bar=1%2B2") + assert.equal(callbackCalled, true); + } + finally { + oa._createClient= op; + } + } + }, + "and a post_content_type is specified" : { + "It should be written as is, with a content length specified, and the encoding should be set to be as specified" : function(oa) { + var op= oa._createClient; + try { + var callbackCalled= false; + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + assert.equal(headers["Content-Type"], "unicorn/encoded"); + assert.equal(headers["Content-length"], 23); + return { + write: function(data) { + callbackCalled= true; + assert.equal(data, "foo=1%2C2%2C3&bar=1%2B2"); + } + }; + } + var request= oa.put("http://foo.com/blah", "token", "token_secret", "foo=1%2C2%2C3&bar=1%2B2", "unicorn/encoded") + assert.equal(callbackCalled, true); + } + finally { + oa._createClient= op; + } + } + } + } + }, + 'DELETE' : { + 'if no callback is passed' : { + 'it should return a request object': function(oa) { + var request= oa.delete("http://foo.com/blah", "token", "token_secret") + assert.isObject(request); + assert.equal(request.method, "DELETE"); + request.end(); + } + }, + 'if a callback is passed' : { + "it should call the internal request's end method and return nothing": function(oa) { + var callbackCalled= false; + var op= oa._createClient; + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return { + on: function() {}, + end: function() { + callbackCalled= true; + } + }; + } + var request= oa.delete("http://foo.com/blah", "token", "token_secret", function(e,d) {}) + assert.equal(callbackCalled, true); + assert.isUndefined(request); + } + finally { + oa._createClient= op; + } + } + } + }, + 'Request With a Callback' : { + 'and a 200 response code is received' : { + 'it should callback successfully' : function(oa) { + var op= oa._createClient; + var callbackCalled = false; + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return new DummyRequest( new DummyResponse(200) ); + } + oa._performSecureRequest("token", "token_secret", 'POST', 'http://originalurl.com', {"scope": "foobar,1,2"}, null, null, function(error) { + // callback + callbackCalled= true; + assert.equal(error, undefined); + }); + assert.equal(callbackCalled, true) + } + finally { + oa._createClient= op; + } + } + }, + 'and a 210 response code is received' : { + 'it should callback successfully' : function(oa) { + var op= oa._createClient; + var callbackCalled = false; + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return new DummyRequest( new DummyResponse(210) ); + } + oa._performSecureRequest("token", "token_secret", 'POST', 'http://originalurl.com', {"scope": "foobar,1,2"}, null, null, function(error) { + // callback + callbackCalled= true; + assert.equal(error, undefined); + }); + assert.equal(callbackCalled, true) + } + finally { + oa._createClient= op; + } + } + }, + 'And A 301 redirect is received' : { + 'and there is a location header' : { + 'it should (re)perform the secure request but with the new location' : function(oa) { + var op= oa._createClient; + var psr= oa._performSecureRequest; + var responseCounter = 1; + var callbackCalled = false; + var DummyResponse =function() { + if( responseCounter == 1 ){ + this.statusCode= 301; + this.headers= {location:"http://redirectto.com"}; + responseCounter++; + } + else { + this.statusCode= 200; + } + } + DummyResponse.prototype= events.EventEmitter.prototype; + DummyResponse.prototype.setEncoding= function() {} + + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return new DummyRequest( new DummyResponse() ); + } + oa._performSecureRequest= function( oauth_token, oauth_token_secret, method, url, extra_params, post_body, post_content_type, callback ) { + if( responseCounter == 1 ) { + assert.equal(url, "http://originalurl.com"); + } + else { + assert.equal(url, "http://redirectto.com"); + } + return psr.call(oa, oauth_token, oauth_token_secret, method, url, extra_params, post_body, post_content_type, callback ) + } + + oa._performSecureRequest("token", "token_secret", 'POST', 'http://originalurl.com', {"scope": "foobar,1,2"}, null, null, function() { + // callback + assert.equal(responseCounter, 2); + callbackCalled= true; + }); + assert.equal(callbackCalled, true) + } + finally { + oa._createClient= op; + oa._performSecureRequest= psr; + } + } + }, + 'but there is no location header' : { + 'it should execute the callback, passing the HTTP Response code' : function(oa) { + var op= oa._createClient; + var callbackCalled = false; + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return new DummyRequest( new DummyResponse(301) ); + } + oa._performSecureRequest("token", "token_secret", 'POST', 'http://originalurl.com', {"scope": "foobar,1,2"}, null, null, function(error) { + // callback + assert.equal(error.statusCode, 301); + callbackCalled= true; + }); + assert.equal(callbackCalled, true) + } + finally { + oa._createClient= op; + } + } + }, + 'and followRedirect is true' : { + 'it should (re)perform the secure request but with the new location' : function(oa) { + var op= oa._createClient; + var psr= oa._performSecureRequest; + var responseCounter = 1; + var callbackCalled = false; + var DummyResponse =function() { + if( responseCounter == 1 ){ + this.statusCode= 301; + this.headers= {location:"http://redirectto.com"}; + responseCounter++; + } + else { + this.statusCode= 200; + } + } + DummyResponse.prototype= events.EventEmitter.prototype; + DummyResponse.prototype.setEncoding= function() {} + + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return new DummyRequest( new DummyResponse() ); + } + oa._performSecureRequest= function( oauth_token, oauth_token_secret, method, url, extra_params, post_body, post_content_type, callback ) { + if( responseCounter == 1 ) { + assert.equal(url, "http://originalurl.com"); + } + else { + assert.equal(url, "http://redirectto.com"); + } + return psr.call(oa, oauth_token, oauth_token_secret, method, url, extra_params, post_body, post_content_type, callback ) + } + + oa._performSecureRequest("token", "token_secret", 'POST', 'http://originalurl.com', {"scope": "foobar,1,2"}, null, null, function() { + // callback + assert.equal(responseCounter, 2); + callbackCalled= true; + }); + assert.equal(callbackCalled, true) + } + finally { + oa._createClient= op; + oa._performSecureRequest= psr; + } + } + }, + 'and followRedirect is false' : { + 'it should not perform the secure request with the new location' : function(oa) { + var op= oa._createClient; + oa.setClientOptions({ followRedirects: false }); + var DummyResponse =function() { + this.statusCode= 301; + this.headers= {location:"http://redirectto.com"}; + } + DummyResponse.prototype= events.EventEmitter.prototype; + DummyResponse.prototype.setEncoding= function() {} + + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return new DummyRequest( new DummyResponse() ); + } + oa._performSecureRequest("token", "token_secret", 'POST', 'http://originalurl.com', {"scope": "foobar,1,2"}, null, null, function(res, data, response) { + // callback + assert.equal(res.statusCode, 301); + }); + } + finally { + oa._createClient= op; + oa.setClientOptions({followRedirects:true}); + } + } + } + }, + 'And A 302 redirect is received' : { + 'and there is a location header' : { + 'it should (re)perform the secure request but with the new location' : function(oa) { + var op= oa._createClient; + var psr= oa._performSecureRequest; + var responseCounter = 1; + var callbackCalled = false; + var DummyResponse =function() { + if( responseCounter == 1 ){ + this.statusCode= 302; + this.headers= {location:"http://redirectto.com"}; + responseCounter++; + } + else { + this.statusCode= 200; + } + } + DummyResponse.prototype= events.EventEmitter.prototype; + DummyResponse.prototype.setEncoding= function() {} + + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return new DummyRequest( new DummyResponse() ); + } + oa._performSecureRequest= function( oauth_token, oauth_token_secret, method, url, extra_params, post_body, post_content_type, callback ) { + if( responseCounter == 1 ) { + assert.equal(url, "http://originalurl.com"); + } + else { + assert.equal(url, "http://redirectto.com"); + } + return psr.call(oa, oauth_token, oauth_token_secret, method, url, extra_params, post_body, post_content_type, callback ) + } + + oa._performSecureRequest("token", "token_secret", 'POST', 'http://originalurl.com', {"scope": "foobar,1,2"}, null, null, function() { + // callback + assert.equal(responseCounter, 2); + callbackCalled= true; + }); + assert.equal(callbackCalled, true) + } + finally { + oa._createClient= op; + oa._performSecureRequest= psr; + } + } + }, + 'but there is no location header' : { + 'it should execute the callback, passing the HTTP Response code' : function(oa) { + var op= oa._createClient; + var callbackCalled = false; + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return new DummyRequest( new DummyResponse(302) ); + } + oa._performSecureRequest("token", "token_secret", 'POST', 'http://originalurl.com', {"scope": "foobar,1,2"}, null, null, function(error) { + // callback + assert.equal(error.statusCode, 302); + callbackCalled= true; + }); + assert.equal(callbackCalled, true) + } + finally { + oa._createClient= op; + } + } + }, + 'and followRedirect is true' : { + 'it should (re)perform the secure request but with the new location' : function(oa) { + var op= oa._createClient; + var psr= oa._performSecureRequest; + var responseCounter = 1; + var callbackCalled = false; + var DummyResponse =function() { + if( responseCounter == 1 ){ + this.statusCode= 302; + this.headers= {location:"http://redirectto.com"}; + responseCounter++; + } + else { + this.statusCode= 200; + } + } + DummyResponse.prototype= events.EventEmitter.prototype; + DummyResponse.prototype.setEncoding= function() {} + + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return new DummyRequest( new DummyResponse() ); + } + oa._performSecureRequest= function( oauth_token, oauth_token_secret, method, url, extra_params, post_body, post_content_type, callback ) { + if( responseCounter == 1 ) { + assert.equal(url, "http://originalurl.com"); + } + else { + assert.equal(url, "http://redirectto.com"); + } + return psr.call(oa, oauth_token, oauth_token_secret, method, url, extra_params, post_body, post_content_type, callback ) + } + + oa._performSecureRequest("token", "token_secret", 'POST', 'http://originalurl.com', {"scope": "foobar,1,2"}, null, null, function() { + // callback + assert.equal(responseCounter, 2); + callbackCalled= true; + }); + assert.equal(callbackCalled, true) + } + finally { + oa._createClient= op; + oa._performSecureRequest= psr; + } + } + }, + 'and followRedirect is false' : { + 'it should not perform the secure request with the new location' : function(oa) { + var op= oa._createClient; + oa.setClientOptions({ followRedirects: false }); + var DummyResponse =function() { + this.statusCode= 302; + this.headers= {location:"http://redirectto.com"}; + } + DummyResponse.prototype= events.EventEmitter.prototype; + DummyResponse.prototype.setEncoding= function() {} + + try { + oa._createClient= function( port, hostname, method, path, headers, sshEnabled ) { + return new DummyRequest( new DummyResponse() ); + } + oa._performSecureRequest("token", "token_secret", 'POST', 'http://originalurl.com', {"scope": "foobar,1,2"}, null, null, function(res, data, response) { + // callback + assert.equal(res.statusCode, 302); + }); + } + finally { + oa._createClient= op; + oa.setClientOptions({followRedirects:true}); + } + } + } + } + } + } +}).export(module); diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/tests/sha1tests.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/tests/sha1tests.js new file mode 100644 index 00000000..18ba0ae3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/tests/sha1tests.js @@ -0,0 +1,13 @@ +var vows = require('vows'), + assert = require('assert'); + +vows.describe('SHA1 Hashing').addBatch({ + 'When using the SHA1 Hashing function': { + topic: require('../lib/sha1'), + 'we get the specified digest as described in http://oauth.net/core/1.0/#sig_base_example (A.5.2)': function (sha1) { + assert.equal (sha1.HMACSHA1( "kd94hf93k423kf44&pfkkdhi9sl3r4s00", + "GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3Dkllo9940pd9333jh%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26oauth_version%3D1.0%26size%3Doriginal"), + "tR3+Ty81lMeYAr/Fid0kMTYa/WM="); + } + } +}).export(module); \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/oauth/tests/shared.js b/srcs/requirements/nestjs/api_back/node_modules/oauth/tests/shared.js new file mode 100644 index 00000000..f4c80946 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/oauth/tests/shared.js @@ -0,0 +1,26 @@ +var events = require('events'); + +exports.DummyResponse = function( statusCode ) { + this.statusCode= statusCode; + this.headers= {}; +} +exports.DummyResponse.prototype= events.EventEmitter.prototype; +exports.DummyResponse.prototype.setEncoding= function() {} + +exports.DummyRequest =function( response ) { + this.response= response; + this.responseSent= false; +} +exports.DummyRequest.prototype= events.EventEmitter.prototype; +exports.DummyRequest.prototype.write= function(post_body){} +exports.DummyRequest.prototype.write= function(post_body){ + this.responseSent= true; + this.emit('response',this.response); +} +exports.DummyRequest.prototype.end= function(){ + if(!this.responseSent) { + this.responseSent= true; + this.emit('response',this.response); + } + this.response.emit('end'); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-42/.eslintrc b/srcs/requirements/nestjs/api_back/node_modules/passport-42/.eslintrc new file mode 100644 index 00000000..72a21b09 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-42/.eslintrc @@ -0,0 +1,70 @@ +{ + "env": { + "mocha": true, + "node": true + }, + "globals": {}, + "rules": { + "no-bitwise": 2, + "camelcase": 2, + "curly": 2, + "eqeqeq": 2, + "guard-for-in": 2, + "no-extend-native": 2, + "wrap-iife": [ + 2, + "any" + ], + "indent": [ + 2, + 2, + { + "SwitchCase": 1 + } + ], + "no-use-before-define": 2, + "new-cap": 2, + "no-caller": 2, + "no-empty": 2, + "no-irregular-whitespace": 2, + "no-new": 2, + "no-plusplus": 0, + "quotes": [ + 2, + "single" + ], + "no-undef": 2, + "no-unused-vars": 2, + "strict": 0, + "max-params": 0, + "max-depth": 0, + "max-statements": 0, + "complexity": 0, + "max-len": 2, + "no-var": 0, + "semi": 0, + "no-cond-assign": 0, + "no-debugger": 0, + "no-eq-null": 0, + "no-eval": 0, + "no-unused-expressions": 0, + "block-scoped-var": 0, + "no-iterator": 0, + "linebreak-style": 0, + "comma-style": [ + 2, + "last" + ], + "no-loop-func": 0, + "no-multi-str": 0, + "require-yield": 0, + "valid-typeof": 0, + "no-proto": 0, + "no-script-url": 0, + "no-shadow": 2, + "dot-notation": 2, + "no-new-func": 0, + "no-new-wrappers": 0, + "no-invalid-this": 0 + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-42/LICENSE b/srcs/requirements/nestjs/api_back/node_modules/passport-42/LICENSE new file mode 100644 index 00000000..20ec8c44 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-42/LICENSE @@ -0,0 +1,20 @@ +(The MIT License) + +Copyright (c) 2016 Adrien "Pandark" Pachkoff + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-42/README.md b/srcs/requirements/nestjs/api_back/node_modules/passport-42/README.md new file mode 100644 index 00000000..fd12b1d4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-42/README.md @@ -0,0 +1,148 @@ +# passport-42 + +[![Build](https://img.shields.io/travis/pandark/passport-42.svg)](https://travis-ci.org/pandark/passport-42) +[![Coverage](https://img.shields.io/coveralls/pandark/passport-42.svg)](https://coveralls.io/r/pandark/passport-42) +[![Quality](https://img.shields.io/codeclimate/github/pandark/passport-42.svg?label=quality)](https://codeclimate.com/github/pandark/passport-42) +[![Greenkeeper badge](https://badges.greenkeeper.io/pandark/passport-42.svg)](https://greenkeeper.io/) +[![Dependencies](https://img.shields.io/david/pandark/passport-42.svg)](https://david-dm.org/pandark/passport-42) + +[Passport](http://passportjs.org/) strategy for authenticating with +[42](https://api.intra.42.fr/apidoc) using the OAuth 2.0 API. + +This module lets you authenticate using 42 in your Node.js applications. +By plugging into Passport, 42 authentication can be easily and unobtrusively +integrated into any application or framework that supports +[Connect](http://www.senchalabs.org/connect/)-style middleware, including +[Express](http://expressjs.com/). + +## Install + +```bash +$ npm install passport-42 +``` + +## Usage + +### Create an Application + +Before using `passport-42`, you must register an application with +42. If you have not already done so, a new application can be created at +[42 Applications](https://profile.intra.42.fr/oauth/applications). Your +application will be issued an app UID and app SECRET, which need to be provided +to the strategy. You will also need to configure a redirect URI which matches +the route in your application. + +### Configure Strategy + +The 42 authentication strategy authenticates users using a 42 account and OAuth +2.0 tokens. The app UID and SECRET obtained when creating an application are +supplied as options when creating the strategy. The strategy also requires a +`verify` callback, which receives the access token and optional refresh token, +as well as `profile` which contains the authenticated user's 42 profile. The +`verify` callback must call `cb` providing a user to complete authentication. + +```js +var FortyTwoStrategy = require('passport-42').Strategy; + +passport.use(new FortyTwoStrategy({ + clientID: FORTYTWO_APP_ID, + clientSecret: FORTYTWO_APP_SECRET, + callbackURL: "http://127.0.0.1:3000/auth/42/callback" + }, + function(accessToken, refreshToken, profile, cb) { + User.findOrCreate({ fortytwoId: profile.id }, function (err, user) { + return cb(err, user); + }); + } +)); +``` + +### Authenticate Requests + +Use `passport.authenticate()`, specifying the `'42'` strategy, to +authenticate requests. + +For example, as route middleware in an [Express](http://expressjs.com/) +application: + +```js +app.get('/auth/42', + passport.authenticate('42')); + +app.get('/auth/42/callback', + passport.authenticate('42', { failureRedirect: '/login' }), + function(req, res) { + // Successful authentication, redirect home. + res.redirect('/'); + }); +``` + +## Examples + +Developers using the popular [Express](http://expressjs.com/) web framework can +refer to an [example](https://github.com/pandark/passport-42-example) +as a starting point for their own web applications. + +## Options + +### Specify profile fields + +The 42 profile contains a lot of information about a user. The fields needed +by an application can be indicated by setting the `profileFields` option. + +```js +new FortyTwoStrategy({ + clientID: FORTYTWO_APP_ID, + clientSecret: FORTYTWO_APP_SECRET, + callbackURL: "http://127.0.0.1:3000/auth/42/callback", + profileFields: { + 'id': function (obj) { return String(obj.id); }, + 'username': 'login', + 'displayName': 'displayname', + 'name.familyName': 'last_name', + 'name.givenName': 'first_name', + 'profileUrl': 'url', + 'emails.0.value': 'email', + 'phoneNumbers.0.value': 'phone', + 'photos.0.value': 'image_url' + } +}), ...) +``` + +Refer to the [User](https://api.intra.42.fr/apidoc/2.0/users/show.html) 42 API +Reference for the complete set of available fields. + +### User agent + +Although 42 API doesn't require a user agent in the requests header, +passport-42 sets one, by default "passport-42". You can set a different one +using the `userAgent` option. + +## Contributing + +### Tests + +The test suite is located in the `test/` directory. All new features are +expected to have corresponding test cases. Ensure that the complete test suite +passes by executing: + +```bash +$ make test +``` + +### Coverage + +The test suite covers 100% of the code base. All new feature development is +expected to maintain that level. Coverage reports can be viewed by executing: + +```bash +$ make test-cov +$ make view-cov +``` + +## License + +[The MIT License](http://opensource.org/licenses/MIT) + +Copyright (c) 2016 Adrien "Pandark" Pachkoff +<[https://lifeleaks.com/](https://lifeleaks.com/)> diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-42/lib/index.js b/srcs/requirements/nestjs/api_back/node_modules/passport-42/lib/index.js new file mode 100644 index 00000000..aeeb5d0f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-42/lib/index.js @@ -0,0 +1,8 @@ +// Load modules. +var Strategy = require('./strategy'); + +// Expose Strategy. +exports = module.exports = Strategy; + +// Exports. +exports.Strategy = Strategy; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-42/lib/profile.js b/srcs/requirements/nestjs/api_back/node_modules/passport-42/lib/profile.js new file mode 100644 index 00000000..a0a59fd8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-42/lib/profile.js @@ -0,0 +1,65 @@ +/** + * Parse profile. + * + * @param {object|string} json + * @param {object} profileFields + * @return {object} + * @access public + */ +exports.parse = function(json, profileFields) { + if ('string' === typeof json) { + json = JSON.parse(json); + } + + profileFields = profileFields || { + 'id': function (obj) { return String(obj.id); }, + 'username': 'login', + 'displayName': 'displayname', + 'name.familyName': 'last_name', + 'name.givenName': 'first_name', + 'profileUrl': 'url', + 'emails.0.value': 'email', + 'phoneNumbers.0.value': 'phone', + 'photos.0.value': 'image_url' + }; + + var profile = {}; + Object.getOwnPropertyNames(profileFields).forEach(function(flatProps) { + var profileCur = profile; + var props = flatProps.split('.').map(function(p) { + return (/^\d+$/.test(p)) ? parseInt(p, 10) : p; + }); + var propsLen = props.length; + props.forEach(function(prop, i) { + if (i !== propsLen - 1) { + if (profileCur[prop] === undefined) { + if (Number.isInteger(props[i + 1])) { + profileCur[prop] = []; + } else { + profileCur[prop] = {}; + } + } + profileCur = profileCur[prop]; + } else { + if (typeof profileFields[flatProps] === 'function') { + profileCur[prop] = (profileFields[flatProps])(json); + } else { + var jsonCur = json; + var valFields = profileFields[flatProps].split('.').map(function(v) { + return (/^\d+$/.test(v)) ? parseInt(v, 10) : v; + }); + var valLen = valFields.length; + valFields.forEach(function(val, j) { + if (j !== valLen - 1) { + jsonCur = jsonCur[val]; + } else { + profileCur[prop] = jsonCur[val]; + } + }); + } + } + }); + }); + + return profile; +}; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-42/lib/strategy.js b/srcs/requirements/nestjs/api_back/node_modules/passport-42/lib/strategy.js new file mode 100644 index 00000000..a315f01b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-42/lib/strategy.js @@ -0,0 +1,125 @@ +// Load modules. +var OAuth2Strategy = require('passport-oauth2'); +var util = require('util'); +var Profile = require('./profile'); +var InternalOAuthError = require('passport-oauth2').InternalOAuthError; + + +/** + * `Strategy` constructor. + * + * The 42 authentication strategy authenticates requests by delegating to 42 + * using the OAuth 2.0 protocol. + * + * Applications must supply a `verify` callback which accepts an `accessToken`, + * `refreshToken` and service-specific `profile`, and then calls the `cb` + * callback supplying a `user`, which should be set to `false` if the + * credentials are not valid. If an exception occured, `err` should be set. + * + * Options: + * - `clientID` your 42 application's UID + * - `clientSecret` your 42 application's SECRET + * - `callbackURL` URL to which 42 will redirect the user after granting + * authorization + * — `userAgent` User Agent string used in all API requests. e.g: domain + * name of your application. + * — `profileFields` Object specifying fields to include in the user profile. + * + * Examples: + * + * passport.use(new FortyTwoStrategy({ + * clientID: '123-456-789', + * clientSecret: 'shhh-its-a-secret' + * callbackURL: 'https://www.example.net/auth/42/callback' + * }, + * function(accessToken, refreshToken, profile, cb) { + * User.findOrCreate(..., function (err, user) { + * cb(err, user); + * }); + * } + * )); + * + * @constructor + * @param {object} options + * @param {function} verify + * @access public + */ +function Strategy(options, verify) { + options = options || {}; + options.authorizationURL = options.authorizationURL || + 'https://api.intra.42.fr/oauth/authorize'; + options.tokenURL = options.tokenURL || 'https://api.intra.42.fr/oauth/token'; + options.customHeaders = options.customHeaders || {}; + + if (!options.customHeaders['User-Agent']) { + options.customHeaders['User-Agent'] = options.userAgent || 'passport-42'; + } + + OAuth2Strategy.call(this, options, verify); + this.name = '42'; + this._profileURL = options.profileURL || 'https://api.intra.42.fr/v2/me'; + this._profileFields = options.profileFields || null; + this._oauth2.useAuthorizationHeaderforGET(true); +} + +// Inherit from `OAuth2Strategy`. +util.inherits(Strategy, OAuth2Strategy); + +/** + * Retrieve user profile from 42. + * + * This function constructs a normalized profile, with the following properties + * (or the ones specified in `options.profileFields`): + * + * - `provider` always set to `42` + * - `id` the user's 42 ID + * - `username` the user's 42 xlogin + * - `displayName` the user's full name + * - `name.familyName` the user's last name + * - `name.givenName` the user's first name + * - `profileUrl` the URL of the profile for the user on 42 intra + * - `emails` the user's email address + * - `photos ` the user's photo + * - `phoneNumbers` the user's phone number + * + * @param {string} accessToken + * @param {function} done + * @access protected + */ +Strategy.prototype.userProfile = function(accessToken, done) { + var fields = this._profileFields; + this._oauth2.get(this._profileURL, accessToken, function (err, body) { + var json; + + if (err) { + if (err.data) { + try { + json = JSON.parse(err.data); + } catch (_) { + // nothing + } + } + if (json && json.message) { + return done(new InternalOAuthError(json.message, err)); + } + return done(new InternalOAuthError('Failed to fetch user profile', err)); + } + + try { + json = JSON.parse(body); + } catch (ex) { + return done(new Error('Failed to parse user profile')); + } + + var profile = Profile.parse(json, fields); + profile.provider = '42'; + profile._raw = body; + profile._json = json; + + done(null, profile); + }); +}; + + +// Expose constructor. +module.exports = Strategy; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-42/package.json b/srcs/requirements/nestjs/api_back/node_modules/passport-42/package.json new file mode 100644 index 00000000..f631539e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-42/package.json @@ -0,0 +1,53 @@ +{ + "name": "passport-42", + "version": "1.2.6", + "description": "42 authentication strategy for Passport.", + "keywords": [ + "passport", + "42", + "auth", + "authn", + "authentication", + "identity", + "42born2code", + "born2code", + "borntocode", + "forty-two" + ], + "author": { + "name": "Adrien \"Pandark\" Pachkoff", + "email": "adrien-dev@pachkoff.com", + "url": "https://lifeleaks.com/" + }, + "repository": { + "type": "git", + "url": "https://github.com/pandark/passport-42.git" + }, + "bugs": { + "url": "https://github.com/pandark/passport-42/issues" + }, + "license": "MIT", + "licenses": [ + { + "type": "MIT", + "url": "https://opensource.org/licenses/MIT" + } + ], + "main": "./lib", + "dependencies": { + "passport-oauth2": "^1.4.0" + }, + "devDependencies": { + "chai": "^4.2.0", + "chai-passport-strategy": "^1.0.1", + "make-node": "~0.3.5", + "mocha": "^6.2.0", + "proxyquire": "^2.1.1" + }, + "engines": { + "node": ">= 6.0.0" + }, + "scripts": { + "test": "node_modules/.bin/mocha --require test/bootstrap/node test/*.test.js" + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/.github/FUNDING.yml b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/.github/FUNDING.yml new file mode 100644 index 00000000..05642c5b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/.github/FUNDING.yml @@ -0,0 +1,3 @@ +github: jaredhanson +patreon: jaredhanson +ko_fi: jaredhanson diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/CHANGELOG.md b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/CHANGELOG.md new file mode 100644 index 00000000..90ab29fd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/CHANGELOG.md @@ -0,0 +1,19 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [1.6.1] - 2021-09-24 +### Fixed +- Error in cases where the authorization server returns a successful access +token response which is missing an `access_token` parameter. + +## [1.6.0] - 2021-07-01 +### Added + +- Support for `store: true` option to `Strategy` constructor, which initializes +a state store capable of storing application-level state. +- Support for `state` object passed as option to `authenticate`, which will be +persisted in the session by state store. +- `callbackURL` property added to metadata passed to state store. diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/LICENSE b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/LICENSE new file mode 100644 index 00000000..0554e9e9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2011-2016 Jared Hanson + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/README.md b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/README.md new file mode 100644 index 00000000..9812fba2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/README.md @@ -0,0 +1,122 @@ +# passport-oauth2 + +General-purpose OAuth 2.0 authentication strategy for [Passport](http://passportjs.org/). + +This module lets you authenticate using OAuth 2.0 in your Node.js applications. +By plugging into Passport, OAuth 2.0 authentication can be easily and +unobtrusively integrated into any application or framework that supports +[Connect](http://www.senchalabs.org/connect/)-style middleware, including +[Express](http://expressjs.com/). + +Note that this strategy provides generic OAuth 2.0 support. In many cases, a +provider-specific strategy can be used instead, which cuts down on unnecessary +configuration, and accommodates any provider-specific quirks. See the +[list](https://github.com/jaredhanson/passport/wiki/Strategies) for supported +providers. + +Developers who need to implement authentication against an OAuth 2.0 provider +that is not already supported are encouraged to sub-class this strategy. If you +choose to open source the new provider-specific strategy, please add it to the +list so other people can find it. + +--- + +

+ Advertisement +
+ Learn OAuth 2.0 - Get started as an API Security Expert
Just imagine what could happen to YOUR professional career if you had skills in OAuth > 8500 satisfied students +

+ +--- + +[![npm](https://img.shields.io/npm/v/passport-oauth2.svg)](https://www.npmjs.com/package/passport-oauth2) +[![build](https://img.shields.io/travis/jaredhanson/passport-oauth2.svg)](https://travis-ci.org/jaredhanson/passport-oauth2) +[![coverage](https://img.shields.io/coveralls/jaredhanson/passport-oauth2.svg)](https://coveralls.io/github/jaredhanson/passport-oauth2) +[...](https://github.com/jaredhanson/passport-oauth2/wiki/Status) + +## Install + + $ npm install passport-oauth2 + +## Usage + +#### Configure Strategy + +The OAuth 2.0 authentication strategy authenticates users using a third-party +account and OAuth 2.0 tokens. The provider's OAuth 2.0 endpoints, as well as +the client identifer and secret, are specified as options. The strategy +requires a `verify` callback, which receives an access token and profile, +and calls `cb` providing a user. + +```js +passport.use(new OAuth2Strategy({ + authorizationURL: 'https://www.example.com/oauth2/authorize', + tokenURL: 'https://www.example.com/oauth2/token', + clientID: EXAMPLE_CLIENT_ID, + clientSecret: EXAMPLE_CLIENT_SECRET, + callbackURL: "http://localhost:3000/auth/example/callback" + }, + function(accessToken, refreshToken, profile, cb) { + User.findOrCreate({ exampleId: profile.id }, function (err, user) { + return cb(err, user); + }); + } +)); +``` + +#### Authenticate Requests + +Use `passport.authenticate()`, specifying the `'oauth2'` strategy, to +authenticate requests. + +For example, as route middleware in an [Express](http://expressjs.com/) +application: + +```js +app.get('/auth/example', + passport.authenticate('oauth2')); + +app.get('/auth/example/callback', + passport.authenticate('oauth2', { failureRedirect: '/login' }), + function(req, res) { + // Successful authentication, redirect home. + res.redirect('/'); + }); +``` + +## Related Modules + +- [passport-oauth1](https://github.com/jaredhanson/passport-oauth1) — OAuth 1.0 authentication strategy +- [passport-http-bearer](https://github.com/jaredhanson/passport-http-bearer) — Bearer token authentication strategy for APIs +- [OAuth2orize](https://github.com/jaredhanson/oauth2orize) — OAuth 2.0 authorization server toolkit + +## Contributing + +#### Tests + +The test suite is located in the `test/` directory. All new features are +expected to have corresponding test cases. Ensure that the complete test suite +passes by executing: + +```bash +$ make test +``` + +#### Coverage + +All new feature development is expected to have test coverage. Patches that +increse test coverage are happily accepted. Coverage reports can be viewed by +executing: + +```bash +$ make test-cov +$ make view-cov +``` + +## License + +[The MIT License](http://opensource.org/licenses/MIT) + +Copyright (c) 2011-2016 Jared Hanson <[http://jaredhanson.net/](http://jaredhanson.net/)> + + diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/errors/authorizationerror.js b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/errors/authorizationerror.js new file mode 100644 index 00000000..041961d9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/errors/authorizationerror.js @@ -0,0 +1,44 @@ +/** + * `AuthorizationError` error. + * + * AuthorizationError represents an error in response to an authorization + * request. For details, refer to RFC 6749, section 4.1.2.1. + * + * References: + * - [The OAuth 2.0 Authorization Framework](http://tools.ietf.org/html/rfc6749) + * + * @constructor + * @param {String} [message] + * @param {String} [code] + * @param {String} [uri] + * @param {Number} [status] + * @api public + */ +function AuthorizationError(message, code, uri, status) { + if (!status) { + switch (code) { + case 'access_denied': status = 403; break; + case 'server_error': status = 502; break; + case 'temporarily_unavailable': status = 503; break; + } + } + + Error.call(this); + Error.captureStackTrace(this, this.constructor); + this.name = this.constructor.name; + this.message = message; + this.code = code || 'server_error'; + this.uri = uri; + this.status = status || 500; +} + +/** + * Inherit from `Error`. + */ +AuthorizationError.prototype.__proto__ = Error.prototype; + + +/** + * Expose `AuthorizationError`. + */ +module.exports = AuthorizationError; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/errors/internaloautherror.js b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/errors/internaloautherror.js new file mode 100644 index 00000000..5dd68284 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/errors/internaloautherror.js @@ -0,0 +1,49 @@ +/** + * `InternalOAuthError` error. + * + * InternalOAuthError wraps errors generated by node-oauth. By wrapping these + * objects, error messages can be formatted in a manner that aids in debugging + * OAuth issues. + * + * @constructor + * @param {String} [message] + * @param {Object|Error} [err] + * @api public + */ +function InternalOAuthError(message, err) { + Error.call(this); + Error.captureStackTrace(this, this.constructor); + this.name = this.constructor.name; + this.message = message; + this.oauthError = err; +} + +/** + * Inherit from `Error`. + */ +InternalOAuthError.prototype.__proto__ = Error.prototype; + +/** + * Returns a string representing the error. + * + * @return {String} + * @api public + */ +InternalOAuthError.prototype.toString = function() { + var m = this.name; + if (this.message) { m += ': ' + this.message; } + if (this.oauthError) { + if (this.oauthError instanceof Error) { + m = this.oauthError.toString(); + } else if (this.oauthError.statusCode && this.oauthError.data) { + m += ' (status: ' + this.oauthError.statusCode + ' data: ' + this.oauthError.data + ')'; + } + } + return m; +}; + + +/** + * Expose `InternalOAuthError`. + */ +module.exports = InternalOAuthError; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/errors/tokenerror.js b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/errors/tokenerror.js new file mode 100644 index 00000000..924ea3b9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/errors/tokenerror.js @@ -0,0 +1,36 @@ +/** + * `TokenError` error. + * + * TokenError represents an error received from a token endpoint. For details, + * refer to RFC 6749, section 5.2. + * + * References: + * - [The OAuth 2.0 Authorization Framework](http://tools.ietf.org/html/rfc6749) + * + * @constructor + * @param {String} [message] + * @param {String} [code] + * @param {String} [uri] + * @param {Number} [status] + * @api public + */ +function TokenError(message, code, uri, status) { + Error.call(this); + Error.captureStackTrace(this, this.constructor); + this.name = this.constructor.name; + this.message = message; + this.code = code || 'invalid_request'; + this.uri = uri; + this.status = status || 500; +} + +/** + * Inherit from `Error`. + */ +TokenError.prototype.__proto__ = Error.prototype; + + +/** + * Expose `TokenError`. + */ +module.exports = TokenError; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/index.js b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/index.js new file mode 100644 index 00000000..b025669a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/index.js @@ -0,0 +1,16 @@ +// Load modules. +var Strategy = require('./strategy') + , AuthorizationError = require('./errors/authorizationerror') + , TokenError = require('./errors/tokenerror') + , InternalOAuthError = require('./errors/internaloautherror'); + + +// Expose Strategy. +exports = module.exports = Strategy; + +// Exports. +exports.Strategy = Strategy; + +exports.AuthorizationError = AuthorizationError; +exports.TokenError = TokenError; +exports.InternalOAuthError = InternalOAuthError; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/null.js b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/null.js new file mode 100644 index 00000000..80ad17e1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/null.js @@ -0,0 +1,13 @@ +function NullStore(options) { +} + +NullStore.prototype.store = function(req, cb) { + cb(); +} + +NullStore.prototype.verify = function(req, providedState, cb) { + cb(null, true); +} + + +module.exports = NullStore; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/pkcesession.js b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/pkcesession.js new file mode 100644 index 00000000..69ab4433 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/pkcesession.js @@ -0,0 +1,89 @@ +var uid = require('uid2'); + +/** + * Creates an instance of `SessionStore`. + * + * This is the state store implementation for the OAuth2Strategy used when + * the `state` option is enabled. It generates a random state and stores it in + * `req.session` and verifies it when the service provider redirects the user + * back to the application. + * + * This state store requires session support. If no session exists, an error + * will be thrown. + * + * Options: + * + * - `key` The key in the session under which to store the state + * + * @constructor + * @param {Object} options + * @api public + */ +function PKCESessionStore(options) { + if (!options.key) { throw new TypeError('Session-based state store requires a session key'); } + this._key = options.key; +} + +/** + * Store request state. + * + * This implementation simply generates a random string and stores the value in + * the session, where it will be used for verification when the user is + * redirected back to the application. + * + * @param {Object} req + * @param {Function} callback + * @api protected + */ +PKCESessionStore.prototype.store = function(req, verifier, state, meta, callback) { + if (!req.session) { return callback(new Error('OAuth 2.0 authentication requires session support when using state. Did you forget to use express-session middleware?')); } + + var key = this._key; + var sstate = { + handle: uid(24), + code_verifier: verifier + }; + if (state) { sstate.state = state; } + if (!req.session[key]) { req.session[key] = {}; } + req.session[key].state = sstate; + callback(null, sstate.handle); +}; + +/** + * Verify request state. + * + * This implementation simply compares the state parameter in the request to the + * value generated earlier and stored in the session. + * + * @param {Object} req + * @param {String} providedState + * @param {Function} callback + * @api protected + */ +PKCESessionStore.prototype.verify = function(req, providedState, callback) { + if (!req.session) { return callback(new Error('OAuth 2.0 authentication requires session support when using state. Did you forget to use express-session middleware?')); } + + var key = this._key; + if (!req.session[key]) { + return callback(null, false, { message: 'Unable to verify authorization request state.' }); + } + + var state = req.session[key].state; + if (!state) { + return callback(null, false, { message: 'Unable to verify authorization request state.' }); + } + + delete req.session[key].state; + if (Object.keys(req.session[key]).length === 0) { + delete req.session[key]; + } + + if (state.handle !== providedState) { + return callback(null, false, { message: 'Invalid authorization request state.' }); + } + + return callback(null, state.code_verifier, state.state); +}; + +// Expose constructor. +module.exports = PKCESessionStore; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/session.js b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/session.js new file mode 100644 index 00000000..96db0aad --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/session.js @@ -0,0 +1,85 @@ +var uid = require('uid2'); + +/** + * Creates an instance of `SessionStore`. + * + * This is the state store implementation for the OAuth2Strategy used when + * the `state` option is enabled. It generates a random state and stores it in + * `req.session` and verifies it when the service provider redirects the user + * back to the application. + * + * This state store requires session support. If no session exists, an error + * will be thrown. + * + * Options: + * + * - `key` The key in the session under which to store the state + * + * @constructor + * @param {Object} options + * @api public + */ +function SessionStore(options) { + if (!options.key) { throw new TypeError('Session-based state store requires a session key'); } + this._key = options.key; +} + +/** + * Store request state. + * + * This implementation simply generates a random string and stores the value in + * the session, where it will be used for verification when the user is + * redirected back to the application. + * + * @param {Object} req + * @param {Function} callback + * @api protected + */ +SessionStore.prototype.store = function(req, callback) { + if (!req.session) { return callback(new Error('OAuth 2.0 authentication requires session support when using state. Did you forget to use express-session middleware?')); } + + var key = this._key; + var state = uid(24); + if (!req.session[key]) { req.session[key] = {}; } + req.session[key].state = state; + callback(null, state); +}; + +/** + * Verify request state. + * + * This implementation simply compares the state parameter in the request to the + * value generated earlier and stored in the session. + * + * @param {Object} req + * @param {String} providedState + * @param {Function} callback + * @api protected + */ +SessionStore.prototype.verify = function(req, providedState, callback) { + if (!req.session) { return callback(new Error('OAuth 2.0 authentication requires session support when using state. Did you forget to use express-session middleware?')); } + + var key = this._key; + if (!req.session[key]) { + return callback(null, false, { message: 'Unable to verify authorization request state.' }); + } + + var state = req.session[key].state; + if (!state) { + return callback(null, false, { message: 'Unable to verify authorization request state.' }); + } + + delete req.session[key].state; + if (Object.keys(req.session[key]).length === 0) { + delete req.session[key]; + } + + if (state !== providedState) { + return callback(null, false, { message: 'Invalid authorization request state.' }); + } + + return callback(null, true); +}; + +// Expose constructor. +module.exports = SessionStore; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/store.js b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/store.js new file mode 100644 index 00000000..a49e6e53 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/state/store.js @@ -0,0 +1,88 @@ +var uid = require('uid2'); + +/** + * Creates an instance of `SessionStore`. + * + * This is the state store implementation for the OAuth2Strategy used when + * the `state` option is enabled. It generates a random state and stores it in + * `req.session` and verifies it when the service provider redirects the user + * back to the application. + * + * This state store requires session support. If no session exists, an error + * will be thrown. + * + * Options: + * + * - `key` The key in the session under which to store the state + * + * @constructor + * @param {Object} options + * @api public + */ +function SessionStore(options) { + if (!options.key) { throw new TypeError('Session-based state store requires a session key'); } + this._key = options.key; +} + +/** + * Store request state. + * + * This implementation simply generates a random string and stores the value in + * the session, where it will be used for verification when the user is + * redirected back to the application. + * + * @param {Object} req + * @param {Function} callback + * @api protected + */ +SessionStore.prototype.store = function(req, state, meta, callback) { + if (!req.session) { return callback(new Error('OAuth 2.0 authentication requires session support when using state. Did you forget to use express-session middleware?')); } + + var key = this._key; + var sstate = { + handle: uid(24) + }; + if (state) { sstate.state = state; } + if (!req.session[key]) { req.session[key] = {}; } + req.session[key].state = sstate; + callback(null, sstate.handle); +}; + +/** + * Verify request state. + * + * This implementation simply compares the state parameter in the request to the + * value generated earlier and stored in the session. + * + * @param {Object} req + * @param {String} providedState + * @param {Function} callback + * @api protected + */ +SessionStore.prototype.verify = function(req, providedState, callback) { + if (!req.session) { return callback(new Error('OAuth 2.0 authentication requires session support when using state. Did you forget to use express-session middleware?')); } + + var key = this._key; + if (!req.session[key]) { + return callback(null, false, { message: 'Unable to verify authorization request state.' }); + } + + var state = req.session[key].state; + if (!state) { + return callback(null, false, { message: 'Unable to verify authorization request state.' }); + } + + delete req.session[key].state; + if (Object.keys(req.session[key]).length === 0) { + delete req.session[key]; + } + + if (state.handle !== providedState) { + return callback(null, false, { message: 'Invalid authorization request state.' }); + } + + return callback(null, true, state.state); +}; + +// Expose constructor. +module.exports = SessionStore; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/strategy.js b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/strategy.js new file mode 100644 index 00000000..b05aacce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/strategy.js @@ -0,0 +1,429 @@ +// Load modules. +var passport = require('passport-strategy') + , url = require('url') + , uid = require('uid2') + , crypto = require('crypto') + , base64url = require('base64url') + , util = require('util') + , utils = require('./utils') + , OAuth2 = require('oauth').OAuth2 + , NullStore = require('./state/null') + , NonceStore = require('./state/session') + , StateStore = require('./state/store') + , PKCEStateStore = require('./state/pkcesession') + , AuthorizationError = require('./errors/authorizationerror') + , TokenError = require('./errors/tokenerror') + , InternalOAuthError = require('./errors/internaloautherror'); + + +/** + * Creates an instance of `OAuth2Strategy`. + * + * The OAuth 2.0 authentication strategy authenticates requests using the OAuth + * 2.0 framework. + * + * OAuth 2.0 provides a facility for delegated authentication, whereby users can + * authenticate using a third-party service such as Facebook. Delegating in + * this manner involves a sequence of events, including redirecting the user to + * the third-party service for authorization. Once authorization has been + * granted, the user is redirected back to the application and an authorization + * code can be used to obtain credentials. + * + * Applications must supply a `verify` callback, for which the function + * signature is: + * + * function(accessToken, refreshToken, profile, done) { ... } + * + * The verify callback is responsible for finding or creating the user, and + * invoking `done` with the following arguments: + * + * done(err, user, info); + * + * `user` should be set to `false` to indicate an authentication failure. + * Additional `info` can optionally be passed as a third argument, typically + * used to display informational messages. If an exception occured, `err` + * should be set. + * + * Options: + * + * - `authorizationURL` URL used to obtain an authorization grant + * - `tokenURL` URL used to obtain an access token + * - `clientID` identifies client to service provider + * - `clientSecret` secret used to establish ownership of the client identifer + * - `callbackURL` URL to which the service provider will redirect the user after obtaining authorization + * - `passReqToCallback` when `true`, `req` is the first argument to the verify callback (default: `false`) + * + * Examples: + * + * passport.use(new OAuth2Strategy({ + * authorizationURL: 'https://www.example.com/oauth2/authorize', + * tokenURL: 'https://www.example.com/oauth2/token', + * clientID: '123-456-789', + * clientSecret: 'shhh-its-a-secret' + * callbackURL: 'https://www.example.net/auth/example/callback' + * }, + * function(accessToken, refreshToken, profile, done) { + * User.findOrCreate(..., function (err, user) { + * done(err, user); + * }); + * } + * )); + * + * @constructor + * @param {Object} options + * @param {Function} verify + * @api public + */ +function OAuth2Strategy(options, verify) { + if (typeof options == 'function') { + verify = options; + options = undefined; + } + options = options || {}; + + if (!verify) { throw new TypeError('OAuth2Strategy requires a verify callback'); } + if (!options.authorizationURL) { throw new TypeError('OAuth2Strategy requires a authorizationURL option'); } + if (!options.tokenURL) { throw new TypeError('OAuth2Strategy requires a tokenURL option'); } + if (!options.clientID) { throw new TypeError('OAuth2Strategy requires a clientID option'); } + + passport.Strategy.call(this); + this.name = 'oauth2'; + this._verify = verify; + + // NOTE: The _oauth2 property is considered "protected". Subclasses are + // allowed to use it when making protected resource requests to retrieve + // the user profile. + this._oauth2 = new OAuth2(options.clientID, options.clientSecret, + '', options.authorizationURL, options.tokenURL, options.customHeaders); + + this._callbackURL = options.callbackURL; + this._scope = options.scope; + this._scopeSeparator = options.scopeSeparator || ' '; + this._pkceMethod = (options.pkce === true) ? 'S256' : options.pkce; + this._key = options.sessionKey || ('oauth2:' + url.parse(options.authorizationURL).hostname); + + if (options.store && typeof options.store == 'object') { + this._stateStore = options.store; + } else if (options.store) { + this._stateStore = options.pkce ? new PKCEStateStore({ key: this._key }) : new StateStore({ key: this._key }); + } else if (options.state) { + this._stateStore = options.pkce ? new PKCEStateStore({ key: this._key }) : new NonceStore({ key: this._key }); + } else { + if (options.pkce) { throw new TypeError('OAuth2Strategy requires `state: true` option when PKCE is enabled'); } + this._stateStore = new NullStore(); + } + this._trustProxy = options.proxy; + this._passReqToCallback = options.passReqToCallback; + this._skipUserProfile = (options.skipUserProfile === undefined) ? false : options.skipUserProfile; +} + +// Inherit from `passport.Strategy`. +util.inherits(OAuth2Strategy, passport.Strategy); + + +/** + * Authenticate request by delegating to a service provider using OAuth 2.0. + * + * @param {Object} req + * @api protected + */ +OAuth2Strategy.prototype.authenticate = function(req, options) { + options = options || {}; + var self = this; + + if (req.query && req.query.error) { + if (req.query.error == 'access_denied') { + return this.fail({ message: req.query.error_description }); + } else { + return this.error(new AuthorizationError(req.query.error_description, req.query.error, req.query.error_uri)); + } + } + + var callbackURL = options.callbackURL || this._callbackURL; + if (callbackURL) { + var parsed = url.parse(callbackURL); + if (!parsed.protocol) { + // The callback URL is relative, resolve a fully qualified URL from the + // URL of the originating request. + callbackURL = url.resolve(utils.originalURL(req, { proxy: this._trustProxy }), callbackURL); + } + } + + var meta = { + authorizationURL: this._oauth2._authorizeUrl, + tokenURL: this._oauth2._accessTokenUrl, + clientID: this._oauth2._clientId, + callbackURL: callbackURL + } + + if (req.query && req.query.code) { + function loaded(err, ok, state) { + if (err) { return self.error(err); } + if (!ok) { + return self.fail(state, 403); + } + + var code = req.query.code; + + var params = self.tokenParams(options); + params.grant_type = 'authorization_code'; + if (callbackURL) { params.redirect_uri = callbackURL; } + if (typeof ok == 'string') { // PKCE + params.code_verifier = ok; + } + + self._oauth2.getOAuthAccessToken(code, params, + function(err, accessToken, refreshToken, params) { + if (err) { return self.error(self._createOAuthError('Failed to obtain access token', err)); } + if (!accessToken) { return self.error(new Error('Failed to obtain access token')); } + + self._loadUserProfile(accessToken, function(err, profile) { + if (err) { return self.error(err); } + + function verified(err, user, info) { + if (err) { return self.error(err); } + if (!user) { return self.fail(info); } + + info = info || {}; + if (state) { info.state = state; } + self.success(user, info); + } + + try { + if (self._passReqToCallback) { + var arity = self._verify.length; + if (arity == 6) { + self._verify(req, accessToken, refreshToken, params, profile, verified); + } else { // arity == 5 + self._verify(req, accessToken, refreshToken, profile, verified); + } + } else { + var arity = self._verify.length; + if (arity == 5) { + self._verify(accessToken, refreshToken, params, profile, verified); + } else { // arity == 4 + self._verify(accessToken, refreshToken, profile, verified); + } + } + } catch (ex) { + return self.error(ex); + } + }); + } + ); + } + + var state = req.query.state; + try { + var arity = this._stateStore.verify.length; + if (arity == 4) { + this._stateStore.verify(req, state, meta, loaded); + } else { // arity == 3 + this._stateStore.verify(req, state, loaded); + } + } catch (ex) { + return this.error(ex); + } + } else { + var params = this.authorizationParams(options); + params.response_type = 'code'; + if (callbackURL) { params.redirect_uri = callbackURL; } + var scope = options.scope || this._scope; + if (scope) { + if (Array.isArray(scope)) { scope = scope.join(this._scopeSeparator); } + params.scope = scope; + } + var verifier, challenge; + + if (this._pkceMethod) { + verifier = base64url(crypto.pseudoRandomBytes(32)) + switch (this._pkceMethod) { + case 'plain': + challenge = verifier; + break; + case 'S256': + challenge = base64url(crypto.createHash('sha256').update(verifier).digest()); + break; + default: + return this.error(new Error('Unsupported code verifier transformation method: ' + this._pkceMethod)); + } + + params.code_challenge = challenge; + params.code_challenge_method = this._pkceMethod; + } + + var state = options.state; + if (state && typeof state == 'string') { + // NOTE: In passport-oauth2@1.5.0 and earlier, `state` could be passed as + // an object. However, it would result in an empty string being + // serialized as the value of the query parameter by `url.format()`, + // effectively ignoring the option. This implies that `state` was + // only functional when passed as a string value. + // + // This fact is taken advantage of here to fall into the `else` + // branch below when `state` is passed as an object. In that case + // the state will be automatically managed and persisted by the + // state store. + params.state = state; + + var parsed = url.parse(this._oauth2._authorizeUrl, true); + utils.merge(parsed.query, params); + parsed.query['client_id'] = this._oauth2._clientId; + delete parsed.search; + var location = url.format(parsed); + this.redirect(location); + } else { + function stored(err, state) { + if (err) { return self.error(err); } + + if (state) { params.state = state; } + var parsed = url.parse(self._oauth2._authorizeUrl, true); + utils.merge(parsed.query, params); + parsed.query['client_id'] = self._oauth2._clientId; + delete parsed.search; + var location = url.format(parsed); + self.redirect(location); + } + + try { + var arity = this._stateStore.store.length; + if (arity == 5) { + this._stateStore.store(req, verifier, state, meta, stored); + } else if (arity == 4) { + this._stateStore.store(req, state, meta, stored); + } else if (arity == 3) { + this._stateStore.store(req, meta, stored); + } else { // arity == 2 + this._stateStore.store(req, stored); + } + } catch (ex) { + return this.error(ex); + } + } + } +}; + +/** + * Retrieve user profile from service provider. + * + * OAuth 2.0-based authentication strategies can overrride this function in + * order to load the user's profile from the service provider. This assists + * applications (and users of those applications) in the initial registration + * process by automatically submitting required information. + * + * @param {String} accessToken + * @param {Function} done + * @api protected + */ +OAuth2Strategy.prototype.userProfile = function(accessToken, done) { + return done(null, {}); +}; + +/** + * Return extra parameters to be included in the authorization request. + * + * Some OAuth 2.0 providers allow additional, non-standard parameters to be + * included when requesting authorization. Since these parameters are not + * standardized by the OAuth 2.0 specification, OAuth 2.0-based authentication + * strategies can overrride this function in order to populate these parameters + * as required by the provider. + * + * @param {Object} options + * @return {Object} + * @api protected + */ +OAuth2Strategy.prototype.authorizationParams = function(options) { + return {}; +}; + +/** + * Return extra parameters to be included in the token request. + * + * Some OAuth 2.0 providers allow additional, non-standard parameters to be + * included when requesting an access token. Since these parameters are not + * standardized by the OAuth 2.0 specification, OAuth 2.0-based authentication + * strategies can overrride this function in order to populate these parameters + * as required by the provider. + * + * @return {Object} + * @api protected + */ +OAuth2Strategy.prototype.tokenParams = function(options) { + return {}; +}; + +/** + * Parse error response from OAuth 2.0 endpoint. + * + * OAuth 2.0-based authentication strategies can overrride this function in + * order to parse error responses received from the token endpoint, allowing the + * most informative message to be displayed. + * + * If this function is not overridden, the body will be parsed in accordance + * with RFC 6749, section 5.2. + * + * @param {String} body + * @param {Number} status + * @return {Error} + * @api protected + */ +OAuth2Strategy.prototype.parseErrorResponse = function(body, status) { + var json = JSON.parse(body); + if (json.error) { + return new TokenError(json.error_description, json.error, json.error_uri); + } + return null; +}; + +/** + * Load user profile, contingent upon options. + * + * @param {String} accessToken + * @param {Function} done + * @api private + */ +OAuth2Strategy.prototype._loadUserProfile = function(accessToken, done) { + var self = this; + + function loadIt() { + return self.userProfile(accessToken, done); + } + function skipIt() { + return done(null); + } + + if (typeof this._skipUserProfile == 'function' && this._skipUserProfile.length > 1) { + // async + this._skipUserProfile(accessToken, function(err, skip) { + if (err) { return done(err); } + if (!skip) { return loadIt(); } + return skipIt(); + }); + } else { + var skip = (typeof this._skipUserProfile == 'function') ? this._skipUserProfile() : this._skipUserProfile; + if (!skip) { return loadIt(); } + return skipIt(); + } +}; + +/** + * Create an OAuth error. + * + * @param {String} message + * @param {Object|Error} err + * @api private + */ +OAuth2Strategy.prototype._createOAuthError = function(message, err) { + var e; + if (err.statusCode && err.data) { + try { + e = this.parseErrorResponse(err.data, err.statusCode); + } catch (_) {} + } + if (!e) { e = new InternalOAuthError(message, err); } + return e; +}; + + +// Expose constructor. +module.exports = OAuth2Strategy; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/utils.js b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/utils.js new file mode 100644 index 00000000..486f9e15 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/lib/utils.js @@ -0,0 +1,32 @@ +exports.merge = require('utils-merge'); + +/** + * Reconstructs the original URL of the request. + * + * This function builds a URL that corresponds the original URL requested by the + * client, including the protocol (http or https) and host. + * + * If the request passed through any proxies that terminate SSL, the + * `X-Forwarded-Proto` header is used to detect if the request was encrypted to + * the proxy, assuming that the proxy has been flagged as trusted. + * + * @param {http.IncomingMessage} req + * @param {Object} [options] + * @return {String} + * @api private + */ +exports.originalURL = function(req, options) { + options = options || {}; + var app = req.app; + if (app && app.get && app.get('trust proxy')) { + options.proxy = true; + } + var trustProxy = options.proxy; + + var proto = (req.headers['x-forwarded-proto'] || '').toLowerCase() + , tls = req.connection.encrypted || (trustProxy && 'https' == proto.split(/\s*,\s*/)[0]) + , host = (trustProxy && req.headers['x-forwarded-host']) || req.headers.host + , protocol = tls ? 'https' : 'http' + , path = req.url || ''; + return protocol + '://' + host + path; +}; diff --git a/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/package.json b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/package.json new file mode 100644 index 00000000..182007f7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/passport-oauth2/package.json @@ -0,0 +1,59 @@ +{ + "name": "passport-oauth2", + "version": "1.6.1", + "description": "OAuth 2.0 authentication strategy for Passport.", + "keywords": [ + "passport", + "auth", + "authn", + "authentication", + "authz", + "authorization", + "oauth", + "oauth2" + ], + "author": { + "name": "Jared Hanson", + "email": "jaredhanson@gmail.com", + "url": "http://www.jaredhanson.net/" + }, + "repository": { + "type": "git", + "url": "git://github.com/jaredhanson/passport-oauth2.git" + }, + "bugs": { + "url": "http://github.com/jaredhanson/passport-oauth2/issues" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + }, + "license": "MIT", + "licenses": [ + { + "type": "MIT", + "url": "http://opensource.org/licenses/MIT" + } + ], + "main": "./lib", + "dependencies": { + "base64url": "3.x.x", + "oauth": "0.9.x", + "passport-strategy": "1.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" + }, + "devDependencies": { + "make-node": "0.4.6", + "mocha": "2.x.x", + "chai": "2.x.x", + "proxyquire": "0.6.x", + "chai-passport-strategy": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" + }, + "scripts": { + "test": "node_modules/.bin/mocha --reporter spec --require test/bootstrap/node test/*.test.js test/**/*.test.js" + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/uid2/HISTORY.md b/srcs/requirements/nestjs/api_back/node_modules/uid2/HISTORY.md new file mode 100644 index 00000000..e1d9b3c8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/uid2/HISTORY.md @@ -0,0 +1,21 @@ +# 0.0.4 - August 24, 2021 + +- Add _README.md_ +- Add `repository` field to _package.json_ +- Add `license` field to _package.json_ +- Removed unused var, added param documentation + +# 0.0.3 - July 6, 2013 + +- Add MIT License +- Change string generation to not rely internally on base64 byte buffer encoding +- Change string generation to only use the 62 latin alphanumeric chars +- Switch from `crypto.randomBytes()` to `crypto.pseudoRandomBytes()` + +# 0.0.2 - February 25, 2013 + +- Make unique ids safe for use in URLs (Using 62 latin alphanumeric chars, `-` and `_`) + +# 0.0.1 - February 4, 2013 + +- Initial Release diff --git a/srcs/requirements/nestjs/api_back/node_modules/uid2/LICENSE b/srcs/requirements/nestjs/api_back/node_modules/uid2/LICENSE new file mode 100644 index 00000000..bdfab69b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/uid2/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013 Marco Aurelio + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/uid2/README.md b/srcs/requirements/nestjs/api_back/node_modules/uid2/README.md new file mode 100644 index 00000000..53b0a532 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/uid2/README.md @@ -0,0 +1,32 @@ +# uid2 + +[![NPM version](https://badge.fury.io/js/uid2.svg)](http://badge.fury.io/js/uid2) + +Generate unique ids. Pass in a `length` and it returns a `string`. + + +## Installation + + npm install uid2 + +## Examples + +Without a callback it is synchronous: + +```js +uid(10) +// => "hbswt489ts" +``` + +With a callback it is asynchronous: + +```js +uid(10, function (err, id) { + if (err) throw err; + // id => "hbswt489ts" +}); +``` + +## License + +MIT diff --git a/srcs/requirements/nestjs/api_back/node_modules/uid2/index.js b/srcs/requirements/nestjs/api_back/node_modules/uid2/index.js new file mode 100644 index 00000000..3f6d54d3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/uid2/index.js @@ -0,0 +1,55 @@ +/** + * Module dependencies + */ + +var crypto = require('crypto'); + +/** + * 62 characters in the ascii range that can be used in URLs without special + * encoding. + */ +var UIDCHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + +/** + * Make a Buffer into a string ready for use in URLs + * + * @param {String} bytes a Buffer containing the bytes to convert + * @returns {String} UID + * @api private + */ +function tostr(bytes) { + var r, i; + + r = []; + for (i = 0; i < bytes.length; i++) { + r.push(UIDCHARS[bytes[i] % UIDCHARS.length]); + } + + return r.join(''); +} + +/** + * Generate an Unique Id + * + * @param {Number} length The number of chars of the uid + * @param {Number} cb (optional) Callback for async uid generation + * @api public + */ + +function uid(length, cb) { + + if (typeof cb === 'undefined') { + return tostr(crypto.pseudoRandomBytes(length)); + } else { + crypto.pseudoRandomBytes(length, function(err, bytes) { + if (err) return cb(err); + cb(null, tostr(bytes)); + }) + } +} + +/** + * Exports + */ + +module.exports = uid; diff --git a/srcs/requirements/nestjs/api_back/node_modules/uid2/package.json b/srcs/requirements/nestjs/api_back/node_modules/uid2/package.json new file mode 100644 index 00000000..07167a61 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/uid2/package.json @@ -0,0 +1,12 @@ +{ + "name": "uid2", + "description": "strong uid", + "tags": ["uid"], + "version": "0.0.4", + "repository": { + "type": "git", + "url": "https://github.com/coreh/uid2.git" + }, + "license": "MIT", + "dependencies": {} +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/package-lock.json b/srcs/requirements/nestjs/api_back/package-lock.json index 51f8cccd..68c4a4c2 100644 --- a/srcs/requirements/nestjs/api_back/package-lock.json +++ b/srcs/requirements/nestjs/api_back/package-lock.json @@ -21,6 +21,7 @@ "class-validator": "^0.13.2", "nest-router": "^1.0.9", "passport": "^0.6.0", + "passport-42": "^1.2.6", "passport-local": "^1.0.0", "pg": "^8.8.0", "reflect-metadata": "^0.1.13", @@ -2876,6 +2877,14 @@ } ] }, + "node_modules/base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -6482,6 +6491,11 @@ "node": ">=8" } }, + "node_modules/oauth": { + "version": "0.9.15", + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", + "integrity": "sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==" + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6738,6 +6752,17 @@ "url": "https://github.com/sponsors/jaredhanson" } }, + "node_modules/passport-42": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/passport-42/-/passport-42-1.2.6.tgz", + "integrity": "sha512-a1SraWSwH33NqRDe9ScG4MQwfj7RRBYLFtrJySn4tU4Ou7+caLxj6VQgaL4i+eZoKC6QAooL1Nqevn/W8vLXuQ==", + "dependencies": { + "passport-oauth2": "^1.4.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/passport-local": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", @@ -6749,6 +6774,25 @@ "node": ">= 0.4.0" } }, + "node_modules/passport-oauth2": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.6.1.tgz", + "integrity": "sha512-ZbV43Hq9d/SBSYQ22GOiglFsjsD1YY/qdiptA+8ej+9C1dL1TVB+mBE5kDH/D4AJo50+2i8f4bx0vg4/yDDZCQ==", + "dependencies": { + "base64url": "3.x.x", + "oauth": "0.9.x", + "passport-strategy": "1.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, "node_modules/passport-strategy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", @@ -8573,6 +8617,11 @@ "node": ">=4.2.0" } }, + "node_modules/uid2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -11182,6 +11231,11 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -13884,6 +13938,11 @@ "path-key": "^3.0.0" } }, + "oauth": { + "version": "0.9.15", + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", + "integrity": "sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -14068,6 +14127,14 @@ "utils-merge": "^1.0.1" } }, + "passport-42": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/passport-42/-/passport-42-1.2.6.tgz", + "integrity": "sha512-a1SraWSwH33NqRDe9ScG4MQwfj7RRBYLFtrJySn4tU4Ou7+caLxj6VQgaL4i+eZoKC6QAooL1Nqevn/W8vLXuQ==", + "requires": { + "passport-oauth2": "^1.4.0" + } + }, "passport-local": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", @@ -14076,6 +14143,18 @@ "passport-strategy": "1.x.x" } }, + "passport-oauth2": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.6.1.tgz", + "integrity": "sha512-ZbV43Hq9d/SBSYQ22GOiglFsjsD1YY/qdiptA+8ej+9C1dL1TVB+mBE5kDH/D4AJo50+2i8f4bx0vg4/yDDZCQ==", + "requires": { + "base64url": "3.x.x", + "oauth": "0.9.x", + "passport-strategy": "1.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" + } + }, "passport-strategy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", @@ -15316,6 +15395,11 @@ "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "devOptional": true }, + "uid2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", diff --git a/srcs/requirements/nestjs/api_back/package.json b/srcs/requirements/nestjs/api_back/package.json index a9c830b6..bc454ad9 100644 --- a/srcs/requirements/nestjs/api_back/package.json +++ b/srcs/requirements/nestjs/api_back/package.json @@ -33,6 +33,7 @@ "class-validator": "^0.13.2", "nest-router": "^1.0.9", "passport": "^0.6.0", + "passport-42": "^1.2.6", "passport-local": "^1.0.0", "pg": "^8.8.0", "reflect-metadata": "^0.1.13", diff --git a/srcs/requirements/nestjs/api_back/src/app.module.ts b/srcs/requirements/nestjs/api_back/src/app.module.ts index 788c2bcf..a6d51ff6 100644 --- a/srcs/requirements/nestjs/api_back/src/app.module.ts +++ b/srcs/requirements/nestjs/api_back/src/app.module.ts @@ -5,6 +5,7 @@ import { UsersModule } from './users/users.module'; import { TypeOrmModule } from '@nestjs/typeorm'; import { ConfigModule } from '@nestjs/config'; import { FriendshipsModule } from './friendship/friendships.module'; +import { AuthenticationModule } from './auth/42/authentication.module'; @Module({ imports: [UsersModule, diff --git a/srcs/requirements/nestjs/api_back/src/auth/authentication.controller.spec.ts b/srcs/requirements/nestjs/api_back/src/auth/42/authentication.controller.spec.ts similarity index 100% rename from srcs/requirements/nestjs/api_back/src/auth/authentication.controller.spec.ts rename to srcs/requirements/nestjs/api_back/src/auth/42/authentication.controller.spec.ts diff --git a/srcs/requirements/nestjs/api_back/src/auth/42/authentication.controller.ts b/srcs/requirements/nestjs/api_back/src/auth/42/authentication.controller.ts new file mode 100644 index 00000000..9a57bc75 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/src/auth/42/authentication.controller.ts @@ -0,0 +1,45 @@ +import { Controller, Get, Res } from '@nestjs/common'; +import { Response } from 'express'; + +@Controller('auth') +export class AuthenticationController { + + + /** + * GET /api/v2/auth/login + * Route pour l'autentification des utilisateurs + */ + @Get('login') + login() { + return 'login'; + } + + /** + * GET /api/v2/auth/redirect + * C'est la route que nous devons spécifier à l'Oauth de 42. + * L'api de 42 redirige vers cette route après l'autentification. + */ + @Get('redirect') + redirect(@Res() res: Response) { + res.send(200); + } + + /** + * GET /api/v2/auth/status + * Route pour vérifier si l'utilisateur est connecté + * ou non. + */ + @Get('status') + status() { + return 'status'; + } + + /** + * GET /api/v2/auth/logout + * Route pour déconnecter l'utilisateur + */ + @Get('logout') + logout() { + return 'logout'; + } +} diff --git a/srcs/requirements/nestjs/api_back/src/auth/authentication.module.ts b/srcs/requirements/nestjs/api_back/src/auth/42/authentication.module.ts similarity index 67% rename from srcs/requirements/nestjs/api_back/src/auth/authentication.module.ts rename to srcs/requirements/nestjs/api_back/src/auth/42/authentication.module.ts index 1b8a5fca..ca0f14cd 100644 --- a/srcs/requirements/nestjs/api_back/src/auth/authentication.module.ts +++ b/srcs/requirements/nestjs/api_back/src/auth/42/authentication.module.ts @@ -1,9 +1,10 @@ import { Module } from '@nestjs/common'; import { UsersModule } from 'src/users/users.module'; import { AuthenticationService } from './authentication.service'; +import { FortyTwoStrategy } from './strategy/strategy'; @Module({ imports: [UsersModule], - providers: [AuthenticationService], + providers: [AuthenticationService, FortyTwoStrategy], }) export class AuthenticationModule {} diff --git a/srcs/requirements/nestjs/api_back/src/auth/authentication.service.spec.ts b/srcs/requirements/nestjs/api_back/src/auth/42/authentication.service.spec.ts similarity index 100% rename from srcs/requirements/nestjs/api_back/src/auth/authentication.service.spec.ts rename to srcs/requirements/nestjs/api_back/src/auth/42/authentication.service.spec.ts diff --git a/srcs/requirements/nestjs/api_back/src/auth/authentication.service.ts b/srcs/requirements/nestjs/api_back/src/auth/42/authentication.service.ts similarity index 100% rename from srcs/requirements/nestjs/api_back/src/auth/authentication.service.ts rename to srcs/requirements/nestjs/api_back/src/auth/42/authentication.service.ts diff --git a/srcs/requirements/nestjs/api_back/src/auth/42/guards/guards.ts b/srcs/requirements/nestjs/api_back/src/auth/42/guards/guards.ts new file mode 100644 index 00000000..af712544 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/src/auth/42/guards/guards.ts @@ -0,0 +1,14 @@ +import { CanActivate, ExecutionContext, Injectable } from "@nestjs/common"; +import { AuthGuard } from "@nestjs/passport"; + +@Injectable() +export class FortyTwoAuthGuard extends AuthGuard('42') { + async canActivate(context: ExecutionContext): Promise { + const activate = (await super.canActivate(context)) as boolean; + const request = context.switchToHttp().getRequest(); + console.log(request.user); + await super.logIn(request); + return activate; + } +} + diff --git a/srcs/requirements/nestjs/api_back/src/auth/42/strategy/strategy.ts b/srcs/requirements/nestjs/api_back/src/auth/42/strategy/strategy.ts new file mode 100644 index 00000000..71ae7107 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/src/auth/42/strategy/strategy.ts @@ -0,0 +1,20 @@ +import { Strategy, Profile } from "passport-42/lib"; +import { PassportStrategy } from "@nestjs/passport"; +import { Injectable } from "@nestjs/common"; +import { AuthenticationService } from "../authentication.service"; + +@Injectable() +export class FortyTwoStrategy extends PassportStrategy(Strategy, "42") { + constructor(private readonly authenticationService: AuthenticationService) { + super({ + clientID: process.env.FORTYTWO_CLIENT_ID, + clientSecret: process.env.FORTYTWO_CLIENT_SECRET, + callbackURL: process.env.FORTYTWO_CALLBACK_URL, + scope: ["public"], + }); + } + + async validate(accessToken: string, refreshToken: string, profile: Profile, callbackURL: string) { + + } +} diff --git a/srcs/requirements/nestjs/api_back/src/auth/authentication.controller.ts b/srcs/requirements/nestjs/api_back/src/auth/authentication.controller.ts deleted file mode 100644 index db212f7b..00000000 --- a/srcs/requirements/nestjs/api_back/src/auth/authentication.controller.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Controller } from '@nestjs/common'; - -@Controller('/') -export class AuthenticationController { - - -} diff --git a/srcs/requirements/nestjs/api_back/src/friendship/entities/friendship.entity.ts b/srcs/requirements/nestjs/api_back/src/friendship/entities/friendship.entity.ts index 3f698dd8..ec285f67 100644 --- a/srcs/requirements/nestjs/api_back/src/friendship/entities/friendship.entity.ts +++ b/srcs/requirements/nestjs/api_back/src/friendship/entities/friendship.entity.ts @@ -26,7 +26,6 @@ export class Friendship { @ManyToOne(type => User, user => user.addresseeId) addresseeId: string; - @Column({ type: 'enum', enum: FriendshipStatus, default: FriendshipStatus.REQUESTED}) status: FriendshipStatus; } diff --git a/srcs/requirements/nestjs/api_back/src/main.ts b/srcs/requirements/nestjs/api_back/src/main.ts index 249e0f26..980bbe8b 100644 --- a/srcs/requirements/nestjs/api_back/src/main.ts +++ b/srcs/requirements/nestjs/api_back/src/main.ts @@ -20,6 +20,7 @@ async function bootstrap() { }, }), ); + app.setGlobalPrefix('api/v2'); await app.listen(3000); } bootstrap(); diff --git a/srcs/requirements/nestjs/api_back/src/users/entities/user.entity.ts b/srcs/requirements/nestjs/api_back/src/users/entities/user.entity.ts index 12dfba75..9ab769bb 100644 --- a/srcs/requirements/nestjs/api_back/src/users/entities/user.entity.ts +++ b/srcs/requirements/nestjs/api_back/src/users/entities/user.entity.ts @@ -11,6 +11,9 @@ export class User { @PrimaryGeneratedColumn() id: number; + @Column({ name: 'fourty_two_id' }) + fourtyTwoId: string; + @Column() username: string; @@ -21,6 +24,9 @@ export class User { @Column() password: string; + @Column({ nullable: true }) + avatar: string; + @Column('json', { nullable: true }) status: [string];