velocious 1.0.461 → 1.0.463
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/application.js +1 -3
- package/build/background-jobs/cron-expression.js +1 -3
- package/build/background-jobs/forked-runner-child.js +1 -3
- package/build/background-jobs/job.js +1 -3
- package/build/background-jobs/scheduler.js +2 -6
- package/build/background-jobs/store.js +2 -6
- package/build/background-jobs/web/controller.js +1 -3
- package/build/background-jobs/worker.js +1 -3
- package/build/beacon/client.js +2 -6
- package/build/cli/tenant-database-command-helper.js +1 -3
- package/build/configuration.js +62 -40
- package/build/controller.js +4 -14
- package/build/database/drivers/mssql/index.js +1 -3
- package/build/database/drivers/mysql/index.js +2 -6
- package/build/database/drivers/pgsql/index.js +1 -3
- package/build/database/drivers/sqlite/base.js +3 -9
- package/build/database/drivers/sqlite/index.js +3 -9
- package/build/database/drivers/sqlite/table.js +1 -3
- package/build/database/migrator.js +1 -3
- package/build/database/pool/async-tracked-multi-connection.js +86 -46
- package/build/database/pool/base-methods-forward.js +2 -10
- package/build/database/pool/base.js +13 -15
- package/build/database/query/index.js +4 -12
- package/build/database/query/join-object.js +3 -9
- package/build/database/query/model-class-query.js +21 -63
- package/build/database/query/preloader/belongs-to.js +9 -27
- package/build/database/query/preloader/has-many.js +7 -21
- package/build/database/query/preloader/has-one.js +3 -9
- package/build/database/query/preloader.js +6 -18
- package/build/database/query/query-data.js +5 -15
- package/build/database/query/where-model-class-hash.js +5 -15
- package/build/database/query/with-count.js +5 -15
- package/build/database/record/acts-as-list.js +10 -38
- package/build/database/record/attachments/normalize-input.js +7 -25
- package/build/database/record/attachments/storage-drivers/s3.js +4 -12
- package/build/database/record/attachments/store.js +2 -6
- package/build/database/record/index.js +55 -171
- package/build/database/record/instance-relationships/base.js +6 -20
- package/build/database/record/instance-relationships/belongs-to.js +2 -6
- package/build/database/record/instance-relationships/has-many.js +4 -12
- package/build/database/record/instance-relationships/has-one.js +4 -12
- package/build/database/record/relationships/base.js +1 -5
- package/build/database/record/validators/presence.js +1 -3
- package/build/database/record/validators/uniqueness.js +4 -12
- package/build/environment-handlers/browser.js +1 -3
- package/build/environment-handlers/node/cli/commands/console.js +2 -6
- package/build/environment-handlers/node/cli/commands/db/schema/load.js +1 -3
- package/build/environment-handlers/node/cli/commands/generate/frontend-models.js +67 -11
- package/build/environment-handlers/node.js +15 -6
- package/build/frontend-model-controller.js +34 -110
- package/build/frontend-models/base.js +45 -151
- package/build/frontend-models/clear-pending-debounced-callback.js +1 -3
- package/build/frontend-models/preloader.js +3 -9
- package/build/frontend-models/query.js +11 -33
- package/build/frontend-models/resource-definition.js +2 -6
- package/build/frontend-models/transport-serialization.js +7 -21
- package/build/frontend-models/use-destroyed-event.js +2 -6
- package/build/frontend-models/use-model-class-event.js +2 -6
- package/build/frontend-models/use-updated-event.js +3 -9
- package/build/frontend-models/websocket-channel.js +9 -27
- package/build/frontend-models/websocket-publishers.js +12 -23
- package/build/http-server/client/index.js +7 -19
- package/build/http-server/client/params-to-object.js +6 -18
- package/build/http-server/client/request-buffer/index.js +1 -3
- package/build/http-server/client/request-parser.js +1 -3
- package/build/http-server/client/request-runner.js +5 -13
- package/build/http-server/client/websocket-session.js +6 -18
- package/build/http-server/development-reloader.js +2 -6
- package/build/http-server/remote-address.js +1 -5
- package/build/http-server/server-client.js +3 -9
- package/build/http-server/server-lock.js +2 -6
- package/build/http-server/websocket-channel-subscribers.js +2 -6
- package/build/http-server/websocket-event-log-store.js +5 -15
- package/build/http-server/websocket-events-host.js +1 -3
- package/build/http-server/worker-handler/in-process.js +3 -11
- package/build/http-server/worker-handler/index.js +3 -2
- package/build/http-server/worker-handler/worker-thread.js +1 -3
- package/build/logger.js +2 -6
- package/build/mailer/backends/smtp.js +1 -5
- package/build/mailer/base.js +4 -16
- package/build/plugins/sqljs-wasm-route-controller.js +1 -3
- package/build/routes/basic-route.js +1 -3
- package/build/routes/resolver.js +5 -15
- package/build/src/application.d.ts.map +1 -1
- package/build/src/application.js +2 -4
- package/build/src/background-jobs/cron-expression.d.ts.map +1 -1
- package/build/src/background-jobs/cron-expression.js +2 -4
- package/build/src/background-jobs/forked-runner-child.js +2 -4
- package/build/src/background-jobs/job.d.ts.map +1 -1
- package/build/src/background-jobs/job.js +2 -4
- package/build/src/background-jobs/scheduler.d.ts.map +1 -1
- package/build/src/background-jobs/scheduler.js +3 -7
- package/build/src/background-jobs/store.d.ts.map +1 -1
- package/build/src/background-jobs/store.js +3 -7
- package/build/src/background-jobs/web/controller.d.ts.map +1 -1
- package/build/src/background-jobs/web/controller.js +2 -5
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +2 -4
- package/build/src/beacon/client.d.ts.map +1 -1
- package/build/src/beacon/client.js +3 -7
- package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
- package/build/src/cli/tenant-database-command-helper.js +2 -4
- package/build/src/configuration.d.ts +13 -0
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +58 -44
- package/build/src/controller.d.ts.map +1 -1
- package/build/src/controller.js +5 -15
- package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/index.js +2 -4
- package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/index.js +3 -7
- package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/index.js +2 -4
- package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/base.js +4 -10
- package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.js +4 -10
- package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/table.js +2 -4
- package/build/src/database/migrator.d.ts.map +1 -1
- package/build/src/database/migrator.js +2 -4
- package/build/src/database/pool/async-tracked-multi-connection.d.ts +18 -0
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +82 -48
- package/build/src/database/pool/base-methods-forward.d.ts.map +1 -1
- package/build/src/database/pool/base-methods-forward.js +3 -11
- package/build/src/database/pool/base.d.ts +5 -0
- package/build/src/database/pool/base.d.ts.map +1 -1
- package/build/src/database/pool/base.js +13 -16
- package/build/src/database/query/index.d.ts.map +1 -1
- package/build/src/database/query/index.js +5 -13
- package/build/src/database/query/join-object.d.ts.map +1 -1
- package/build/src/database/query/join-object.js +4 -10
- package/build/src/database/query/model-class-query.d.ts.map +1 -1
- package/build/src/database/query/model-class-query.js +22 -64
- package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
- package/build/src/database/query/preloader/belongs-to.js +10 -28
- package/build/src/database/query/preloader/has-many.d.ts.map +1 -1
- package/build/src/database/query/preloader/has-many.js +8 -22
- package/build/src/database/query/preloader/has-one.d.ts.map +1 -1
- package/build/src/database/query/preloader/has-one.js +4 -10
- package/build/src/database/query/preloader.d.ts.map +1 -1
- package/build/src/database/query/preloader.js +7 -20
- package/build/src/database/query/query-data.d.ts.map +1 -1
- package/build/src/database/query/query-data.js +6 -16
- package/build/src/database/query/where-model-class-hash.d.ts.map +1 -1
- package/build/src/database/query/where-model-class-hash.js +6 -16
- package/build/src/database/query/with-count.d.ts.map +1 -1
- package/build/src/database/query/with-count.js +6 -17
- package/build/src/database/record/acts-as-list.d.ts.map +1 -1
- package/build/src/database/record/acts-as-list.js +11 -47
- package/build/src/database/record/attachments/normalize-input.d.ts.map +1 -1
- package/build/src/database/record/attachments/normalize-input.js +8 -30
- package/build/src/database/record/attachments/storage-drivers/s3.d.ts.map +1 -1
- package/build/src/database/record/attachments/storage-drivers/s3.js +5 -13
- package/build/src/database/record/attachments/store.d.ts.map +1 -1
- package/build/src/database/record/attachments/store.js +3 -7
- package/build/src/database/record/index.d.ts +4 -9
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +53 -173
- package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/base.js +7 -21
- package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/belongs-to.js +3 -7
- package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-many.js +5 -13
- package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-one.js +5 -13
- package/build/src/database/record/relationships/base.d.ts.map +1 -1
- package/build/src/database/record/relationships/base.js +2 -6
- package/build/src/database/record/validators/presence.d.ts.map +1 -1
- package/build/src/database/record/validators/presence.js +2 -4
- package/build/src/database/record/validators/uniqueness.d.ts.map +1 -1
- package/build/src/database/record/validators/uniqueness.js +5 -14
- package/build/src/environment-handlers/browser.d.ts.map +1 -1
- package/build/src/environment-handlers/browser.js +2 -4
- package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/console.js +3 -7
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +2 -4
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +38 -0
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +58 -12
- package/build/src/environment-handlers/node.d.ts.map +1 -1
- package/build/src/environment-handlers/node.js +16 -7
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +35 -114
- package/build/src/frontend-models/base.d.ts.map +1 -1
- package/build/src/frontend-models/base.js +46 -158
- package/build/src/frontend-models/clear-pending-debounced-callback.d.ts.map +1 -1
- package/build/src/frontend-models/clear-pending-debounced-callback.js +2 -4
- package/build/src/frontend-models/preloader.d.ts.map +1 -1
- package/build/src/frontend-models/preloader.js +4 -11
- package/build/src/frontend-models/query.d.ts.map +1 -1
- package/build/src/frontend-models/query.js +12 -34
- package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
- package/build/src/frontend-models/resource-definition.js +3 -7
- package/build/src/frontend-models/transport-serialization.d.ts.map +1 -1
- package/build/src/frontend-models/transport-serialization.js +8 -23
- package/build/src/frontend-models/use-destroyed-event.js +3 -7
- package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-model-class-event.js +3 -7
- package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-updated-event.js +4 -10
- package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
- package/build/src/frontend-models/websocket-channel.js +10 -32
- package/build/src/frontend-models/websocket-publishers.d.ts.map +1 -1
- package/build/src/frontend-models/websocket-publishers.js +14 -25
- package/build/src/http-server/client/index.d.ts.map +1 -1
- package/build/src/http-server/client/index.js +8 -22
- package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
- package/build/src/http-server/client/params-to-object.js +7 -21
- package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
- package/build/src/http-server/client/request-buffer/index.js +2 -4
- package/build/src/http-server/client/request-parser.d.ts.map +1 -1
- package/build/src/http-server/client/request-parser.js +2 -4
- package/build/src/http-server/client/request-runner.d.ts.map +1 -1
- package/build/src/http-server/client/request-runner.js +6 -15
- package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-session.js +7 -20
- package/build/src/http-server/development-reloader.d.ts.map +1 -1
- package/build/src/http-server/development-reloader.js +3 -7
- package/build/src/http-server/remote-address.d.ts.map +1 -1
- package/build/src/http-server/remote-address.js +2 -6
- package/build/src/http-server/server-client.d.ts.map +1 -1
- package/build/src/http-server/server-client.js +4 -10
- package/build/src/http-server/server-lock.d.ts.map +1 -1
- package/build/src/http-server/server-lock.js +3 -7
- package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
- package/build/src/http-server/websocket-channel-subscribers.js +3 -7
- package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
- package/build/src/http-server/websocket-event-log-store.js +6 -16
- package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
- package/build/src/http-server/websocket-events-host.js +2 -5
- package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/in-process.js +4 -12
- package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/index.js +4 -3
- package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/worker-thread.js +2 -4
- package/build/src/logger.d.ts.map +1 -1
- package/build/src/logger.js +3 -7
- package/build/src/mailer/backends/smtp.d.ts.map +1 -1
- package/build/src/mailer/backends/smtp.js +2 -6
- package/build/src/mailer/base.d.ts.map +1 -1
- package/build/src/mailer/base.js +5 -17
- package/build/src/plugins/sqljs-wasm-route-controller.d.ts.map +1 -1
- package/build/src/plugins/sqljs-wasm-route-controller.js +2 -4
- package/build/src/routes/basic-route.d.ts.map +1 -1
- package/build/src/routes/basic-route.js +2 -4
- package/build/src/routes/resolver.d.ts.map +1 -1
- package/build/src/routes/resolver.js +6 -16
- package/build/src/testing/expect-utils.d.ts.map +1 -1
- package/build/src/testing/expect-utils.js +9 -27
- package/build/src/testing/expect.d.ts.map +1 -1
- package/build/src/testing/expect.js +5 -15
- package/build/src/testing/test-runner.d.ts.map +1 -1
- package/build/src/testing/test-runner.js +4 -10
- package/build/src/testing/test.d.ts.map +1 -1
- package/build/src/testing/test.js +5 -17
- package/build/src/utils/model-scope.d.ts.map +1 -1
- package/build/src/utils/model-scope.js +2 -5
- package/build/src/utils/ransack.d.ts.map +1 -1
- package/build/src/utils/ransack.js +15 -42
- package/build/src/utils/with-tracked-stack-async-hooks.d.ts.map +1 -1
- package/build/src/utils/with-tracked-stack-async-hooks.js +4 -12
- package/build/src/utils/with-tracked-stack.d.ts.map +1 -1
- package/build/src/utils/with-tracked-stack.js +3 -8
- package/build/testing/expect-utils.js +8 -26
- package/build/testing/expect.js +4 -14
- package/build/testing/test-runner.js +3 -9
- package/build/testing/test.js +4 -12
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/utils/model-scope.js +1 -3
- package/build/utils/ransack.js +15 -41
- package/build/utils/with-tracked-stack-async-hooks.js +3 -9
- package/build/utils/with-tracked-stack.js +2 -6
- package/package.json +5 -3
- package/src/application.js +1 -3
- package/src/background-jobs/cron-expression.js +1 -3
- package/src/background-jobs/forked-runner-child.js +1 -3
- package/src/background-jobs/job.js +1 -3
- package/src/background-jobs/scheduler.js +2 -6
- package/src/background-jobs/store.js +2 -6
- package/src/background-jobs/web/controller.js +1 -3
- package/src/background-jobs/worker.js +1 -3
- package/src/beacon/client.js +2 -6
- package/src/cli/tenant-database-command-helper.js +1 -3
- package/src/configuration.js +62 -40
- package/src/controller.js +4 -14
- package/src/database/drivers/mssql/index.js +1 -3
- package/src/database/drivers/mysql/index.js +2 -6
- package/src/database/drivers/pgsql/index.js +1 -3
- package/src/database/drivers/sqlite/base.js +3 -9
- package/src/database/drivers/sqlite/index.js +3 -9
- package/src/database/drivers/sqlite/table.js +1 -3
- package/src/database/migrator.js +1 -3
- package/src/database/pool/async-tracked-multi-connection.js +86 -46
- package/src/database/pool/base-methods-forward.js +2 -10
- package/src/database/pool/base.js +13 -15
- package/src/database/query/index.js +4 -12
- package/src/database/query/join-object.js +3 -9
- package/src/database/query/model-class-query.js +21 -63
- package/src/database/query/preloader/belongs-to.js +9 -27
- package/src/database/query/preloader/has-many.js +7 -21
- package/src/database/query/preloader/has-one.js +3 -9
- package/src/database/query/preloader.js +6 -18
- package/src/database/query/query-data.js +5 -15
- package/src/database/query/where-model-class-hash.js +5 -15
- package/src/database/query/with-count.js +5 -15
- package/src/database/record/acts-as-list.js +10 -38
- package/src/database/record/attachments/normalize-input.js +7 -25
- package/src/database/record/attachments/storage-drivers/s3.js +4 -12
- package/src/database/record/attachments/store.js +2 -6
- package/src/database/record/index.js +55 -171
- package/src/database/record/instance-relationships/base.js +6 -20
- package/src/database/record/instance-relationships/belongs-to.js +2 -6
- package/src/database/record/instance-relationships/has-many.js +4 -12
- package/src/database/record/instance-relationships/has-one.js +4 -12
- package/src/database/record/relationships/base.js +1 -5
- package/src/database/record/validators/presence.js +1 -3
- package/src/database/record/validators/uniqueness.js +4 -12
- package/src/environment-handlers/browser.js +1 -3
- package/src/environment-handlers/node/cli/commands/console.js +2 -6
- package/src/environment-handlers/node/cli/commands/db/schema/load.js +1 -3
- package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +67 -11
- package/src/environment-handlers/node.js +15 -6
- package/src/frontend-model-controller.js +34 -110
- package/src/frontend-models/base.js +45 -151
- package/src/frontend-models/clear-pending-debounced-callback.js +1 -3
- package/src/frontend-models/preloader.js +3 -9
- package/src/frontend-models/query.js +11 -33
- package/src/frontend-models/resource-definition.js +2 -6
- package/src/frontend-models/transport-serialization.js +7 -21
- package/src/frontend-models/use-destroyed-event.js +2 -6
- package/src/frontend-models/use-model-class-event.js +2 -6
- package/src/frontend-models/use-updated-event.js +3 -9
- package/src/frontend-models/websocket-channel.js +9 -27
- package/src/frontend-models/websocket-publishers.js +12 -23
- package/src/http-server/client/index.js +7 -19
- package/src/http-server/client/params-to-object.js +6 -18
- package/src/http-server/client/request-buffer/index.js +1 -3
- package/src/http-server/client/request-parser.js +1 -3
- package/src/http-server/client/request-runner.js +5 -13
- package/src/http-server/client/websocket-session.js +6 -18
- package/src/http-server/development-reloader.js +2 -6
- package/src/http-server/remote-address.js +1 -5
- package/src/http-server/server-client.js +3 -9
- package/src/http-server/server-lock.js +2 -6
- package/src/http-server/websocket-channel-subscribers.js +2 -6
- package/src/http-server/websocket-event-log-store.js +5 -15
- package/src/http-server/websocket-events-host.js +1 -3
- package/src/http-server/worker-handler/in-process.js +3 -11
- package/src/http-server/worker-handler/index.js +3 -2
- package/src/http-server/worker-handler/worker-thread.js +1 -3
- package/src/logger.js +2 -6
- package/src/mailer/backends/smtp.js +1 -5
- package/src/mailer/base.js +4 -16
- package/src/plugins/sqljs-wasm-route-controller.js +1 -3
- package/src/routes/basic-route.js +1 -3
- package/src/routes/resolver.js +5 -15
- package/src/testing/expect-utils.js +8 -26
- package/src/testing/expect.js +4 -14
- package/src/testing/test-runner.js +3 -9
- package/src/testing/test.js +4 -12
- package/src/utils/model-scope.js +1 -3
- package/src/utils/ransack.js +15 -41
- package/src/utils/with-tracked-stack-async-hooks.js +3 -9
- package/src/utils/with-tracked-stack.js +2 -6
- package/build/src/utils/ensure-error.d.ts +0 -7
- package/build/src/utils/ensure-error.d.ts.map +0 -1
- package/build/src/utils/ensure-error.js +0 -15
- package/build/utils/ensure-error.js +0 -15
- package/src/utils/ensure-error.js +0 -15
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
import AuthorizationBaseResource from "../authorization/base-resource.js";
|
|
3
3
|
import { frontendModelResourcesWithBuiltInsForBackendProject } from "./built-in-resources.js";
|
|
4
|
-
import { frontendModelResourceDefinitionIsClass
|
|
4
|
+
import { frontendModelResourceDefinitionIsClass } from "./resource-definition.js";
|
|
5
5
|
import { serializeFrontendModelTransportValue } from "./transport-serialization.js";
|
|
6
6
|
const modelClassesWithRegisteredHooks = new WeakSet();
|
|
7
7
|
const channelClassRegisteredConfigurations = new WeakSet();
|
|
@@ -63,24 +63,19 @@ export async function ensureFrontendModelWebsocketPublishersRegistered(configura
|
|
|
63
63
|
* All frontend models.
|
|
64
64
|
* @type {Record<string, import("../configuration-types.js").FrontendModelResourceClassType>} */
|
|
65
65
|
let allFrontendModels = {};
|
|
66
|
-
/**
|
|
67
|
-
* Configured frontend models.
|
|
68
|
-
* @type {Record<string, import("../configuration-types.js").FrontendModelResourceClassType>} */
|
|
69
|
-
let configuredFrontendModels = {};
|
|
70
66
|
for (const backendProject of configuration.getBackendProjects()) {
|
|
71
|
-
const configuredProjectResources = frontendModelResourcesForBackendProject(backendProject);
|
|
72
67
|
const projectResources = frontendModelResourcesWithBuiltInsForBackendProject(backendProject);
|
|
73
|
-
configuredFrontendModels = { ...configuredFrontendModels, ...configuredProjectResources };
|
|
74
68
|
allFrontendModels = { ...allFrontendModels, ...projectResources };
|
|
75
69
|
}
|
|
76
|
-
//
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
70
|
+
// Always merge the ability resolver's resource list too. A project can expose some
|
|
71
|
+
// resources as discoverable `src/resources/*.js` files (configured or auto-discovered)
|
|
72
|
+
// and others only through `getAbilityResources()`; both sets need lifecycle publishers,
|
|
73
|
+
// so resource discovery must not suppress this list.
|
|
74
|
+
const abilityResources = configuration.getAbilityResources();
|
|
75
|
+
allFrontendModels = {
|
|
76
|
+
...allFrontendModels,
|
|
77
|
+
...frontendModelResourcesFromAbilityResourcesList(abilityResources)
|
|
78
|
+
};
|
|
84
79
|
// Phase 3: register the V2 channel class once per configuration so
|
|
85
80
|
// `subscribeChannel("frontend-models", {params: {model}})` finds it.
|
|
86
81
|
// Dynamic import keeps server-only WebsocketRequest + Node utilities
|
|
@@ -108,19 +103,13 @@ export async function ensureFrontendModelWebsocketPublishersRegistered(configura
|
|
|
108
103
|
continue;
|
|
109
104
|
modelClassesWithRegisteredHooks.add(modelClass);
|
|
110
105
|
modelClass.beforeCreate((model) => {
|
|
111
|
-
/**
|
|
112
|
-
* Narrows the runtime value to the documented type.
|
|
113
|
-
* @type {import("../database/record/index.js").default & {__frontendModelWebsocketAction?: "create" | "update"}} */ (model).__frontendModelWebsocketAction = "create";
|
|
106
|
+
/** @type {import("../database/record/index.js").default & {__frontendModelWebsocketAction?: "create" | "update"}} */ (model).__frontendModelWebsocketAction = "create";
|
|
114
107
|
});
|
|
115
108
|
modelClass.beforeUpdate((model) => {
|
|
116
|
-
/**
|
|
117
|
-
* Narrows the runtime value to the documented type.
|
|
118
|
-
* @type {import("../database/record/index.js").default & {__frontendModelWebsocketAction?: "create" | "update"}} */ (model).__frontendModelWebsocketAction = "update";
|
|
109
|
+
/** @type {import("../database/record/index.js").default & {__frontendModelWebsocketAction?: "create" | "update"}} */ (model).__frontendModelWebsocketAction = "update";
|
|
119
110
|
});
|
|
120
111
|
modelClass.afterSave((model) => {
|
|
121
|
-
const modelWithWebsocketAction = /**
|
|
122
|
-
* Narrows the runtime value to the documented type.
|
|
123
|
-
* @type {import("../database/record/index.js").default & {__frontendModelWebsocketAction?: "create" | "update"}} */ (model);
|
|
112
|
+
const modelWithWebsocketAction = /** @type {import("../database/record/index.js").default & {__frontendModelWebsocketAction?: "create" | "update"}} */ (model);
|
|
124
113
|
const action = modelWithWebsocketAction.__frontendModelWebsocketAction;
|
|
125
114
|
if (action !== "create" && action !== "update")
|
|
126
115
|
return;
|
|
@@ -161,4 +150,4 @@ function broadcastFrontendModelEvent(configuration, modelName, event) {
|
|
|
161
150
|
};
|
|
162
151
|
configuration.broadcastToChannel(FRONTEND_MODELS_CHANNEL_NAME, { model: modelName }, body);
|
|
163
152
|
}
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LXB1Ymxpc2hlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnJvbnRlbmQtbW9kZWxzL3dlYnNvY2tldC1wdWJsaXNoZXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLHlCQUF5QixNQUFNLG1DQUFtQyxDQUFBO0FBQ3pFLE9BQU8sRUFBQyxtREFBbUQsRUFBQyxNQUFNLHlCQUF5QixDQUFBO0FBQzNGLE9BQU8sRUFBQyxzQ0FBc0MsRUFBRSx1Q0FBdUMsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQ3hILE9BQU8sRUFBQyxvQ0FBb0MsRUFBQyxNQUFNLDhCQUE4QixDQUFBO0FBRWpGLE1BQU0sK0JBQStCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtBQUNyRCxNQUFNLG9DQUFvQyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7QUFFMUQsMEVBQTBFO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLGlCQUFpQixDQUFBO0FBRTdEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsU0FBUztJQUN6RCxPQUFPLG1CQUFtQixTQUFTLEVBQUUsQ0FBQTtBQUN2QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsOENBQThDLENBQUMsZ0JBQWdCO0lBQ3RFOztvR0FFZ0c7SUFDaEcsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO0lBRXBCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxPQUFPLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtJQUNsRyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBRW5ELEtBQUssTUFBTSxhQUFhLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxJ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VSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2hDLEtBQUssS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDN0QsMkJBQTJCLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsU0FBUyxFQUFFO29CQUNoRSxNQUFNLEVBQUUsU0FBUztvQkFDakIsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7aUJBQ2YsQ0FBQyxDQUFBO1lBQ0osQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDJCQUEyQixDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsS0FBSztJQUNsRSxNQUFNLElBQUksR0FBRztRQUNYLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtRQUNwQixFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDWixLQUFLLEVBQUUsU0FBUztRQUNoQixHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUUsb0NBQW9DLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUN0RixDQUFBO0lBRUQsYUFBYSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixFQUFFLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0FBQzFGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEF1dGhvcml6YXRpb25CYXNlUmVzb3VyY2UgZnJvbSBcIi4uL2F1dGhvcml6YXRpb24vYmFzZS1yZXNvdXJjZS5qc1wiXG5pbXBvcnQge2Zyb250ZW5kTW9kZWxSZXNvdXJjZXNXaXRoQnVpbHRJbnNGb3JCYWNrZW5kUHJvamVjdH0gZnJvbSBcIi4vYnVpbHQtaW4tcmVzb3VyY2VzLmpzXCJcbmltcG9ydCB7ZnJvbnRlbmRNb2RlbFJlc291cmNlRGVmaW5pdGlvbklzQ2xhc3MsIGZyb250ZW5kTW9kZWxSZXNvdXJjZXNGb3JCYWNrZW5kUHJvamVjdH0gZnJvbSBcIi4vcmVzb3VyY2UtZGVmaW5pdGlvbi5qc1wiXG5pbXBvcnQge3NlcmlhbGl6ZUZyb250ZW5kTW9kZWxUcmFuc3BvcnRWYWx1ZX0gZnJvbSBcIi4vdHJhbnNwb3J0LXNlcmlhbGl6YXRpb24uanNcIlxuXG5jb25zdCBtb2RlbENsYXNzZXNXaXRoUmVnaXN0ZXJlZEhvb2tzID0gbmV3IFdlYWtTZXQoKVxuY29uc3QgY2hhbm5lbENsYXNzUmVnaXN0ZXJlZENvbmZpZ3VyYXRpb25zID0gbmV3IFdlYWtTZXQoKVxuXG4vKiogU2hhcmVkIGNoYW5uZWwgbmFtZSBmb3IgYWxsIGZyb250ZW5kLW1vZGVsIGxpZmVjeWNsZSBzdWJzY3JpcHRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IEZST05URU5EX01PREVMU19DSEFOTkVMX05BTUUgPSBcImZyb250ZW5kLW1vZGVsc1wiXG5cbi8qKlxuICogUnVucyB0aGUgZnJvbnRlbmRNb2RlbEJyb2FkY2FzdENoYW5uZWxOYW1lIGhlbHBlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlbE5hbWUgLSBNb2RlbCBjbGFzcyBuYW1lLlxuICogQHJldHVybnMge3N0cmluZ30gLSBCcm9hZGNhc3QgY2hhbm5lbCBuYW1lIChsZWdhY3ksIHJldGFpbmVkIGZvciBtaWdyYXRpb24gY29tcGF0aWJpbGl0eSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9udGVuZE1vZGVsQnJvYWRjYXN0Q2hhbm5lbE5hbWUobW9kZWxOYW1lKSB7XG4gIHJldHVybiBgZnJvbnRlbmQtbW9kZWxzOiR7bW9kZWxOYW1lfWBcbn1cblxuLyoqXG4gKiBSdW5zIGZyb250ZW5kIG1vZGVsIHJlc291cmNlcyBmcm9tIGFiaWxpdHkgcmVzb3VyY2VzIGxpc3QuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuQWJpbGl0eVJlc291cmNlQ2xhc3NUeXBlW119IGFiaWxpdHlSZXNvdXJjZXMgLSBBYmlsaXR5IHJlc291cmNlIGNsYXNzZXMuXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgaW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDbGFzc1R5cGU+fSAtIFJlc291cmNlIGRlZmluaXRpb25zIGtleWVkIGJ5IG1vZGVsIG5hbWUuXG4gKi9cbmZ1bmN0aW9uIGZyb250ZW5kTW9kZWxSZXNvdXJjZXNGcm9tQWJpbGl0eVJlc291cmNlc0xpc3QoYWJpbGl0eVJlc291cmNlcykge1xuICAvKipcbiAgICogUmVzb3VyY2VzLlxuICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgaW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDbGFzc1R5cGU+fSAqL1xuICBjb25zdCByZXNvdXJjZXMgPSB7fVxuXG4gIGlmICghQXJyYXkuaXNBcnJheShhYmlsaXR5UmVzb3VyY2VzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYWJpbGl0eSByZXNvdXJjZXMgdG8gYmUgYW4gYXJyYXkgYnV0IGdvdDogJHt0eXBlb2YgYWJpbGl0eVJlc291cmNlc31gKVxuICB9XG5cbiAgaWYgKGFiaWxpdHlSZXNvdXJjZXMubGVuZ3RoID09PSAwKSByZXR1cm4gcmVzb3VyY2VzXG5cbiAgZm9yIChjb25zdCByZXNvdXJjZUNsYXNzIG9mIGFiaWxpdHlSZXNvdXJjZXMpIHtcbiAgICBpZiAodHlwZW9mIHJlc291cmNlQ2xhc3MgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhYmlsaXR5IHJlc291cmNlIHRvIGJlIGEgY2xhc3MgYnV0IGdvdDogJHt0eXBlb2YgcmVzb3VyY2VDbGFzc31gKVxuICAgIH1cblxuICAgIGlmIChmcm9udGVuZE1vZGVsUmVzb3VyY2VEZWZpbml0aW9uSXNDbGFzcyhyZXNvdXJjZUNsYXNzKSkge1xuICAgICAgLy8gQW4gYWJzdHJhY3QgYmFzZSByZXNvdXJjZSAobm8gc3RhdGljIE1vZGVsQ2xhc3Mg4oCUIGUuZy4gYW4gYXBwJ3Mgc2hhcmVkXG4gICAgICAvLyBgQmFzZVJlc291cmNlYCB0aGF0IG90aGVyIHJlc291cmNlcyBleHRlbmQpIGJhY2tzIG5vIG1vZGVsLCBzbyBpdCBpc24ndCBhXG4gICAgICAvLyBwdWJsaXNoYWJsZSBmcm9udGVuZCBtb2RlbC4gU2tpcCBpdCBpbnN0ZWFkIG9mIGxldHRpbmcgYG1vZGVsQ2xhc3MoKWBcbiAgICAgIC8vIHRocm93IGByZXF1aXJlcyBhIHN0YXRpYyBNb2RlbENsYXNzYCBkdXJpbmcgYWJpbGl0eS1yZXNvdXJjZSBkaXNjb3ZlcnkuXG4gICAgICBpZiAoIXJlc291cmNlQ2xhc3MuTW9kZWxDbGFzcykgY29udGludWVcblxuICAgICAgY29uc3QgbW9kZWxOYW1lID0gcmVzb3VyY2VDbGFzcy5tb2RlbENsYXNzKCkuZ2V0TW9kZWxOYW1lKClcblxuICAgICAgcmVzb3VyY2VzW21vZGVsTmFtZV0gPSByZXNvdXJjZUNsYXNzXG4gICAgfSBlbHNlIGlmIChyZXNvdXJjZUNsYXNzLnByb3RvdHlwZSBpbnN0YW5jZW9mIEF1dGhvcml6YXRpb25CYXNlUmVzb3VyY2UpIHtcbiAgICAgIC8vIEF1dGhvcml6YXRpb24tb25seSByZXNvdXJjZSDigJQgdmFsaWQgYnV0IG5vdCByZWxldmFudCBmb3IgV2ViU29ja2V0IHB1Ymxpc2hpbmdcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGFiaWxpdHkgcmVzb3VyY2UgY2xhc3M6ICR7cmVzb3VyY2VDbGFzcy5uYW1lfS4gRXhwZWN0ZWQgQXV0aG9yaXphdGlvbkJhc2VSZXNvdXJjZSBvciBGcm9udGVuZE1vZGVsQmFzZVJlc291cmNlIHN1YmNsYXNzLmApXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc291cmNlc1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIGVuc3VyZUZyb250ZW5kTW9kZWxXZWJzb2NrZXRQdWJsaXNoZXJzUmVnaXN0ZXJlZCBoZWxwZXIuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZUZyb250ZW5kTW9kZWxXZWJzb2NrZXRQdWJsaXNoZXJzUmVnaXN0ZXJlZChjb25maWd1cmF0aW9uKSB7XG4gIC8qKlxuICAgKiBBbGwgZnJvbnRlbmQgbW9kZWxzLlxuICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgaW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDbGFzc1R5cGU+fSAqL1xuICBsZXQgYWxsRnJvbnRlbmRNb2RlbHMgPSB7fVxuICAvKipcbiAgICogQ29uZmlndXJlZCBmcm9udGVuZCBtb2RlbHMuXG4gICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLkZyb250ZW5kTW9kZWxSZXNvdXJjZUNsYXNzVHlwZT59ICovXG4gIGxldCBjb25maWd1cmVkRnJvbnRlbmRNb2RlbHMgPSB7fVxuXG4gIGZvciAoY29uc3QgYmFja2VuZFByb2plY3Qgb2YgY29uZmlndXJhdGlvbi5nZXRCYWNrZW5kUHJvamVjdHMoKSkge1xuICAgIGNvbnN0IGNvbmZpZ3VyZWRQcm9qZWN0UmVzb3VyY2VzID0gZnJvbnRlbmRNb2RlbFJlc291cmNlc0ZvckJhY2tlbmRQcm9qZWN0KGJhY2tlbmRQcm9qZWN0KVxuICAgIGNvbnN0IHByb2plY3RSZXNvdXJjZXMgPSBmcm9udGVuZE1vZGVsUmVzb3VyY2VzV2l0aEJ1aWx0SW5zRm9yQmFja2VuZFByb2plY3QoYmFja2VuZFByb2plY3QpXG5cbiAgICBjb25maWd1cmVkRnJvbnRlbmRNb2RlbHMgPSB7Li4uY29uZmlndXJlZEZyb250ZW5kTW9kZWxzLCAuLi5jb25maWd1cmVkUHJvamVjdFJlc291cmNlc31cbiAgICBhbGxGcm9udGVuZE1vZGVscyA9IHsuLi5hbGxGcm9udGVuZE1vZGVscywgLi4ucHJvamVjdFJlc291cmNlc31cbiAgfVxuXG4gIC8vIEF1dG8tZGlzY292ZXIgZnJvbSBhYmlsaXR5IHJlc291cmNlcyB3aGVuIGJhY2tlbmQgcHJvamVjdHMgZGlkbid0IHByb3ZpZGUgYW55XG4gIGlmIChPYmplY3Qua2V5cyhjb25maWd1cmVkRnJvbnRlbmRNb2RlbHMpLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnN0IGFiaWxpdHlSZXNvdXJjZXMgPSBjb25maWd1cmF0aW9uLmdldEFiaWxpdHlSZXNvdXJjZXMoKVxuXG4gICAgYWxsRnJvbnRlbmRNb2RlbHMgPSB7XG4gICAgICAuLi5hbGxGcm9udGVuZE1vZGVscyxcbiAgICAgIC4uLmZyb250ZW5kTW9kZWxSZXNvdXJjZXNGcm9tQWJpbGl0eVJlc291cmNlc0xpc3QoYWJpbGl0eVJlc291cmNlcylcbiAgICB9XG4gIH1cblxuICAvLyBQaGFzZSAzOiByZWdpc3RlciB0aGUgVjIgY2hhbm5lbCBjbGFzcyBvbmNlIHBlciBjb25maWd1cmF0aW9uIHNvXG4gIC8vIGBzdWJzY3JpYmVDaGFubmVsKFwiZnJvbnRlbmQtbW9kZWxzXCIsIHtwYXJhbXM6IHttb2RlbH19KWAgZmluZHMgaXQuXG4gIC8vIER5bmFtaWMgaW1wb3J0IGtlZXBzIHNlcnZlci1vbmx5IFdlYnNvY2tldFJlcXVlc3QgKyBOb2RlIHV0aWxpdGllc1xuICAvLyBvdXQgb2YgYnJvd3NlciBidW5kbGVzIHRoYXQgdHJhbnNpdGl2ZWx5IHB1bGwgaW4gdGhpcyBtb2R1bGUgdmlhXG4gIC8vIGNvbmZpZ3VyYXRpb24g4oaSIGxvZ2dlci5cbiAgaWYgKCFjaGFubmVsQ2xhc3NSZWdpc3RlcmVkQ29uZmlndXJhdGlvbnMuaGFzKGNvbmZpZ3VyYXRpb24pKSB7XG4gICAgY2hhbm5lbENsYXNzUmVnaXN0ZXJlZENvbmZpZ3VyYXRpb25zLmFkZChjb25maWd1cmF0aW9uKVxuICAgIGNvbnN0IHtkZWZhdWx0OiBGcm9udGVuZE1vZGVsV2Vic29ja2V0Q2hhbm5lbH0gPSBhd2FpdCBpbXBvcnQoXCIuL3dlYnNvY2tldC1jaGFubmVsLmpzXCIpXG5cbiAgICBjb25maWd1cmF0aW9uLnJlZ2lzdGVyV2Vic29ja2V0Q2hhbm5lbChGUk9OVEVORF9NT0RFTFNfQ0hBTk5FTF9OQU1FLCBGcm9udGVuZE1vZGVsV2Vic29ja2V0Q2hhbm5lbClcbiAgfVxuXG4gIGZvciAoY29uc3QgcmVzb3VyY2VDbGFzcyBvZiBPYmplY3QudmFsdWVzKGFsbEZyb250ZW5kTW9kZWxzKSkge1xuICAgIC8vIEFuIGFic3RyYWN0IGJhc2UgcmVzb3VyY2UgKG5vIHN0YXRpYyBNb2RlbENsYXNzIOKAlCBlLmcuIGFuIGFwcCdzIHNoYXJlZFxuICAgIC8vIGBCYXNlUmVzb3VyY2VgIHRoYXQgb3RoZXIgcmVzb3VyY2VzIGV4dGVuZCkgYmFja3Mgbm8gbW9kZWwsIHNvIHRoZXJlIGlzXG4gICAgLy8gbm90aGluZyB0byBwdWJsaXNoIHJlYWx0aW1lIGV2ZW50cyBmb3IuIFNraXAgaXQgaW5zdGVhZCBvZiB0aHJvd2luZy5cbiAgICBpZiAoIXJlc291cmNlQ2xhc3MuTW9kZWxDbGFzcykgY29udGludWVcblxuICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSByZXNvdXJjZUNsYXNzLm1vZGVsQ2xhc3MoKVxuICAgIGNvbnN0IG1vZGVsTmFtZSA9IG1vZGVsQ2xhc3MuZ2V0TW9kZWxOYW1lKClcblxuICAgIC8vIFJlZ2lzdGVyIGxpZmVjeWNsZSBob29rcyBvbmNlIHBlciBtb2RlbCBjbGFzcywgbm90IHBlciBjb25maWd1cmF0aW9uLiBBIG1vZGVsIGNsYXNzIGJlbG9uZ3MgdG8gYVxuICAgIC8vIHNpbmdsZSBiYWNrZW5kIHByb2plY3QvY29uZmlnIGluIHByb2R1Y3Rpb24sIHNvIHBlci1jb25maWcgcmVnaXN0cmF0aW9uIG9ubHkgZGlmZmVycyBpbiB0ZXN0cyB3aGVyZVxuICAgIC8vIHRoZSBzYW1lIG1vZGVsIGNsYXNzIGlzIHJlYWNoYWJsZSBmcm9tIG11bHRpcGxlIGNvbmZpZ3Mg4oCUIHRoZXJlIGl0IGF0dGFjaGVzIGR1cGxpY2F0ZSBiZWZvcmVDcmVhdGUvXG4gICAgLy8gYWZ0ZXJTYXZlL2FmdGVyRGVzdHJveSBob29rcyB0aGF0IGRvdWJsZS1maXJlIGJyb2FkY2FzdHMgKGFuZCBsZWFrIGFjcm9zcyBzcGVjcykuIFRoZSBob29rcyByZWFkIHRoZVxuICAgIC8vIG1vZGVsJ3MgcnVudGltZSBjb25maWd1cmF0aW9uIHdoZW4gYnJvYWRjYXN0aW5nLCBzbyBhIHNpbmdsZSByZWdpc3RyYXRpb24gaXMgc3VmZmljaWVudC5cbiAgICBpZiAobW9kZWxDbGFzc2VzV2l0aFJlZ2lzdGVyZWRIb29rcy5oYXMobW9kZWxDbGFzcykpIGNvbnRpbnVlXG5cbiAgICBtb2RlbENsYXNzZXNXaXRoUmVnaXN0ZXJlZEhvb2tzLmFkZChtb2RlbENsYXNzKVxuXG4gICAgbW9kZWxDbGFzcy5iZWZvcmVDcmVhdGUoKG1vZGVsKSA9PiB7XG4gICAgICAvKipcbiAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAqIEB0eXBlIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCAmIHtfX2Zyb250ZW5kTW9kZWxXZWJzb2NrZXRBY3Rpb24/OiBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIn19ICovIChtb2RlbCkuX19mcm9udGVuZE1vZGVsV2Vic29ja2V0QWN0aW9uID0gXCJjcmVhdGVcIlxuICAgIH0pXG5cbiAgICBtb2RlbENsYXNzLmJlZm9yZVVwZGF0ZSgobW9kZWwpID0+IHtcbiAgICAgIC8qKlxuICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICogQHR5cGUge2ltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0ICYge19fZnJvbnRlbmRNb2RlbFdlYnNvY2tldEFjdGlvbj86IFwiY3JlYXRlXCIgfCBcInVwZGF0ZVwifX0gKi8gKG1vZGVsKS5fX2Zyb250ZW5kTW9kZWxXZWJzb2NrZXRBY3Rpb24gPSBcInVwZGF0ZVwiXG4gICAgfSlcblxuICAgIG1vZGVsQ2xhc3MuYWZ0ZXJTYXZlKChtb2RlbCkgPT4ge1xuICAgICAgY29uc3QgbW9kZWxXaXRoV2Vic29ja2V0QWN0aW9uID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAdHlwZSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQgJiB7X19mcm9udGVuZE1vZGVsV2Vic29ja2V0QWN0aW9uPzogXCJjcmVhdGVcIiB8IFwidXBkYXRlXCJ9fSAqLyAobW9kZWwpXG4gICAgICBjb25zdCBhY3Rpb24gPSBtb2RlbFdpdGhXZWJzb2NrZXRBY3Rpb24uX19mcm9udGVuZE1vZGVsV2Vic29ja2V0QWN0aW9uXG5cbiAgICAgIGlmIChhY3Rpb24gIT09IFwiY3JlYXRlXCIgJiYgYWN0aW9uICE9PSBcInVwZGF0ZVwiKSByZXR1cm5cblxuICAgICAgdm9pZCBtb2RlbC5nZXRNb2RlbENsYXNzKCkuY29ubmVjdGlvbigpLmFmdGVyQ29tbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgYnJvYWRjYXN0RnJvbnRlbmRNb2RlbEV2ZW50KG1vZGVsLl9nZXRDb25maWd1cmF0aW9uKCksIG1vZGVsTmFtZSwge1xuICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICBpZDogbW9kZWwuaWQoKSxcbiAgICAgICAgICByZWNvcmQ6IG1vZGVsLmF0dHJpYnV0ZXMoKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgIGRlbGV0ZSBtb2RlbFdpdGhXZWJzb2NrZXRBY3Rpb24uX19mcm9udGVuZE1vZGVsV2Vic29ja2V0QWN0aW9uXG4gICAgfSlcblxuICAgIG1vZGVsQ2xhc3MuYWZ0ZXJEZXN0cm95KChtb2RlbCkgPT4ge1xuICAgICAgdm9pZCBtb2RlbC5nZXRNb2RlbENsYXNzKCkuY29ubmVjdGlvbigpLmFmdGVyQ29tbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgYnJvYWRjYXN0RnJvbnRlbmRNb2RlbEV2ZW50KG1vZGVsLl9nZXRDb25maWd1cmF0aW9uKCksIG1vZGVsTmFtZSwge1xuICAgICAgICAgIGFjdGlvbjogXCJkZXN0cm95XCIsXG4gICAgICAgICAgaWQ6IG1vZGVsLmlkKClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIEZhbnMgYSBsaWZlY3ljbGUgZXZlbnQgb3V0IHRvIGFsbCBWMiBcImZyb250ZW5kLW1vZGVsc1wiIHN1YnNjcmliZXJzXG4gKiB3aG9zZSBgcGFyYW1zLm1vZGVsYCBtYXRjaGVzLiBSZWNvcmQgYXR0cmlidXRlcyBnbyB0aHJvdWdoIHRoZVxuICogdHJhbnNwb3J0IHNlcmlhbGl6ZXIgc28gRGF0ZS91bmRlZmluZWQvZXRjLiBzdXJ2aXZlIHRoZSBKU09OIGhvcC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBjb25maWd1cmF0aW9uIC0gQ29uZmlndXJhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlbE5hbWUgLSBNb2RlbCBjbGFzcyBuYW1lLlxuICogQHBhcmFtIHt7YWN0aW9uOiBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwiLCBpZDogPywgcmVjb3JkPzogUmVjb3JkPHN0cmluZywgPz59fSBldmVudCAtIExpZmVjeWNsZSBldmVudC5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBicm9hZGNhc3RGcm9udGVuZE1vZGVsRXZlbnQoY29uZmlndXJhdGlvbiwgbW9kZWxOYW1lLCBldmVudCkge1xuICBjb25zdCBib2R5ID0ge1xuICAgIGFjdGlvbjogZXZlbnQuYWN0aW9uLFxuICAgIGlkOiBldmVudC5pZCxcbiAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgIC4uLihldmVudC5yZWNvcmQgPyB7cmVjb3JkOiBzZXJpYWxpemVGcm9udGVuZE1vZGVsVHJhbnNwb3J0VmFsdWUoZXZlbnQucmVjb3JkKX0gOiB7fSlcbiAgfVxuXG4gIGNvbmZpZ3VyYXRpb24uYnJvYWRjYXN0VG9DaGFubmVsKEZST05URU5EX01PREVMU19DSEFOTkVMX05BTUUsIHttb2RlbDogbW9kZWxOYW1lfSwgYm9keSlcbn1cbiJdfQ==
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LXB1Ymxpc2hlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnJvbnRlbmQtbW9kZWxzL3dlYnNvY2tldC1wdWJsaXNoZXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLHlCQUF5QixNQUFNLG1DQUFtQyxDQUFBO0FBQ3pFLE9BQU8sRUFBQyxtREFBbUQsRUFBQyxNQUFNLHlCQUF5QixDQUFBO0FBQzNGLE9BQU8sRUFBQyxzQ0FBc0MsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQy9FLE9BQU8sRUFBQyxvQ0FBb0MsRUFBQyxNQUFNLDhCQUE4QixDQUFBO0FBRWpGLE1BQU0sK0JBQStCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtBQUNyRCxNQUFNLG9DQUFvQyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7QUFFMUQsMEVBQTBFO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLGlCQUFpQixDQUFBO0FBRTdEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsU0FBUztJQUN6RCxPQUFPLG1CQUFtQixTQUFTLEVBQUUsQ0FBQTtBQUN2QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsOENBQThDLENBQUMsZ0JBQWdCO0lBQ3RFOztvR0FFZ0c7SUFDaEcsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO0lBRXBCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxPQUFPLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtJQUNsRyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBRW5ELEtBQUssTUFBTSxhQUFhLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxJQUFJLE9BQU8sYUFB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RUFBRSxFQUFFO2lCQUNmLENBQUMsQ0FBQTtZQUNKLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUywyQkFBMkIsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLEtBQUs7SUFDbEUsTUFBTSxJQUFJLEdBQUc7UUFDWCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07UUFDcEIsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO1FBQ1osS0FBSyxFQUFFLFNBQVM7UUFDaEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFFLG9DQUFvQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDdEYsQ0FBQTtJQUVELGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsRUFBRSxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUMxRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBBdXRob3JpemF0aW9uQmFzZVJlc291cmNlIGZyb20gXCIuLi9hdXRob3JpemF0aW9uL2Jhc2UtcmVzb3VyY2UuanNcIlxuaW1wb3J0IHtmcm9udGVuZE1vZGVsUmVzb3VyY2VzV2l0aEJ1aWx0SW5zRm9yQmFja2VuZFByb2plY3R9IGZyb20gXCIuL2J1aWx0LWluLXJlc291cmNlcy5qc1wiXG5pbXBvcnQge2Zyb250ZW5kTW9kZWxSZXNvdXJjZURlZmluaXRpb25Jc0NsYXNzfSBmcm9tIFwiLi9yZXNvdXJjZS1kZWZpbml0aW9uLmpzXCJcbmltcG9ydCB7c2VyaWFsaXplRnJvbnRlbmRNb2RlbFRyYW5zcG9ydFZhbHVlfSBmcm9tIFwiLi90cmFuc3BvcnQtc2VyaWFsaXphdGlvbi5qc1wiXG5cbmNvbnN0IG1vZGVsQ2xhc3Nlc1dpdGhSZWdpc3RlcmVkSG9va3MgPSBuZXcgV2Vha1NldCgpXG5jb25zdCBjaGFubmVsQ2xhc3NSZWdpc3RlcmVkQ29uZmlndXJhdGlvbnMgPSBuZXcgV2Vha1NldCgpXG5cbi8qKiBTaGFyZWQgY2hhbm5lbCBuYW1lIGZvciBhbGwgZnJvbnRlbmQtbW9kZWwgbGlmZWN5Y2xlIHN1YnNjcmlwdGlvbnMuICovXG5leHBvcnQgY29uc3QgRlJPTlRFTkRfTU9ERUxTX0NIQU5ORUxfTkFNRSA9IFwiZnJvbnRlbmQtbW9kZWxzXCJcblxuLyoqXG4gKiBSdW5zIHRoZSBmcm9udGVuZE1vZGVsQnJvYWRjYXN0Q2hhbm5lbE5hbWUgaGVscGVyLlxuICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsTmFtZSAtIE1vZGVsIGNsYXNzIG5hbWUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIEJyb2FkY2FzdCBjaGFubmVsIG5hbWUgKGxlZ2FjeSwgcmV0YWluZWQgZm9yIG1pZ3JhdGlvbiBjb21wYXRpYmlsaXR5KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb250ZW5kTW9kZWxCcm9hZGNhc3RDaGFubmVsTmFtZShtb2RlbE5hbWUpIHtcbiAgcmV0dXJuIGBmcm9udGVuZC1tb2RlbHM6JHttb2RlbE5hbWV9YFxufVxuXG4vKipcbiAqIFJ1bnMgZnJvbnRlbmQgbW9kZWwgcmVzb3VyY2VzIGZyb20gYWJpbGl0eSByZXNvdXJjZXMgbGlzdC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5BYmlsaXR5UmVzb3VyY2VDbGFzc1R5cGVbXX0gYWJpbGl0eVJlc291cmNlcyAtIEFiaWxpdHkgcmVzb3VyY2UgY2xhc3Nlcy5cbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLkZyb250ZW5kTW9kZWxSZXNvdXJjZUNsYXNzVHlwZT59IC0gUmVzb3VyY2UgZGVmaW5pdGlvbnMga2V5ZWQgYnkgbW9kZWwgbmFtZS5cbiAqL1xuZnVuY3Rpb24gZnJvbnRlbmRNb2RlbFJlc291cmNlc0Zyb21BYmlsaXR5UmVzb3VyY2VzTGlzdChhYmlsaXR5UmVzb3VyY2VzKSB7XG4gIC8qKlxuICAgKiBSZXNvdXJjZXMuXG4gICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLkZyb250ZW5kTW9kZWxSZXNvdXJjZUNsYXNzVHlwZT59ICovXG4gIGNvbnN0IHJlc291cmNlcyA9IHt9XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGFiaWxpdHlSZXNvdXJjZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhYmlsaXR5IHJlc291cmNlcyB0byBiZSBhbiBhcnJheSBidXQgZ290OiAke3R5cGVvZiBhYmlsaXR5UmVzb3VyY2VzfWApXG4gIH1cblxuICBpZiAoYWJpbGl0eVJlc291cmNlcy5sZW5ndGggPT09IDApIHJldHVybiByZXNvdXJjZXNcblxuICBmb3IgKGNvbnN0IHJlc291cmNlQ2xhc3Mgb2YgYWJpbGl0eVJlc291cmNlcykge1xuICAgIGlmICh0eXBlb2YgcmVzb3VyY2VDbGFzcyAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGFiaWxpdHkgcmVzb3VyY2UgdG8gYmUgYSBjbGFzcyBidXQgZ290OiAke3R5cGVvZiByZXNvdXJjZUNsYXNzfWApXG4gICAgfVxuXG4gICAgaWYgKGZyb250ZW5kTW9kZWxSZXNvdXJjZURlZmluaXRpb25Jc0NsYXNzKHJlc291cmNlQ2xhc3MpKSB7XG4gICAgICAvLyBBbiBhYnN0cmFjdCBiYXNlIHJlc291cmNlIChubyBzdGF0aWMgTW9kZWxDbGFzcyDigJQgZS5nLiBhbiBhcHAncyBzaGFyZWRcbiAgICAgIC8vIGBCYXNlUmVzb3VyY2VgIHRoYXQgb3RoZXIgcmVzb3VyY2VzIGV4dGVuZCkgYmFja3Mgbm8gbW9kZWwsIHNvIGl0IGlzbid0IGFcbiAgICAgIC8vIHB1Ymxpc2hhYmxlIGZyb250ZW5kIG1vZGVsLiBTa2lwIGl0IGluc3RlYWQgb2YgbGV0dGluZyBgbW9kZWxDbGFzcygpYFxuICAgICAgLy8gdGhyb3cgYHJlcXVpcmVzIGEgc3RhdGljIE1vZGVsQ2xhc3NgIGR1cmluZyBhYmlsaXR5LXJlc291cmNlIGRpc2NvdmVyeS5cbiAgICAgIGlmICghcmVzb3VyY2VDbGFzcy5Nb2RlbENsYXNzKSBjb250aW51ZVxuXG4gICAgICBjb25zdCBtb2RlbE5hbWUgPSByZXNvdXJjZUNsYXNzLm1vZGVsQ2xhc3MoKS5nZXRNb2RlbE5hbWUoKVxuXG4gICAgICByZXNvdXJjZXNbbW9kZWxOYW1lXSA9IHJlc291cmNlQ2xhc3NcbiAgICB9IGVsc2UgaWYgKHJlc291cmNlQ2xhc3MucHJvdG90eXBlIGluc3RhbmNlb2YgQXV0aG9yaXphdGlvbkJhc2VSZXNvdXJjZSkge1xuICAgICAgLy8gQXV0aG9yaXphdGlvbi1vbmx5IHJlc291cmNlIOKAlCB2YWxpZCBidXQgbm90IHJlbGV2YW50IGZvciBXZWJTb2NrZXQgcHVibGlzaGluZ1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgYWJpbGl0eSByZXNvdXJjZSBjbGFzczogJHtyZXNvdXJjZUNsYXNzLm5hbWV9LiBFeHBlY3RlZCBBdXRob3JpemF0aW9uQmFzZVJlc291cmNlIG9yIEZyb250ZW5kTW9kZWxCYXNlUmVzb3VyY2Ugc3ViY2xhc3MuYClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzb3VyY2VzXG59XG5cbi8qKlxuICogUnVucyB0aGUgZW5zdXJlRnJvbnRlbmRNb2RlbFdlYnNvY2tldFB1Ymxpc2hlcnNSZWdpc3RlcmVkIGhlbHBlci5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBjb25maWd1cmF0aW9uIC0gQ29uZmlndXJhdGlvbiBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlRnJvbnRlbmRNb2RlbFdlYnNvY2tldFB1Ymxpc2hlcnNSZWdpc3RlcmVkKGNvbmZpZ3VyYXRpb24pIHtcbiAgLyoqXG4gICAqIEFsbCBmcm9udGVuZCBtb2RlbHMuXG4gICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLkZyb250ZW5kTW9kZWxSZXNvdXJjZUNsYXNzVHlwZT59ICovXG4gIGxldCBhbGxGcm9udGVuZE1vZGVscyA9IHt9XG5cbiAgZm9yIChjb25zdCBiYWNrZW5kUHJvamVjdCBvZiBjb25maWd1cmF0aW9uLmdldEJhY2tlbmRQcm9qZWN0cygpKSB7XG4gICAgY29uc3QgcHJvamVjdFJlc291cmNlcyA9IGZyb250ZW5kTW9kZWxSZXNvdXJjZXNXaXRoQnVpbHRJbnNGb3JCYWNrZW5kUHJvamVjdChiYWNrZW5kUHJvamVjdClcblxuICAgIGFsbEZyb250ZW5kTW9kZWxzID0gey4uLmFsbEZyb250ZW5kTW9kZWxzLCAuLi5wcm9qZWN0UmVzb3VyY2VzfVxuICB9XG5cbiAgLy8gQWx3YXlzIG1lcmdlIHRoZSBhYmlsaXR5IHJlc29sdmVyJ3MgcmVzb3VyY2UgbGlzdCB0b28uIEEgcHJvamVjdCBjYW4gZXhwb3NlIHNvbWVcbiAgLy8gcmVzb3VyY2VzIGFzIGRpc2NvdmVyYWJsZSBgc3JjL3Jlc291cmNlcy8qLmpzYCBmaWxlcyAoY29uZmlndXJlZCBvciBhdXRvLWRpc2NvdmVyZWQpXG4gIC8vIGFuZCBvdGhlcnMgb25seSB0aHJvdWdoIGBnZXRBYmlsaXR5UmVzb3VyY2VzKClgOyBib3RoIHNldHMgbmVlZCBsaWZlY3ljbGUgcHVibGlzaGVycyxcbiAgLy8gc28gcmVzb3VyY2UgZGlzY292ZXJ5IG11c3Qgbm90IHN1cHByZXNzIHRoaXMgbGlzdC5cbiAgY29uc3QgYWJpbGl0eVJlc291cmNlcyA9IGNvbmZpZ3VyYXRpb24uZ2V0QWJpbGl0eVJlc291cmNlcygpXG5cbiAgYWxsRnJvbnRlbmRNb2RlbHMgPSB7XG4gICAgLi4uYWxsRnJvbnRlbmRNb2RlbHMsXG4gICAgLi4uZnJvbnRlbmRNb2RlbFJlc291cmNlc0Zyb21BYmlsaXR5UmVzb3VyY2VzTGlzdChhYmlsaXR5UmVzb3VyY2VzKVxuICB9XG5cbiAgLy8gUGhhc2UgMzogcmVnaXN0ZXIgdGhlIFYyIGNoYW5uZWwgY2xhc3Mgb25jZSBwZXIgY29uZmlndXJhdGlvbiBzb1xuICAvLyBgc3Vic2NyaWJlQ2hhbm5lbChcImZyb250ZW5kLW1vZGVsc1wiLCB7cGFyYW1zOiB7bW9kZWx9fSlgIGZpbmRzIGl0LlxuICAvLyBEeW5hbWljIGltcG9ydCBrZWVwcyBzZXJ2ZXItb25seSBXZWJzb2NrZXRSZXF1ZXN0ICsgTm9kZSB1dGlsaXRpZXNcbiAgLy8gb3V0IG9mIGJyb3dzZXIgYnVuZGxlcyB0aGF0IHRyYW5zaXRpdmVseSBwdWxsIGluIHRoaXMgbW9kdWxlIHZpYVxuICAvLyBjb25maWd1cmF0aW9uIOKGkiBsb2dnZXIuXG4gIGlmICghY2hhbm5lbENsYXNzUmVnaXN0ZXJlZENvbmZpZ3VyYXRpb25zLmhhcyhjb25maWd1cmF0aW9uKSkge1xuICAgIGNoYW5uZWxDbGFzc1JlZ2lzdGVyZWRDb25maWd1cmF0aW9ucy5hZGQoY29uZmlndXJhdGlvbilcbiAgICBjb25zdCB7ZGVmYXVsdDogRnJvbnRlbmRNb2RlbFdlYnNvY2tldENoYW5uZWx9ID0gYXdhaXQgaW1wb3J0KFwiLi93ZWJzb2NrZXQtY2hhbm5lbC5qc1wiKVxuXG4gICAgY29uZmlndXJhdGlvbi5yZWdpc3RlcldlYnNvY2tldENoYW5uZWwoRlJPTlRFTkRfTU9ERUxTX0NIQU5ORUxfTkFNRSwgRnJvbnRlbmRNb2RlbFdlYnNvY2tldENoYW5uZWwpXG4gIH1cblxuICBmb3IgKGNvbnN0IHJlc291cmNlQ2xhc3Mgb2YgT2JqZWN0LnZhbHVlcyhhbGxGcm9udGVuZE1vZGVscykpIHtcbiAgICAvLyBBbiBhYnN0cmFjdCBiYXNlIHJlc291cmNlIChubyBzdGF0aWMgTW9kZWxDbGFzcyDigJQgZS5nLiBhbiBhcHAncyBzaGFyZWRcbiAgICAvLyBgQmFzZVJlc291cmNlYCB0aGF0IG90aGVyIHJlc291cmNlcyBleHRlbmQpIGJhY2tzIG5vIG1vZGVsLCBzbyB0aGVyZSBpc1xuICAgIC8vIG5vdGhpbmcgdG8gcHVibGlzaCByZWFsdGltZSBldmVudHMgZm9yLiBTa2lwIGl0IGluc3RlYWQgb2YgdGhyb3dpbmcuXG4gICAgaWYgKCFyZXNvdXJjZUNsYXNzLk1vZGVsQ2xhc3MpIGNvbnRpbnVlXG5cbiAgICBjb25zdCBtb2RlbENsYXNzID0gcmVzb3VyY2VDbGFzcy5tb2RlbENsYXNzKClcbiAgICBjb25zdCBtb2RlbE5hbWUgPSBtb2RlbENsYXNzLmdldE1vZGVsTmFtZSgpXG5cbiAgICAvLyBSZWdpc3RlciBsaWZlY3ljbGUgaG9va3Mgb25jZSBwZXIgbW9kZWwgY2xhc3MsIG5vdCBwZXIgY29uZmlndXJhdGlvbi4gQSBtb2RlbCBjbGFzcyBiZWxvbmdzIHRvIGFcbiAgICAvLyBzaW5nbGUgYmFja2VuZCBwcm9qZWN0L2NvbmZpZyBpbiBwcm9kdWN0aW9uLCBzbyBwZXItY29uZmlnIHJlZ2lzdHJhdGlvbiBvbmx5IGRpZmZlcnMgaW4gdGVzdHMgd2hlcmVcbiAgICAvLyB0aGUgc2FtZSBtb2RlbCBjbGFzcyBpcyByZWFjaGFibGUgZnJvbSBtdWx0aXBsZSBjb25maWdzIOKAlCB0aGVyZSBpdCBhdHRhY2hlcyBkdXBsaWNhdGUgYmVmb3JlQ3JlYXRlL1xuICAgIC8vIGFmdGVyU2F2ZS9hZnRlckRlc3Ryb3kgaG9va3MgdGhhdCBkb3VibGUtZmlyZSBicm9hZGNhc3RzIChhbmQgbGVhayBhY3Jvc3Mgc3BlY3MpLiBUaGUgaG9va3MgcmVhZCB0aGVcbiAgICAvLyBtb2RlbCdzIHJ1bnRpbWUgY29uZmlndXJhdGlvbiB3aGVuIGJyb2FkY2FzdGluZywgc28gYSBzaW5nbGUgcmVnaXN0cmF0aW9uIGlzIHN1ZmZpY2llbnQuXG4gICAgaWYgKG1vZGVsQ2xhc3Nlc1dpdGhSZWdpc3RlcmVkSG9va3MuaGFzKG1vZGVsQ2xhc3MpKSBjb250aW51ZVxuXG4gICAgbW9kZWxDbGFzc2VzV2l0aFJlZ2lzdGVyZWRIb29rcy5hZGQobW9kZWxDbGFzcylcblxuICAgIG1vZGVsQ2xhc3MuYmVmb3JlQ3JlYXRlKChtb2RlbCkgPT4ge1xuICAgICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCAmIHtfX2Zyb250ZW5kTW9kZWxXZWJzb2NrZXRBY3Rpb24/OiBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIn19ICovIChtb2RlbCkuX19mcm9udGVuZE1vZGVsV2Vic29ja2V0QWN0aW9uID0gXCJjcmVhdGVcIlxuICAgIH0pXG5cbiAgICBtb2RlbENsYXNzLmJlZm9yZVVwZGF0ZSgobW9kZWwpID0+IHtcbiAgICAgIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQgJiB7X19mcm9udGVuZE1vZGVsV2Vic29ja2V0QWN0aW9uPzogXCJjcmVhdGVcIiB8IFwidXBkYXRlXCJ9fSAqLyAobW9kZWwpLl9fZnJvbnRlbmRNb2RlbFdlYnNvY2tldEFjdGlvbiA9IFwidXBkYXRlXCJcbiAgICB9KVxuXG4gICAgbW9kZWxDbGFzcy5hZnRlclNhdmUoKG1vZGVsKSA9PiB7XG4gICAgICBjb25zdCBtb2RlbFdpdGhXZWJzb2NrZXRBY3Rpb24gPSAvKiogQHR5cGUge2ltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0ICYge19fZnJvbnRlbmRNb2RlbFdlYnNvY2tldEFjdGlvbj86IFwiY3JlYXRlXCIgfCBcInVwZGF0ZVwifX0gKi8gKG1vZGVsKVxuICAgICAgY29uc3QgYWN0aW9uID0gbW9kZWxXaXRoV2Vic29ja2V0QWN0aW9uLl9fZnJvbnRlbmRNb2RlbFdlYnNvY2tldEFjdGlvblxuXG4gICAgICBpZiAoYWN0aW9uICE9PSBcImNyZWF0ZVwiICYmIGFjdGlvbiAhPT0gXCJ1cGRhdGVcIikgcmV0dXJuXG5cbiAgICAgIHZvaWQgbW9kZWwuZ2V0TW9kZWxDbGFzcygpLmNvbm5lY3Rpb24oKS5hZnRlckNvbW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgIGJyb2FkY2FzdEZyb250ZW5kTW9kZWxFdmVudChtb2RlbC5fZ2V0Q29uZmlndXJhdGlvbigpLCBtb2RlbE5hbWUsIHtcbiAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgaWQ6IG1vZGVsLmlkKCksXG4gICAgICAgICAgcmVjb3JkOiBtb2RlbC5hdHRyaWJ1dGVzKClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICBkZWxldGUgbW9kZWxXaXRoV2Vic29ja2V0QWN0aW9uLl9fZnJvbnRlbmRNb2RlbFdlYnNvY2tldEFjdGlvblxuICAgIH0pXG5cbiAgICBtb2RlbENsYXNzLmFmdGVyRGVzdHJveSgobW9kZWwpID0+IHtcbiAgICAgIHZvaWQgbW9kZWwuZ2V0TW9kZWxDbGFzcygpLmNvbm5lY3Rpb24oKS5hZnRlckNvbW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgIGJyb2FkY2FzdEZyb250ZW5kTW9kZWxFdmVudChtb2RlbC5fZ2V0Q29uZmlndXJhdGlvbigpLCBtb2RlbE5hbWUsIHtcbiAgICAgICAgICBhY3Rpb246IFwiZGVzdHJveVwiLFxuICAgICAgICAgIGlkOiBtb2RlbC5pZCgpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBGYW5zIGEgbGlmZWN5Y2xlIGV2ZW50IG91dCB0byBhbGwgVjIgXCJmcm9udGVuZC1tb2RlbHNcIiBzdWJzY3JpYmVyc1xuICogd2hvc2UgYHBhcmFtcy5tb2RlbGAgbWF0Y2hlcy4gUmVjb3JkIGF0dHJpYnV0ZXMgZ28gdGhyb3VnaCB0aGVcbiAqIHRyYW5zcG9ydCBzZXJpYWxpemVyIHNvIERhdGUvdW5kZWZpbmVkL2V0Yy4gc3Vydml2ZSB0aGUgSlNPTiBob3AuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxOYW1lIC0gTW9kZWwgY2xhc3MgbmFtZS5cbiAqIEBwYXJhbSB7e2FjdGlvbjogXCJjcmVhdGVcIiB8IFwidXBkYXRlXCIgfCBcImRlc3Ryb3lcIiwgaWQ6ID8sIHJlY29yZD86IFJlY29yZDxzdHJpbmcsID8+fX0gZXZlbnQgLSBMaWZlY3ljbGUgZXZlbnQuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gYnJvYWRjYXN0RnJvbnRlbmRNb2RlbEV2ZW50KGNvbmZpZ3VyYXRpb24sIG1vZGVsTmFtZSwgZXZlbnQpIHtcbiAgY29uc3QgYm9keSA9IHtcbiAgICBhY3Rpb246IGV2ZW50LmFjdGlvbixcbiAgICBpZDogZXZlbnQuaWQsXG4gICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAuLi4oZXZlbnQucmVjb3JkID8ge3JlY29yZDogc2VyaWFsaXplRnJvbnRlbmRNb2RlbFRyYW5zcG9ydFZhbHVlKGV2ZW50LnJlY29yZCl9IDoge30pXG4gIH1cblxuICBjb25maWd1cmF0aW9uLmJyb2FkY2FzdFRvQ2hhbm5lbChGUk9OVEVORF9NT0RFTFNfQ0hBTk5FTF9OQU1FLCB7bW9kZWw6IG1vZGVsTmFtZX0sIGJvZHkpXG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/http-server/client/index.js"],"names":[],"mappings":"AAqCA;IAIE;;;;;;OAMG;IACH,2DAJG;QAAqB,WAAW,EAAxB,MAAM;QACyC,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;QAC1B,aAAa;KACrC,EAaA;IAtBD,mEAA2B;IAC3B,cAAiB;IAYf,eAA8B;IAC9B,oBAA8B;IAC9B,wDAAkC;IAClC,kCAAkC;IAElC;;iCAE6B;IAC7B,gBADU,aAAa,EAAE,CACD;IAG1B;;;;OAIG;IACH,iCAHW,MAAM,GACJ,IAAI,CAgBhB;IAED;;;;OAIG;IACH,iCAHW,MAAM,GACJ,IAAI,CAgBhB;IAED;;;;OAIG;IACH,wBAHW,KAAK,GACH,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/http-server/client/index.js"],"names":[],"mappings":"AAqCA;IAIE;;;;;;OAMG;IACH,2DAJG;QAAqB,WAAW,EAAxB,MAAM;QACyC,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;QAC1B,aAAa;KACrC,EAaA;IAtBD,mEAA2B;IAC3B,cAAiB;IAYf,eAA8B;IAC9B,oBAA8B;IAC9B,wDAAkC;IAClC,kCAAkC;IAElC;;iCAE6B;IAC7B,gBADU,aAAa,EAAE,CACD;IAG1B;;;;OAIG;IACH,iCAHW,MAAM,GACJ,IAAI,CAgBhB;IAED;;;;OAIG;IACH,iCAHW,MAAM,GACJ,IAAI,CAgBhB;IAED;;;;OAIG;IACH,wBAHW,KAAK,GACH,IAAI,CAehB;IAJC,oCAA+B;IAMjC,kCA+BC;IAED;;;;OAIG;IACH,cAHW,MAAM,GACJ,IAAI,CAgEhB;IAED;;;;OAIG;IACH,6BAHW,OAAO,cAAc,EAAE,OAAO,GAC5B,OAAO,CAOnB;IAED;;;OAGG;IACH,uBAFa,IAAI,CAmEhB;IArBC,+CAME;IAiBJ,wBAMC;IAED,kCA6BC;IAED;;;;OAIG;IACH,4BAHW,aAAa,GACX,OAAO,CAAC,IAAI,CAAC,CAuFzB;IAED;;;;OAIG;IACH,yBAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAmBzB;IAED;;;;OAIG;IACH,+BAHW,OAAO,cAAc,EAAE,OAAO,GAAG,OAAO,wBAAwB,EAAE,OAAO,GACvE,OAAO,CAenB;CACF;mBA3dkB,iBAAiB;0BAEV,qBAAqB;oBAD3B,cAAc;6BAEL,wBAAwB"}
|
|
@@ -3,8 +3,8 @@ import crypto from "crypto";
|
|
|
3
3
|
import fs from "node:fs/promises";
|
|
4
4
|
import { createReadStream } from "node:fs";
|
|
5
5
|
import { digg } from "diggerize";
|
|
6
|
+
import { ensureError } from "typanic";
|
|
6
7
|
import EventEmitter from "../../utils/event-emitter.js";
|
|
7
|
-
import ensureError from "../../utils/ensure-error.js";
|
|
8
8
|
import Logger from "../../logger.js";
|
|
9
9
|
import Request from "./request.js";
|
|
10
10
|
import RequestRunner from "./request-runner.js";
|
|
@@ -96,13 +96,9 @@ export default class VeoliciousHttpServerClient {
|
|
|
96
96
|
* @returns {void} - No return value.
|
|
97
97
|
*/
|
|
98
98
|
handleBadRequest(error) {
|
|
99
|
-
this.logger.warn(() => ["Failed to parse HTTP request", badRequestDetails(/**
|
|
100
|
-
* Narrows the runtime value to the documented type.
|
|
101
|
-
* @type {Error & {velociousContext?: Record<string, ?>}} */ (error))]);
|
|
99
|
+
this.logger.warn(() => ["Failed to parse HTTP request", badRequestDetails(/** @type {Error & {velociousContext?: Record<string, ?>}} */ (error))]);
|
|
102
100
|
if (this.currentRequest && "getRequestParser" in this.currentRequest) {
|
|
103
|
-
const httpRequest = /**
|
|
104
|
-
* Narrows the runtime value to the documented type.
|
|
105
|
-
* @type {import("./request.js").default} */ (this.currentRequest);
|
|
101
|
+
const httpRequest = /** @type {import("./request.js").default} */ (this.currentRequest);
|
|
106
102
|
httpRequest.getRequestParser().destroy();
|
|
107
103
|
}
|
|
108
104
|
this.currentRequest = undefined;
|
|
@@ -239,20 +235,12 @@ export default class VeoliciousHttpServerClient {
|
|
|
239
235
|
configuration: this.configuration,
|
|
240
236
|
request: this.currentRequest
|
|
241
237
|
});
|
|
242
|
-
const resolvedThenable = /**
|
|
243
|
-
* Narrows the runtime value to the documented type.
|
|
244
|
-
* @type {{then?: (...args: Array<?>) => ?}} */ (resolvedHandler);
|
|
238
|
+
const resolvedThenable = /** @type {{then?: (...args: Array<?>) => ?}} */ (resolvedHandler);
|
|
245
239
|
if (resolvedThenable?.then) {
|
|
246
|
-
messageHandlerPromise = /**
|
|
247
|
-
* Narrows the runtime value to the documented type.
|
|
248
|
-
* @type {Promise<import("../../configuration-types.js").WebsocketMessageHandler | void>} */
|
|
249
|
-
(resolvedHandler);
|
|
240
|
+
messageHandlerPromise = /** @type {Promise<import("../../configuration-types.js").WebsocketMessageHandler | void>} */ (resolvedHandler);
|
|
250
241
|
}
|
|
251
242
|
else if (resolvedHandler) {
|
|
252
|
-
messageHandler = /**
|
|
253
|
-
* Narrows the runtime value to the documented type.
|
|
254
|
-
* @type {import("../../configuration-types.js").WebsocketMessageHandler} */
|
|
255
|
-
(resolvedHandler);
|
|
243
|
+
messageHandler = /** @type {import("../../configuration-types.js").WebsocketMessageHandler} */ (resolvedHandler);
|
|
256
244
|
}
|
|
257
245
|
}
|
|
258
246
|
this.websocketSession = new WebsocketSession({
|
|
@@ -389,9 +377,7 @@ export default class VeoliciousHttpServerClient {
|
|
|
389
377
|
}
|
|
390
378
|
await requestRunner.logCompletedRequest();
|
|
391
379
|
if ("getRequestParser" in request) {
|
|
392
|
-
const httpRequest = /**
|
|
393
|
-
* Narrows the runtime value to the documented type.
|
|
394
|
-
* @type {import("./request.js").default} */ (request);
|
|
380
|
+
const httpRequest = /** @type {import("./request.js").default} */ (request);
|
|
395
381
|
httpRequest.getRequestParser().destroy();
|
|
396
382
|
}
|
|
397
383
|
}
|
|
@@ -448,4 +434,4 @@ export default class VeoliciousHttpServerClient {
|
|
|
448
434
|
function isNoBodyStatusCode(statusCode) {
|
|
449
435
|
return (statusCode >= 100 && statusCode < 200) || statusCode === 204 || statusCode === 304;
|
|
450
436
|
}
|
|
451
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvY2xpZW50L2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUE7QUFDM0IsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDakMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sU0FBUyxDQUFBO0FBQ3hDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxZQUFZLE1BQU0sOEJBQThCLENBQUE7QUFDdkQsT0FBTyxXQUFXLE1BQU0sNkJBQTZCLENBQUE7QUFDckQsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDcEMsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFBO0FBQ2xDLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sZ0JBQWdCLE1BQU0sd0JBQXdCLENBQUE7QUFFckQ7Ozs7R0FJRztBQUNILFNBQVMsb0JBQW9CLENBQUMsSUFBSTtJQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBRXRILE9BQU8sRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUMsQ0FBQTtBQUN2QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsaUJBQWlCLENBQUMsS0FBSztJQUM5QixPQUFPO1FBQ0wsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJO1FBQ3RCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztR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LEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzFFLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFTixJQUFJLFdBQVcsSUFBSSxXQUFXO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFDNUMsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUE7UUFFbkQsSUFBSSxXQUFXLElBQUksS0FBSyxJQUFJLGdCQUFnQixJQUFJLFlBQVk7WUFBRSxPQUFPLElBQUksQ0FBQTtRQUV6RSxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FDRjtBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsa0JBQWtCLENBQUMsVUFBVTtJQUNwQyxPQUFPLENBQUMsVUFBVSxJQUFJLEdBQUcsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksVUFBVSxLQUFLLEdBQUcsSUFBSSxVQUFVLEtBQUssR0FBRyxDQUFBO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IGNyeXB0byBmcm9tIFwiY3J5cHRvXCJcbmltcG9ydCBmcyBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiXG5pbXBvcnQge2NyZWF0ZVJlYWRTdHJlYW19IGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gXCIuLi8uLi91dGlscy9ldmVudC1lbWl0dGVyLmpzXCJcbmltcG9ydCBlbnN1cmVFcnJvciBmcm9tIFwiLi4vLi4vdXRpbHMvZW5zdXJlLWVycm9yLmpzXCJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4uLy4uL2xvZ2dlci5qc1wiXG5pbXBvcnQgUmVxdWVzdCBmcm9tIFwiLi9yZXF1ZXN0LmpzXCJcbmltcG9ydCBSZXF1ZXN0UnVubmVyIGZyb20gXCIuL3JlcXVlc3QtcnVubmVyLmpzXCJcbmltcG9ydCBXZWJzb2NrZXRTZXNzaW9uIGZyb20gXCIuL3dlYnNvY2tldC1zZXNzaW9uLmpzXCJcblxuLyoqXG4gKiBSdW5zIHN1bW1hcml6ZSByZXF1ZXN0IGRhdGEuXG4gKiBAcGFyYW0ge0J1ZmZlcn0gZGF0YSAtIEluY29taW5nIHJlcXVlc3QgZGF0YS5cbiAqIEByZXR1cm5zIHt7bGVuZ3RoOiBudW1iZXIsIHByZXZpZXc6IHN0cmluZ319IC0gUmVxdWVzdCBkYXRhIHN1bW1hcnkuXG4gKi9cbmZ1bmN0aW9uIHN1bW1hcml6ZVJlcXVlc3REYXRhKGRhdGEpIHtcbiAgY29uc3QgcHJldmlldyA9IGRhdGEudG9TdHJpbmcoXCJsYXRpbjFcIiwgMCwgTWF0aC5taW4oZGF0YS5sZW5ndGgsIDE2MCkpLnJlcGxhY2VBbGwoXCJcXHJcIiwgXCJcXFxcclwiKS5yZXBsYWNlQWxsKFwiXFxuXCIsIFwiXFxcXG5cIilcblxuICByZXR1cm4ge2xlbmd0aDogZGF0YS5sZW5ndGgsIHByZXZpZXd9XG59XG5cbi8qKlxuICogUnVucyBiYWQgcmVxdWVzdCBkZXRhaWxzLlxuICogQHBhcmFtIHtFcnJvciAmIHt2ZWxvY2lvdXNDb250ZXh0PzogUmVjb3JkPHN0cmluZywgPz59fSBlcnJvciAtIEVycm9yIGluc3RhbmNlLlxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsID8+fSAtIFNhZmUgYmFkLXJlcXVlc3QgZGV0YWlscyBmb3IgbG9ncy5cbiAqL1xuZnVuY3Rpb24gYmFkUmVxdWVzdERldGFpbHMoZXJyb3IpIHtcbiAgcmV0dXJuIHtcbiAgICBlcnJvckNsYXNzOiBlcnJvci5uYW1lLFxuICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgdmVsb2Npb3VzQ29udGV4dDogZXJyb3IudmVsb2Npb3VzQ29udGV4dFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlb2xpY2lvdXNIdHRwU2VydmVyQ2xpZW50IHtcbiAgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIHN0YXRlID0gXCJpbml0aWFsXCJcblxuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuY2xpZW50Q291bnQgLSBDbGllbnQgY291bnQuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MucmVtb3RlQWRkcmVzc10gLSBSZW1vdGUgYWRkcmVzcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjbGllbnRDb3VudCwgY29uZmlndXJhdGlvbiwgcmVtb3RlQWRkcmVzc30pIHtcbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24pIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbmZpZ3VyYXRpb24gZ2l2ZW5cIilcblxuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcih0aGlzKVxuICAgIHRoaXMuY2xpZW50Q291bnQgPSBjbGllbnRDb3VudFxuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLnJlbW90ZUFkZHJlc3MgPSByZW1vdGVBZGRyZXNzXG5cbiAgICAvKipcbiAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICogQHR5cGUge1JlcXVlc3RSdW5uZXJbXX0gKi9cbiAgICB0aGlzLnJlcXVlc3RSdW5uZXJzID0gW11cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNlbmQgYmFkIHVwZ3JhZGUgcmVzcG9uc2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gTWVzc2FnZSB0ZXh0LlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBfc2VuZEJhZFVwZ3JhZGVSZXNwb25zZShtZXNzYWdlKSB7XG4gICAgY29uc3QgaHR0cFZlcnNpb24gPSB0aGlzLmN1cnJlbnRSZXF1ZXN0Py5odHRwVmVyc2lvbigpIHx8IFwiMS4xXCJcbiAgICBjb25zdCBib2R5ID0gYCR7bWVzc2FnZX1cXG5gXG4gICAgY29uc3QgaGVhZGVycyA9IFtcbiAgICAgIGBIVFRQLyR7aHR0cFZlcnNpb259IDQwMCBCYWQgUmVxdWVzdGAsXG4gICAgICBcIkNvbm5lY3Rpb246IENsb3NlXCIsXG4gICAgICBcIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFwiLFxuICAgICAgYENvbnRlbnQtTGVuZ3RoOiAke0J1ZmZlci5ieXRlTGVuZ3RoKGJvZHksIFwidXRmOFwiKX1gLFxuICAgICAgXCJcIixcbiAgICAgIGJvZHlcbiAgICBdLmpvaW4oXCJcXHJcXG5cIilcblxuICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJvdXRwdXRcIiwgaGVhZGVycylcbiAgICB0aGlzLmV2ZW50cy5lbWl0KFwiY2xvc2VcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNlbmQgYmFkIHJlcXVlc3QgcmVzcG9uc2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gUmVzcG9uc2UgbWVzc2FnZS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgX3NlbmRCYWRSZXF1ZXN0UmVzcG9uc2UobWVzc2FnZSkge1xuICAgIGNvbnN0IGh0dHBWZXJzaW9uID0gdGhpcy5jdXJyZW50UmVxdWVzdD8uaHR0cFZlcnNpb24oKSB8fCBcIjEuMVwiXG4gICAgY29uc3QgYm9keSA9IGAke21lc3NhZ2V9XFxuYFxuICAgIGNvbnN0IGhlYWRlcnMgPSBbXG4gICAgICBgSFRUUC8ke2h0dHBWZXJzaW9ufSA0MDAgQmFkIFJlcXVlc3RgLFxuICAgICAgXCJDb25uZWN0aW9uOiBDbG9zZVwiLFxuICAgICAgXCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcIixcbiAgICAgIGBDb250ZW50LUxlbmd0aDogJHtCdWZmZXIuYnl0ZUxlbmd0aChib2R5LCBcInV0ZjhcIil9YCxcbiAgICAgIFwiXCIsXG4gICAgICBib2R5XG4gICAgXS5qb2luKFwiXFxyXFxuXCIpXG5cbiAgICB0aGlzLmV2ZW50cy5lbWl0KFwib3V0cHV0XCIsIGhlYWRlcnMpXG4gICAgdGhpcy5ldmVudHMuZW1pdChcImNsb3NlXCIpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBoYW5kbGUgYmFkIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIC0gRXJyb3IgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGhhbmRsZUJhZFJlcXVlc3QoZXJyb3IpIHtcbiAgICB0aGlzLmxvZ2dlci53YXJuKCgpID0+IFtcIkZhaWxlZCB0byBwYXJzZSBIVFRQIHJlcXVlc3RcIiwgYmFkUmVxdWVzdERldGFpbHMoLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAdHlwZSB7RXJyb3IgJiB7dmVsb2Npb3VzQ29udGV4dD86IFJlY29yZDxzdHJpbmcsID8+fX0gKi8gKGVycm9yKSldKVxuXG4gICAgaWYgKHRoaXMuY3VycmVudFJlcXVlc3QgJiYgXCJnZXRSZXF1ZXN0UGFyc2VyXCIgaW4gdGhpcy5jdXJyZW50UmVxdWVzdCkge1xuICAgICAgY29uc3QgaHR0cFJlcXVlc3QgPSAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAdHlwZSB7aW1wb3J0KFwiLi9yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9ICovICh0aGlzLmN1cnJlbnRSZXF1ZXN0KVxuXG4gICAgICBodHRwUmVxdWVzdC5nZXRSZXF1ZXN0UGFyc2VyKCkuZGVzdHJveSgpXG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdCA9IHVuZGVmaW5lZFxuICAgIHRoaXMuc3RhdGUgPSBcImluaXRpYWxcIlxuXG4gICAgdGhpcy5fc2VuZEJhZFJlcXVlc3RSZXNwb25zZShcIkJhZCBSZXF1ZXN0XCIpXG4gIH1cblxuICBleGVjdXRlQ3VycmVudFJlcXVlc3QgPSAoKSA9PiB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXCJleGVjdXRlQ3VycmVudFJlcXVlc3RcIilcblxuICAgIGNvbnN0IGN1cnJlbnRSZXF1ZXN0ID0gdGhpcy5jdXJyZW50UmVxdWVzdFxuXG4gICAgaWYgKCFjdXJyZW50UmVxdWVzdCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gY3VycmVudCByZXF1ZXN0XCIpXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wiZXhlY3V0ZUN1cnJlbnRSZXF1ZXN0IHJlcXVlc3RcIiwge1xuICAgICAgY2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsXG4gICAgICBodHRwTWV0aG9kOiBjdXJyZW50UmVxdWVzdC5odHRwTWV0aG9kKCksXG4gICAgICBodHRwVmVyc2lvbjogY3VycmVudFJlcXVlc3QuaHR0cFZlcnNpb24oKSxcbiAgICAgIHBhdGg6IGN1cnJlbnRSZXF1ZXN0LnBhdGgoKSxcbiAgICAgIHF1ZXVlTGVuZ3RoOiB0aGlzLnJlcXVlc3RSdW5uZXJzLmxlbmd0aFxuICAgIH1dKVxuXG4gICAgaWYgKHRoaXMuX2lzV2Vic29ja2V0VXBncmFkZShjdXJyZW50UmVxdWVzdCkpIHtcbiAgICAgIHRoaXMuX3VwZ3JhZGVUb1dlYnNvY2tldCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBXZSBhcmUgZG9uZSBwYXJzaW5nIHRoZSBnaXZlbiByZXF1ZXN0IGFuZCBjYW4gdGhlb3JldGljYWxseSBzdGFydCBwYXJzaW5nIGEgbmV3IG9uZSwgYmVmb3JlIHRoZSBjdXJyZW50IHJlcXVlc3QgaXMgZG9uZSAtIHNvIHJlc2V0IHRoZSBzdGF0ZS5cbiAgICB0aGlzLnN0YXRlID0gXCJpbml0aWFsXCJcblxuICAgIGNvbnN0IHJlcXVlc3RSdW5uZXIgPSBuZXcgUmVxdWVzdFJ1bm5lcih7XG4gICAgICBjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb24sXG4gICAgICByZXF1ZXN0OiBjdXJyZW50UmVxdWVzdFxuICAgIH0pXG5cbiAgICB0aGlzLnJlcXVlc3RSdW5uZXJzLnB1c2gocmVxdWVzdFJ1bm5lcilcblxuICAgIHJlcXVlc3RSdW5uZXIuZXZlbnRzLm9uKFwiZG9uZVwiLCB0aGlzLnJlcXVlc3REb25lKVxuICAgIHJlcXVlc3RSdW5uZXIucnVuKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIG9uIHdyaXRlLlxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gZGF0YSAtIERhdGEgcGF5bG9hZC5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Xcml0ZShkYXRhKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wib25Xcml0ZSBzdGFydFwiLCB7XG4gICAgICBjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCxcbiAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgLi4uc3VtbWFyaXplUmVxdWVzdERhdGEoZGF0YSlcbiAgICB9XSlcblxuICAgIGlmICh0aGlzLndlYnNvY2tldFNlc3Npb24pIHtcbiAgICAgIHRoaXMud2Vic29ja2V0U2Vzc2lvbi5vbkRhdGEoZGF0YSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvKipcbiAgICAgICAqIFJlbWFpbmluZy5cbiAgICAgICAqIEB0eXBlIHtCdWZmZXIgfCB1bmRlZmluZWR9ICovXG4gICAgICBsZXQgcmVtYWluaW5nID0gZGF0YVxuXG4gICAgICB3aGlsZSAocmVtYWluaW5nKSB7XG4gICAgICAgIGlmIChyZW1haW5pbmcubGVuZ3RoIDw9IDApIGJyZWFrXG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGUgPT0gXCJpbml0aWFsXCIpIHtcbiAgICAgICAgICBjb25zdCByZW1haW5pbmdMZW5ndGggPSByZW1haW5pbmcubGVuZ3RoXG5cbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJvbldyaXRlIGNyZWF0aW5nIHJlcXVlc3QgcGFyc2VyXCIsIHtjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCwgcmVtYWluaW5nTGVuZ3RofV0pXG4gICAgICAgICAgdGhpcy5jdXJyZW50UmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHtjbGllbnQ6IHRoaXMsIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbn0pXG4gICAgICAgICAgdGhpcy5jdXJyZW50UmVxdWVzdC5yZXF1ZXN0UGFyc2VyLmV2ZW50cy5vbihcImRvbmVcIiwgdGhpcy5leGVjdXRlQ3VycmVudFJlcXVlc3QpXG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IFwicmVxdWVzdFN0YXJ0ZWRcIlxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUgIT0gXCJyZXF1ZXN0U3RhcnRlZFwiKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHN0YXRlIGZvciBjbGllbnQ6ICR7dGhpcy5zdGF0ZX1gKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRSZXF1ZXN0KSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjdXJyZW50IHJlcXVlc3RcIilcblxuICAgICAgICByZW1haW5pbmcgPSB0aGlzLmN1cnJlbnRSZXF1ZXN0LmZlZWQocmVtYWluaW5nKVxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJvbldyaXRlIGZlZCBwYXJzZXJcIiwge1xuICAgICAgICAgIGNsaWVudENvdW50OiB0aGlzLmNsaWVudENvdW50LFxuICAgICAgICAgIGhhc1JlbWFpbmluZzogQm9vbGVhbihyZW1haW5pbmc/Lmxlbmd0aCksXG4gICAgICAgICAgcmVtYWluaW5nTGVuZ3RoOiByZW1haW5pbmc/Lmxlbmd0aCB8fCAwLFxuICAgICAgICAgIHBhcnNlckNvbXBsZXRlZDogdGhpcy5jdXJyZW50UmVxdWVzdD8uZ2V0UmVxdWVzdFBhcnNlcigpLmhhc0NvbXBsZXRlZFxuICAgICAgICB9XSlcblxuICAgICAgICBpZiAocmVtYWluaW5nICYmIHJlbWFpbmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdFBhcnNlciA9IHRoaXMuY3VycmVudFJlcXVlc3QuZ2V0UmVxdWVzdFBhcnNlcigpXG5cbiAgICAgICAgICBpZiAoIXJlcXVlc3RQYXJzZXIuaGFzQ29tcGxldGVkKSB7XG4gICAgICAgICAgICBjb25zdCByZW1haW5pbmdMZW5ndGggPSByZW1haW5pbmcubGVuZ3RoXG5cbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCgpID0+IFtcIm9uV3JpdGUgd2FpdGluZyBmb3IgbW9yZSBkYXRhXCIsIHtjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCwgcmVtYWluaW5nTGVuZ3RofV0pXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuc3RhdGUgPSBcImluaXRpYWxcIlxuICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ0xlbmd0aCA9IHJlbWFpbmluZy5sZW5ndGhcblxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCgpID0+IFtcIm9uV3JpdGUgcGFyc2VyIGNvbXBsZXRlZCB3aXRoIHJlbWFpbmluZyBieXRlc1wiLCB7Y2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsIHJlbWFpbmluZ0xlbmd0aH1dKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJvbldyaXRlIGVuZFwiLCB7Y2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsIHN0YXRlOiB0aGlzLnN0YXRlLCBxdWV1ZUxlbmd0aDogdGhpcy5yZXF1ZXN0UnVubmVycy5sZW5ndGh9XSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5oYW5kbGVCYWRSZXF1ZXN0KGVuc3VyZUVycm9yKGVycm9yKSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBpcyB3ZWJzb2NrZXQgdXBncmFkZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3JlcXVlc3QuanNcIikuZGVmYXVsdH0gcmVxdWVzdCAtIFJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHdlYnNvY2tldCB1cGdyYWRlLlxuICAgKi9cbiAgX2lzV2Vic29ja2V0VXBncmFkZShyZXF1ZXN0KSB7XG4gICAgY29uc3QgdXBncmFkZUhlYWRlciA9IHJlcXVlc3QuaGVhZGVyKFwidXBncmFkZVwiKT8udG9Mb3dlckNhc2UoKVxuICAgIGNvbnN0IGNvbm5lY3Rpb25IZWFkZXIgPSByZXF1ZXN0LmhlYWRlcihcImNvbm5lY3Rpb25cIik/LnRvTG93ZXJDYXNlKClcblxuICAgIHJldHVybiBCb29sZWFuKHVwZ3JhZGVIZWFkZXIgPT0gXCJ3ZWJzb2NrZXRcIiAmJiBjb25uZWN0aW9uSGVhZGVyPy5pbmNsdWRlcyhcInVwZ3JhZGVcIikpXG4gIH1cblxuICAvKipcbiAgICogUnVucyB1cGdyYWRlIHRvIHdlYnNvY2tldC5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgX3VwZ3JhZGVUb1dlYnNvY2tldCgpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudFJlcXVlc3QpIHRocm93IG5ldyBFcnJvcihcIk5vIGN1cnJlbnQgcmVxdWVzdFwiKVxuXG4gICAgY29uc3Qgc2VjV2Vic29ja2V0S2V5ID0gdGhpcy5jdXJyZW50UmVxdWVzdC5oZWFkZXIoXCJzZWMtd2Vic29ja2V0LWtleVwiKVxuXG4gICAgaWYgKCFzZWNXZWJzb2NrZXRLZXkpIHtcbiAgICAgIHRoaXMuX3NlbmRCYWRVcGdyYWRlUmVzcG9uc2UoXCJNaXNzaW5nIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlclwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgd2Vic29ja2V0QWNjZXB0S2V5ID0gY3J5cHRvLmNyZWF0ZUhhc2goXCJzaGExXCIpXG4gICAgICAudXBkYXRlKGAke3NlY1dlYnNvY2tldEtleX0yNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTFgLCBcImJpbmFyeVwiKVxuICAgICAgLmRpZ2VzdChcImJhc2U2NFwiKVxuICAgIGNvbnN0IGh0dHBWZXJzaW9uID0gdGhpcy5jdXJyZW50UmVxdWVzdC5odHRwVmVyc2lvbigpIHx8IFwiMS4xXCJcbiAgICBjb25zdCByZXNwb25zZUxpbmVzID0gW1xuICAgICAgYEhUVFAvJHtodHRwVmVyc2lvbn0gMTAxIFN3aXRjaGluZyBQcm90b2NvbHNgLFxuICAgICAgXCJVcGdyYWRlOiB3ZWJzb2NrZXRcIixcbiAgICAgIFwiQ29ubmVjdGlvbjogVXBncmFkZVwiLFxuICAgICAgYFNlYy1XZWJTb2NrZXQtQWNjZXB0OiAke3dlYnNvY2tldEFjY2VwdEtleX1gLFxuICAgICAgXCJcIixcbiAgICAgIFwiXCJcbiAgICBdXG4gICAgY29uc3QgcmVzcG9uc2UgPSByZXNwb25zZUxpbmVzLmpvaW4oXCJcXHJcXG5cIilcblxuICAgIGNvbnN0IG1lc3NhZ2VIYW5kbGVyUmVzb2x2ZXIgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0V2Vic29ja2V0TWVzc2FnZUhhbmRsZXJSZXNvbHZlcj8uKClcbiAgICBsZXQgbWVzc2FnZUhhbmRsZXJcbiAgICBsZXQgbWVzc2FnZUhhbmRsZXJQcm9taXNlXG5cbiAgICBpZiAobWVzc2FnZUhhbmRsZXJSZXNvbHZlcikge1xuICAgICAgY29uc3QgcmVzb2x2ZWRIYW5kbGVyID0gbWVzc2FnZUhhbmRsZXJSZXNvbHZlcih7XG4gICAgICAgIGNsaWVudDogdGhpcyxcbiAgICAgICAgY29uZmlndXJhdGlvbjogdGhpcy5jb25maWd1cmF0aW9uLFxuICAgICAgICByZXF1ZXN0OiB0aGlzLmN1cnJlbnRSZXF1ZXN0XG4gICAgICB9KVxuXG4gICAgICBjb25zdCByZXNvbHZlZFRoZW5hYmxlID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEB0eXBlIHt7dGhlbj86ICguLi5hcmdzOiBBcnJheTw/PikgPT4gP319ICovIChyZXNvbHZlZEhhbmRsZXIpXG5cbiAgICAgIGlmIChyZXNvbHZlZFRoZW5hYmxlPy50aGVuKSB7XG4gICAgICAgIG1lc3NhZ2VIYW5kbGVyUHJvbWlzZSA9IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEB0eXBlIHtQcm9taXNlPGltcG9ydChcIi4uLy4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuV2Vic29ja2V0TWVzc2FnZUhhbmRsZXIgfCB2b2lkPn0gKi8gKHJlc29sdmVkSGFuZGxlcilcbiAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZWRIYW5kbGVyKSB7XG4gICAgICAgIG1lc3NhZ2VIYW5kbGVyID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAqIEB0eXBlIHtpbXBvcnQoXCIuLi8uLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLldlYnNvY2tldE1lc3NhZ2VIYW5kbGVyfSAqLyAocmVzb2x2ZWRIYW5kbGVyKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMud2Vic29ja2V0U2Vzc2lvbiA9IG5ldyBXZWJzb2NrZXRTZXNzaW9uKHtcbiAgICAgIGNsaWVudDogdGhpcyxcbiAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgIHVwZ3JhZGVSZXF1ZXN0OiB0aGlzLmN1cnJlbnRSZXF1ZXN0LFxuICAgICAgbWVzc2FnZUhhbmRsZXI6IG1lc3NhZ2VIYW5kbGVyLFxuICAgICAgbWVzc2FnZUhhbmRsZXJQcm9taXNlOiBtZXNzYWdlSGFuZGxlclByb21pc2VcbiAgICB9KVxuICAgIHRoaXMud2Vic29ja2V0U2Vzc2lvbi5ldmVudHMub24oXCJjbG9zZVwiLCAoKSA9PiB7XG4gICAgICAvLyBQYXVzZWQgc2Vzc2lvbnMgc3Vydml2ZSB0aGUgc29ja2V0IGNsb3NlOyBkb24ndCBkZXN0cm95KCkuXG4gICAgICAvLyBUaGUgZ3JhY2UtZXhwaXJ5IHBhdGggKF9maW5hbGl6ZUdyYWNlRXhwaXJ5KSB3aWxsIGRlc3Ryb3lcbiAgICAgIC8vIHRoZW0gcGVybWFuZW50bHkgaWYgcmVzdW1lIGRvZXNuJ3QgaGFwcGVuIGluIHRpbWUuXG4gICAgICBpZiAoIXRoaXMud2Vic29ja2V0U2Vzc2lvbj8uaXNQYXVzZWQoKSkge1xuICAgICAgICB0aGlzLndlYnNvY2tldFNlc3Npb24/LmRlc3Ryb3koKVxuICAgICAgfVxuICAgICAgdGhpcy53ZWJzb2NrZXRTZXNzaW9uID0gdW5kZWZpbmVkXG4gICAgICB0aGlzLmV2ZW50cy5lbWl0KFwiY2xvc2VcIilcbiAgICB9KVxuICAgIHRoaXMuc3RhdGUgPSBcIndlYnNvY2tldFwiXG4gICAgdGhpcy5ldmVudHMuZW1pdChcIm91dHB1dFwiLCByZXNwb25zZSlcbiAgICB2b2lkIHRoaXMud2Vic29ja2V0U2Vzc2lvbi5pbml0aWFsaXplQ2hhbm5lbCgpXG4gICAgdGhpcy53ZWJzb2NrZXRTZXNzaW9uLnNlbmRTZXNzaW9uRXN0YWJsaXNoZWQoKVxuICB9XG5cbiAgcmVxdWVzdERvbmUgPSAoKSA9PiB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wicmVxdWVzdERvbmVcIiwge2NsaWVudENvdW50OiB0aGlzLmNsaWVudENvdW50LCBxdWV1ZUxlbmd0aDogdGhpcy5yZXF1ZXN0UnVubmVycy5sZW5ndGh9XSlcbiAgICB2b2lkIHRoaXMuc2VuZERvbmVSZXF1ZXN0cygpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcIkZhaWxlZCB3aGlsZSBzZW5kaW5nIGRvbmUgcmVxdWVzdHNcIiwgZXJyb3IpXG4gICAgICB0aGlzLmV2ZW50cy5lbWl0KFwiY2xvc2VcIilcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgc2VuZERvbmVSZXF1ZXN0cygpIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgcmVxdWVzdFJ1bm5lciA9IHRoaXMucmVxdWVzdFJ1bm5lcnNbMF1cbiAgICAgIGNvbnN0IHJlcXVlc3QgPSByZXF1ZXN0UnVubmVyPy5nZXRSZXF1ZXN0KClcblxuICAgICAgaWYgKHJlcXVlc3RSdW5uZXI/LmdldFN0YXRlKCkgPT0gXCJkb25lXCIpIHtcbiAgICAgICAgY29uc3QgaHR0cFZlcnNpb24gPSByZXF1ZXN0Lmh0dHBWZXJzaW9uKClcbiAgICAgICAgY29uc3QgY29ubmVjdGlvbkhlYWRlciA9IHJlcXVlc3QuaGVhZGVyKFwiY29ubmVjdGlvblwiKT8udG9Mb3dlckNhc2UoKT8udHJpbSgpXG4gICAgICAgIGNvbnN0IHNob3VsZENsb3NlQ29ubmVjdGlvbiA9IHRoaXMuc2hvdWxkQ2xvc2VDb25uZWN0aW9uKHJlcXVlc3QpXG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0UnVubmVycy5zaGlmdCgpXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCgpID0+IFtcInNlbmREb25lUmVxdWVzdHMgc2hpZnRlZCBxdWV1ZVwiLCB7Y2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsIHF1ZXVlTGVuZ3RoOiB0aGlzLnJlcXVlc3RSdW5uZXJzLmxlbmd0aH1dKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2VuZFJlc3BvbnNlKHJlcXVlc3RSdW5uZXIpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoKCkgPT4gW2BWZWxvY2lvdXMgY2xpZW50ICR7dGhpcy5jbGllbnRDb3VudH0gZmFpbGVkIHdoaWxlIHNlbmRpbmcgcmVzcG9uc2VgLCBlcnJvcl0pXG4gICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jdXJyZW50UmVxdWVzdCA9PT0gcmVxdWVzdCAmJiB0aGlzLnN0YXRlID09PSBcImluaXRpYWxcIikgdGhpcy5jdXJyZW50UmVxdWVzdCA9IHVuZGVmaW5lZFxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJzZW5kRG9uZVJlcXVlc3RzXCIsIHtjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCwgY29ubmVjdGlvbkhlYWRlciwgaHR0cFZlcnNpb259XSlcblxuICAgICAgICBpZiAoc2hvdWxkQ2xvc2VDb25uZWN0aW9uKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW2BDbG9zaW5nIHRoZSBjb25uZWN0aW9uIGJlY2F1c2UgJHtodHRwVmVyc2lvbn0gYW5kIGNvbm5lY3Rpb24gaGVhZGVyICR7Y29ubmVjdGlvbkhlYWRlcn1gLCB7Y2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnR9XSlcbiAgICAgICAgICB0aGlzLmV2ZW50cy5lbWl0KFwiY2xvc2VcIilcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBzZW5kIHJlc3BvbnNlLlxuICAgKiBAcGFyYW0ge1JlcXVlc3RSdW5uZXJ9IHJlcXVlc3RSdW5uZXIgLSBSZXF1ZXN0IHJ1bm5lci5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIHNlbmRSZXNwb25zZShyZXF1ZXN0UnVubmVyKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBkaWdnKHJlcXVlc3RSdW5uZXIsIFwicmVzcG9uc2VcIilcbiAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWVzdFJ1bm5lci5nZXRSZXF1ZXN0KClcbiAgICBjb25zdCBmaWxlUGF0aCA9IHJlc3BvbnNlLmdldEZpbGVQYXRoKClcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKVxuICAgIGNvbnN0IGNvbm5lY3Rpb25IZWFkZXIgPSByZXF1ZXN0LmhlYWRlcihcImNvbm5lY3Rpb25cIik/LnRvTG93ZXJDYXNlKCk/LnRyaW0oKVxuICAgIGNvbnN0IGh0dHBWZXJzaW9uID0gcmVxdWVzdC5odHRwVmVyc2lvbigpXG4gICAgY29uc3Qgc2hvdWxkQ2xvc2VDb25uZWN0aW9uID0gdGhpcy5zaG91bGRDbG9zZUNvbm5lY3Rpb24ocmVxdWVzdClcbiAgICBjb25zdCBoYXNGaWxlUGF0aCA9IHR5cGVvZiBmaWxlUGF0aCA9PT0gXCJzdHJpbmdcIiAmJiBmaWxlUGF0aC5sZW5ndGggPiAwXG4gICAgY29uc3QgYm9keSA9IGhhc0ZpbGVQYXRoID8gbnVsbCA6IHJlc3BvbnNlLmdldEJvZHkoKVxuICAgIGNvbnN0IGJvZHlJc1N0cmluZyA9IHR5cGVvZiBib2R5ID09PSBcInN0cmluZ1wiXG4gICAgY29uc3QgYm9keUlzQmluYXJ5ID0gYm9keSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXlcblxuICAgIGlmICghaGFzRmlsZVBhdGggJiYgIWJvZHlJc1N0cmluZyAmJiAhYm9keUlzQmluYXJ5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHJlc3BvbnNlIGJvZHkgdG8gYmUgYSBzdHJpbmcgb3IgVWludDhBcnJheSwgZ290ICR7dHlwZW9mIGJvZHl9YClcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcInNlbmRSZXNwb25zZVwiLCB7Y2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsIGNvbm5lY3Rpb25IZWFkZXIsIGh0dHBWZXJzaW9ufSlcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJzZW5kUmVzcG9uc2UgcGF5bG9hZFwiLCB7XG4gICAgICBjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCxcbiAgICAgIGhhc0ZpbGVQYXRoLFxuICAgICAgZmlsZVBhdGgsXG4gICAgICBib2R5SXNCaW5hcnksXG4gICAgICBib2R5SXNTdHJpbmdcbiAgICB9XSlcblxuICAgIGlmIChzaG91bGRDbG9zZUNvbm5lY3Rpb24pIHtcbiAgICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIkNvbm5lY3Rpb25cIiwgXCJDbG9zZVwiKVxuICAgIH0gZWxzZSBpZiAoaHR0cFZlcnNpb24gPT0gXCIxLjBcIiAmJiBjb25uZWN0aW9uSGVhZGVyID09IFwia2VlcC1hbGl2ZVwiKSB7XG4gICAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJDb25uZWN0aW9uXCIsIFwiS2VlcC1BbGl2ZVwiKVxuICAgIH1cblxuICAgIC8vIFBlciBSRkMgNzIzMCDCpzMuMy4zLCByZXNwb25zZXMgd2l0aCBzdGF0dXMgY29kZXMgMXh4LCAyMDQsIGFuZCAzMDRcbiAgICAvLyBNVVNUIE5PVCBjYXJyeSBhIG1lc3NhZ2UgYm9keSBhbmQgTVVTVCBOT1QgaW5jbHVkZSBDb250ZW50LUxlbmd0aFxuICAgIC8vICh3aXRoIGEgbmFycm93IDMwNCBleGNlcHRpb24gd2UgZG9uJ3QgbGVhbiBvbikuIFNlbmRpbmcgb25lIHdvdWxkXG4gICAgLy8gZGVzeW5jaHJvbml6ZSBrZWVwLWFsaXZlIGNsaWVudHMgd2FpdGluZyBmb3IgYnl0ZXMgdGhhdCBuZXZlclxuICAgIC8vIGFycml2ZSDigJQgZHJvcCB0aGUgYm9keSBlbnRpcmVseSBmb3IgdGhvc2UgY29kZXMuXG4gICAgY29uc3QgaXNCb2R5bGVzc1N0YXR1cyA9IGlzTm9Cb2R5U3RhdHVzQ29kZShyZXNwb25zZS5nZXRTdGF0dXNDb2RlKCkpXG5cbiAgICBpZiAoIWlzQm9keWxlc3NTdGF0dXMpIHtcbiAgICAgIGxldCBjb250ZW50TGVuZ3RoXG5cbiAgICAgIGlmIChoYXNGaWxlUGF0aCkge1xuICAgICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGZzLnN0YXQoZmlsZVBhdGgpXG4gICAgICAgIGNvbnRlbnRMZW5ndGggPSBzdGF0cy5zaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZW50TGVuZ3RoID0gYm9keUlzU3RyaW5nID8gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGJvZHkpLmxlbmd0aCA6IGJvZHkuYnl0ZUxlbmd0aFxuICAgICAgfVxuXG4gICAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJDb250ZW50LUxlbmd0aFwiLCBjb250ZW50TGVuZ3RoKVxuICAgIH1cblxuICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIkRhdGVcIiwgZGF0ZS50b1VUQ1N0cmluZygpKVxuICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIlNlcnZlclwiLCBcIlZlbG9jaW91c1wiKVxuXG4gICAgbGV0IGhlYWRlcnMgPSBcIlwiXG5cbiAgICBoZWFkZXJzICs9IGBIVFRQLyR7cmVxdWVzdC5odHRwVmVyc2lvbigpfSAke3Jlc3BvbnNlLmdldFN0YXR1c0NvZGUoKX0gJHtyZXNwb25zZS5nZXRTdGF0dXNNZXNzYWdlKCl9XFxyXFxuYFxuXG4gICAgZm9yIChjb25zdCBoZWFkZXJLZXkgaW4gcmVzcG9uc2UuaGVhZGVycykge1xuICAgICAgZm9yIChjb25zdCBoZWFkZXJWYWx1ZSBvZiByZXNwb25zZS5oZWFkZXJzW2hlYWRlcktleV0pIHtcbiAgICAgICAgaGVhZGVycyArPSBgJHtoZWFkZXJLZXl9OiAke2hlYWRlclZhbHVlfVxcclxcbmBcbiAgICAgIH1cbiAgICB9XG5cbiAgICBoZWFkZXJzICs9IFwiXFxyXFxuXCJcblxuICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJvdXRwdXRcIiwgaGVhZGVycylcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJzZW5kUmVzcG9uc2UgaGVhZGVycyBlbWl0dGVkXCIsIHtjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCwgaGVhZGVyc0xlbmd0aDogaGVhZGVycy5sZW5ndGh9XSlcblxuICAgIGlmIChpc0JvZHlsZXNzU3RhdHVzKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJzZW5kUmVzcG9uc2UgYm9keSBzdXBwcmVzc2VkIGZvciBuby1ib2R5IHN0YXR1c1wiLCB7Y2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsIHN0YXR1c0NvZGU6IHJlc3BvbnNlLmdldFN0YXR1c0NvZGUoKX1dKVxuICAgIH0gZWxzZSBpZiAoaGFzRmlsZVBhdGgpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2VuZEZpbGVPdXRwdXQoZmlsZVBhdGgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJvdXRwdXRcIiwgYm9keSlcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCgpID0+IFtcInNlbmRSZXNwb25zZSBib2R5IGVtaXR0ZWRcIiwge2NsaWVudENvdW50OiB0aGlzLmNsaWVudENvdW50LCBib2R5TGVuZ3RoOiBib2R5SXNTdHJpbmcgPyBib2R5Lmxlbmd0aCA6IGJvZHkuYnl0ZUxlbmd0aH1dKVxuICAgIH1cblxuICAgIGF3YWl0IHJlcXVlc3RSdW5uZXIubG9nQ29tcGxldGVkUmVxdWVzdCgpXG5cbiAgICBpZiAoXCJnZXRSZXF1ZXN0UGFyc2VyXCIgaW4gcmVxdWVzdCkge1xuICAgICAgY29uc3QgaHR0cFJlcXVlc3QgPSAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAdHlwZSB7aW1wb3J0KFwiLi9yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9ICovIChyZXF1ZXN0KVxuICAgICAgaHR0cFJlcXVlc3QuZ2V0UmVxdWVzdFBhcnNlcigpLmRlc3Ryb3koKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNlbmQgZmlsZSBvdXRwdXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlUGF0aCAtIEZpbGUgcGF0aC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIHNlbmRGaWxlT3V0cHV0KGZpbGVQYXRoKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wic2VuZEZpbGVPdXRwdXQgc3RhcnRcIiwge2NsaWVudENvdW50OiB0aGlzLmNsaWVudENvdW50LCBmaWxlUGF0aH1dKVxuICAgIGxldCB0b3RhbEJ5dGVzID0gMFxuICAgIGxldCBjaHVua0NvdW50ID0gMFxuXG4gICAgdHJ5IHtcbiAgICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgY3JlYXRlUmVhZFN0cmVhbShmaWxlUGF0aCkpIHtcbiAgICAgICAgY2h1bmtDb3VudCArPSAxXG4gICAgICAgIHRvdGFsQnl0ZXMgKz0gY2h1bmsubGVuZ3RoXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCgpID0+IFtcInNlbmRGaWxlT3V0cHV0IGNodW5rXCIsIHtjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCwgY2h1bmtDb3VudCwgY2h1bmtMZW5ndGg6IGNodW5rLmxlbmd0aCwgdG90YWxCeXRlc31dKVxuICAgICAgICB0aGlzLmV2ZW50cy5lbWl0KFwib3V0cHV0XCIsIGNodW5rKVxuICAgICAgfVxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wic2VuZEZpbGVPdXRwdXQgZG9uZVwiLCB7Y2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsIGNodW5rQ291bnQsIHRvdGFsQnl0ZXN9XSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoKCkgPT4gW2BWZWxvY2lvdXMgY2xpZW50ICR7dGhpcy5jbGllbnRDb3VudH0gZmFpbGVkIHdoaWxlIHN0cmVhbWluZyBmaWxlIG91dHB1dDogJHtmaWxlUGF0aH1gLCBlcnJvcl0pXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNob3VsZCBjbG9zZSBjb25uZWN0aW9uLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgaW1wb3J0KFwiLi93ZWJzb2NrZXQtcmVxdWVzdC5qc1wiKS5kZWZhdWx0fSByZXF1ZXN0IC0gUmVxdWVzdCBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgdGhlIGNvbm5lY3Rpb24gc2hvdWxkIGJlIGNsb3NlZC5cbiAgICovXG4gIHNob3VsZENsb3NlQ29ubmVjdGlvbihyZXF1ZXN0KSB7XG4gICAgY29uc3QgaHR0cFZlcnNpb24gPSByZXF1ZXN0Lmh0dHBWZXJzaW9uKClcbiAgICBjb25zdCBjb25uZWN0aW9uSGVhZGVyID0gcmVxdWVzdC5oZWFkZXIoXCJjb25uZWN0aW9uXCIpPy50b0xvd2VyQ2FzZSgpPy50cmltKClcbiAgICBjb25zdCBjb25uZWN0aW9uVG9rZW5zID0gY29ubmVjdGlvbkhlYWRlclxuICAgICAgPyBjb25uZWN0aW9uSGVhZGVyLnNwbGl0KFwiLFwiKS5tYXAoKHRva2VuKSA9PiB0b2tlbi50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgICAgOiBbXVxuXG4gICAgaWYgKGh0dHBWZXJzaW9uID09IFwid2Vic29ja2V0XCIpIHJldHVybiBmYWxzZVxuICAgIGlmIChjb25uZWN0aW9uVG9rZW5zLmluY2x1ZGVzKFwiY2xvc2VcIikpIHJldHVybiB0cnVlXG5cbiAgICBpZiAoaHR0cFZlcnNpb24gPT0gXCIxLjBcIiAmJiBjb25uZWN0aW9uSGVhZGVyICE9IFwia2VlcC1hbGl2ZVwiKSByZXR1cm4gdHJ1ZVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgZm9yIHRoZSBzdGF0dXMgY29kZXMgdGhhdCBSRkMgNzIzMCDCpzMuMy4zIGRlY2xhcmVzXG4gKiBjYW5ub3QgY2FycnkgYSBtZXNzYWdlIGJvZHk6IGV2ZXJ5IDF4eCBpbmZvcm1hdGlvbmFsLCAyMDQgTm9cbiAqIENvbnRlbnQsIGFuZCAzMDQgTm90IE1vZGlmaWVkLlxuICogQHBhcmFtIHtudW1iZXJ9IHN0YXR1c0NvZGUgLSBIVFRQIHN0YXR1cyBjb2RlLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzTm9Cb2R5U3RhdHVzQ29kZShzdGF0dXNDb2RlKSB7XG4gIHJldHVybiAoc3RhdHVzQ29kZSA+PSAxMDAgJiYgc3RhdHVzQ29kZSA8IDIwMCkgfHwgc3RhdHVzQ29kZSA9PT0gMjA0IHx8IHN0YXR1c0NvZGUgPT09IDMwNFxufVxuIl19
|
|
437
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvY2xpZW50L2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUE7QUFDM0IsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDakMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sU0FBUyxDQUFBO0FBQ3hDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLFNBQVMsQ0FBQTtBQUNuQyxPQUFPLFlBQVksTUFBTSw4QkFBOEIsQ0FBQTtBQUN2RCxPQUFPLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQTtBQUNwQyxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUE7QUFDbEMsT0FBTyxhQUFhLE1BQU0scUJBQXFCLENBQUE7QUFDL0MsT0FBTyxnQkFBZ0IsTUFBTSx3QkFBd0IsQ0FBQTtBQUVyRDs7OztHQUlHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxJQUFJO0lBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFFdEgsT0FBTyxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBQyxDQUFBO0FBQ3ZDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxLQUFLO0lBQzlCLE9BQU87UUFDTCxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUk7UUFDdEIsT0FBTyxFQUFFLEtBQUssQ0FB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LEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzFFLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFTixJQUFJLFdBQVcsSUFBSSxXQUFXO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFDNUMsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUE7UUFFbkQsSUFBSSxXQUFXLElBQUksS0FBSyxJQUFJLGdCQUFnQixJQUFJLFlBQVk7WUFBRSxPQUFPLElBQUksQ0FBQTtRQUV6RSxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FDRjtBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsa0JBQWtCLENBQUMsVUFBVTtJQUNwQyxPQUFPLENBQUMsVUFBVSxJQUFJLEdBQUcsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksVUFBVSxLQUFLLEdBQUcsSUFBSSxVQUFVLEtBQUssR0FBRyxDQUFBO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IGNyeXB0byBmcm9tIFwiY3J5cHRvXCJcbmltcG9ydCBmcyBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiXG5pbXBvcnQge2NyZWF0ZVJlYWRTdHJlYW19IGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQge2Vuc3VyZUVycm9yfSBmcm9tIFwidHlwYW5pY1wiXG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gXCIuLi8uLi91dGlscy9ldmVudC1lbWl0dGVyLmpzXCJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4uLy4uL2xvZ2dlci5qc1wiXG5pbXBvcnQgUmVxdWVzdCBmcm9tIFwiLi9yZXF1ZXN0LmpzXCJcbmltcG9ydCBSZXF1ZXN0UnVubmVyIGZyb20gXCIuL3JlcXVlc3QtcnVubmVyLmpzXCJcbmltcG9ydCBXZWJzb2NrZXRTZXNzaW9uIGZyb20gXCIuL3dlYnNvY2tldC1zZXNzaW9uLmpzXCJcblxuLyoqXG4gKiBSdW5zIHN1bW1hcml6ZSByZXF1ZXN0IGRhdGEuXG4gKiBAcGFyYW0ge0J1ZmZlcn0gZGF0YSAtIEluY29taW5nIHJlcXVlc3QgZGF0YS5cbiAqIEByZXR1cm5zIHt7bGVuZ3RoOiBudW1iZXIsIHByZXZpZXc6IHN0cmluZ319IC0gUmVxdWVzdCBkYXRhIHN1bW1hcnkuXG4gKi9cbmZ1bmN0aW9uIHN1bW1hcml6ZVJlcXVlc3REYXRhKGRhdGEpIHtcbiAgY29uc3QgcHJldmlldyA9IGRhdGEudG9TdHJpbmcoXCJsYXRpbjFcIiwgMCwgTWF0aC5taW4oZGF0YS5sZW5ndGgsIDE2MCkpLnJlcGxhY2VBbGwoXCJcXHJcIiwgXCJcXFxcclwiKS5yZXBsYWNlQWxsKFwiXFxuXCIsIFwiXFxcXG5cIilcblxuICByZXR1cm4ge2xlbmd0aDogZGF0YS5sZW5ndGgsIHByZXZpZXd9XG59XG5cbi8qKlxuICogUnVucyBiYWQgcmVxdWVzdCBkZXRhaWxzLlxuICogQHBhcmFtIHtFcnJvciAmIHt2ZWxvY2lvdXNDb250ZXh0PzogUmVjb3JkPHN0cmluZywgPz59fSBlcnJvciAtIEVycm9yIGluc3RhbmNlLlxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsID8+fSAtIFNhZmUgYmFkLXJlcXVlc3QgZGV0YWlscyBmb3IgbG9ncy5cbiAqL1xuZnVuY3Rpb24gYmFkUmVxdWVzdERldGFpbHMoZXJyb3IpIHtcbiAgcmV0dXJuIHtcbiAgICBlcnJvckNsYXNzOiBlcnJvci5uYW1lLFxuICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgdmVsb2Npb3VzQ29udGV4dDogZXJyb3IudmVsb2Npb3VzQ29udGV4dFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlb2xpY2lvdXNIdHRwU2VydmVyQ2xpZW50IHtcbiAgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIHN0YXRlID0gXCJpbml0aWFsXCJcblxuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuY2xpZW50Q291bnQgLSBDbGllbnQgY291bnQuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MucmVtb3RlQWRkcmVzc10gLSBSZW1vdGUgYWRkcmVzcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjbGllbnRDb3VudCwgY29uZmlndXJhdGlvbiwgcmVtb3RlQWRkcmVzc30pIHtcbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24pIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbmZpZ3VyYXRpb24gZ2l2ZW5cIilcblxuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcih0aGlzKVxuICAgIHRoaXMuY2xpZW50Q291bnQgPSBjbGllbnRDb3VudFxuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLnJlbW90ZUFkZHJlc3MgPSByZW1vdGVBZGRyZXNzXG5cbiAgICAvKipcbiAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICogQHR5cGUge1JlcXVlc3RSdW5uZXJbXX0gKi9cbiAgICB0aGlzLnJlcXVlc3RSdW5uZXJzID0gW11cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNlbmQgYmFkIHVwZ3JhZGUgcmVzcG9uc2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gTWVzc2FnZSB0ZXh0LlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBfc2VuZEJhZFVwZ3JhZGVSZXNwb25zZShtZXNzYWdlKSB7XG4gICAgY29uc3QgaHR0cFZlcnNpb24gPSB0aGlzLmN1cnJlbnRSZXF1ZXN0Py5odHRwVmVyc2lvbigpIHx8IFwiMS4xXCJcbiAgICBjb25zdCBib2R5ID0gYCR7bWVzc2FnZX1cXG5gXG4gICAgY29uc3QgaGVhZGVycyA9IFtcbiAgICAgIGBIVFRQLyR7aHR0cFZlcnNpb259IDQwMCBCYWQgUmVxdWVzdGAsXG4gICAgICBcIkNvbm5lY3Rpb246IENsb3NlXCIsXG4gICAgICBcIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFwiLFxuICAgICAgYENvbnRlbnQtTGVuZ3RoOiAke0J1ZmZlci5ieXRlTGVuZ3RoKGJvZHksIFwidXRmOFwiKX1gLFxuICAgICAgXCJcIixcbiAgICAgIGJvZHlcbiAgICBdLmpvaW4oXCJcXHJcXG5cIilcblxuICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJvdXRwdXRcIiwgaGVhZGVycylcbiAgICB0aGlzLmV2ZW50cy5lbWl0KFwiY2xvc2VcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNlbmQgYmFkIHJlcXVlc3QgcmVzcG9uc2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gUmVzcG9uc2UgbWVzc2FnZS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgX3NlbmRCYWRSZXF1ZXN0UmVzcG9uc2UobWVzc2FnZSkge1xuICAgIGNvbnN0IGh0dHBWZXJzaW9uID0gdGhpcy5jdXJyZW50UmVxdWVzdD8uaHR0cFZlcnNpb24oKSB8fCBcIjEuMVwiXG4gICAgY29uc3QgYm9keSA9IGAke21lc3NhZ2V9XFxuYFxuICAgIGNvbnN0IGhlYWRlcnMgPSBbXG4gICAgICBgSFRUUC8ke2h0dHBWZXJzaW9ufSA0MDAgQmFkIFJlcXVlc3RgLFxuICAgICAgXCJDb25uZWN0aW9uOiBDbG9zZVwiLFxuICAgICAgXCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcIixcbiAgICAgIGBDb250ZW50LUxlbmd0aDogJHtCdWZmZXIuYnl0ZUxlbmd0aChib2R5LCBcInV0ZjhcIil9YCxcbiAgICAgIFwiXCIsXG4gICAgICBib2R5XG4gICAgXS5qb2luKFwiXFxyXFxuXCIpXG5cbiAgICB0aGlzLmV2ZW50cy5lbWl0KFwib3V0cHV0XCIsIGhlYWRlcnMpXG4gICAgdGhpcy5ldmVudHMuZW1pdChcImNsb3NlXCIpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBoYW5kbGUgYmFkIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIC0gRXJyb3IgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGhhbmRsZUJhZFJlcXVlc3QoZXJyb3IpIHtcbiAgICB0aGlzLmxvZ2dlci53YXJuKCgpID0+IFtcIkZhaWxlZCB0byBwYXJzZSBIVFRQIHJlcXVlc3RcIiwgYmFkUmVxdWVzdERldGFpbHMoLyoqIEB0eXBlIHtFcnJvciAmIHt2ZWxvY2lvdXNDb250ZXh0PzogUmVjb3JkPHN0cmluZywgPz59fSAqLyAoZXJyb3IpKV0pXG5cbiAgICBpZiAodGhpcy5jdXJyZW50UmVxdWVzdCAmJiBcImdldFJlcXVlc3RQYXJzZXJcIiBpbiB0aGlzLmN1cnJlbnRSZXF1ZXN0KSB7XG4gICAgICBjb25zdCBodHRwUmVxdWVzdCA9IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9ICovICh0aGlzLmN1cnJlbnRSZXF1ZXN0KVxuXG4gICAgICBodHRwUmVxdWVzdC5nZXRSZXF1ZXN0UGFyc2VyKCkuZGVzdHJveSgpXG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdCA9IHVuZGVmaW5lZFxuICAgIHRoaXMuc3RhdGUgPSBcImluaXRpYWxcIlxuXG4gICAgdGhpcy5fc2VuZEJhZFJlcXVlc3RSZXNwb25zZShcIkJhZCBSZXF1ZXN0XCIpXG4gIH1cblxuICBleGVjdXRlQ3VycmVudFJlcXVlc3QgPSAoKSA9PiB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXCJleGVjdXRlQ3VycmVudFJlcXVlc3RcIilcblxuICAgIGNvbnN0IGN1cnJlbnRSZXF1ZXN0ID0gdGhpcy5jdXJyZW50UmVxdWVzdFxuXG4gICAgaWYgKCFjdXJyZW50UmVxdWVzdCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gY3VycmVudCByZXF1ZXN0XCIpXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wiZXhlY3V0ZUN1cnJlbnRSZXF1ZXN0IHJlcXVlc3RcIiwge1xuICAgICAgY2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsXG4gICAgICBodHRwTWV0aG9kOiBjdXJyZW50UmVxdWVzdC5odHRwTWV0aG9kKCksXG4gICAgICBodHRwVmVyc2lvbjogY3VycmVudFJlcXVlc3QuaHR0cFZlcnNpb24oKSxcbiAgICAgIHBhdGg6IGN1cnJlbnRSZXF1ZXN0LnBhdGgoKSxcbiAgICAgIHF1ZXVlTGVuZ3RoOiB0aGlzLnJlcXVlc3RSdW5uZXJzLmxlbmd0aFxuICAgIH1dKVxuXG4gICAgaWYgKHRoaXMuX2lzV2Vic29ja2V0VXBncmFkZShjdXJyZW50UmVxdWVzdCkpIHtcbiAgICAgIHRoaXMuX3VwZ3JhZGVUb1dlYnNvY2tldCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBXZSBhcmUgZG9uZSBwYXJzaW5nIHRoZSBnaXZlbiByZXF1ZXN0IGFuZCBjYW4gdGhlb3JldGljYWxseSBzdGFydCBwYXJzaW5nIGEgbmV3IG9uZSwgYmVmb3JlIHRoZSBjdXJyZW50IHJlcXVlc3QgaXMgZG9uZSAtIHNvIHJlc2V0IHRoZSBzdGF0ZS5cbiAgICB0aGlzLnN0YXRlID0gXCJpbml0aWFsXCJcblxuICAgIGNvbnN0IHJlcXVlc3RSdW5uZXIgPSBuZXcgUmVxdWVzdFJ1bm5lcih7XG4gICAgICBjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb24sXG4gICAgICByZXF1ZXN0OiBjdXJyZW50UmVxdWVzdFxuICAgIH0pXG5cbiAgICB0aGlzLnJlcXVlc3RSdW5uZXJzLnB1c2gocmVxdWVzdFJ1bm5lcilcblxuICAgIHJlcXVlc3RSdW5uZXIuZXZlbnRzLm9uKFwiZG9uZVwiLCB0aGlzLnJlcXVlc3REb25lKVxuICAgIHJlcXVlc3RSdW5uZXIucnVuKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIG9uIHdyaXRlLlxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gZGF0YSAtIERhdGEgcGF5bG9hZC5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Xcml0ZShkYXRhKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wib25Xcml0ZSBzdGFydFwiLCB7XG4gICAgICBjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCxcbiAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgLi4uc3VtbWFyaXplUmVxdWVzdERhdGEoZGF0YSlcbiAgICB9XSlcblxuICAgIGlmICh0aGlzLndlYnNvY2tldFNlc3Npb24pIHtcbiAgICAgIHRoaXMud2Vic29ja2V0U2Vzc2lvbi5vbkRhdGEoZGF0YSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvKipcbiAgICAgICAqIFJlbWFpbmluZy5cbiAgICAgICAqIEB0eXBlIHtCdWZmZXIgfCB1bmRlZmluZWR9ICovXG4gICAgICBsZXQgcmVtYWluaW5nID0gZGF0YVxuXG4gICAgICB3aGlsZSAocmVtYWluaW5nKSB7XG4gICAgICAgIGlmIChyZW1haW5pbmcubGVuZ3RoIDw9IDApIGJyZWFrXG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGUgPT0gXCJpbml0aWFsXCIpIHtcbiAgICAgICAgICBjb25zdCByZW1haW5pbmdMZW5ndGggPSByZW1haW5pbmcubGVuZ3RoXG5cbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJvbldyaXRlIGNyZWF0aW5nIHJlcXVlc3QgcGFyc2VyXCIsIHtjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCwgcmVtYWluaW5nTGVuZ3RofV0pXG4gICAgICAgICAgdGhpcy5jdXJyZW50UmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHtjbGllbnQ6IHRoaXMsIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbn0pXG4gICAgICAgICAgdGhpcy5jdXJyZW50UmVxdWVzdC5yZXF1ZXN0UGFyc2VyLmV2ZW50cy5vbihcImRvbmVcIiwgdGhpcy5leGVjdXRlQ3VycmVudFJlcXVlc3QpXG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IFwicmVxdWVzdFN0YXJ0ZWRcIlxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUgIT0gXCJyZXF1ZXN0U3RhcnRlZFwiKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHN0YXRlIGZvciBjbGllbnQ6ICR7dGhpcy5zdGF0ZX1gKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRSZXF1ZXN0KSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjdXJyZW50IHJlcXVlc3RcIilcblxuICAgICAgICByZW1haW5pbmcgPSB0aGlzLmN1cnJlbnRSZXF1ZXN0LmZlZWQocmVtYWluaW5nKVxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJvbldyaXRlIGZlZCBwYXJzZXJcIiwge1xuICAgICAgICAgIGNsaWVudENvdW50OiB0aGlzLmNsaWVudENvdW50LFxuICAgICAgICAgIGhhc1JlbWFpbmluZzogQm9vbGVhbihyZW1haW5pbmc/Lmxlbmd0aCksXG4gICAgICAgICAgcmVtYWluaW5nTGVuZ3RoOiByZW1haW5pbmc/Lmxlbmd0aCB8fCAwLFxuICAgICAgICAgIHBhcnNlckNvbXBsZXRlZDogdGhpcy5jdXJyZW50UmVxdWVzdD8uZ2V0UmVxdWVzdFBhcnNlcigpLmhhc0NvbXBsZXRlZFxuICAgICAgICB9XSlcblxuICAgICAgICBpZiAocmVtYWluaW5nICYmIHJlbWFpbmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdFBhcnNlciA9IHRoaXMuY3VycmVudFJlcXVlc3QuZ2V0UmVxdWVzdFBhcnNlcigpXG5cbiAgICAgICAgICBpZiAoIXJlcXVlc3RQYXJzZXIuaGFzQ29tcGxldGVkKSB7XG4gICAgICAgICAgICBjb25zdCByZW1haW5pbmdMZW5ndGggPSByZW1haW5pbmcubGVuZ3RoXG5cbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCgpID0+IFtcIm9uV3JpdGUgd2FpdGluZyBmb3IgbW9yZSBkYXRhXCIsIHtjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCwgcmVtYWluaW5nTGVuZ3RofV0pXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuc3RhdGUgPSBcImluaXRpYWxcIlxuICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ0xlbmd0aCA9IHJlbWFpbmluZy5sZW5ndGhcblxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCgpID0+IFtcIm9uV3JpdGUgcGFyc2VyIGNvbXBsZXRlZCB3aXRoIHJlbWFpbmluZyBieXRlc1wiLCB7Y2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsIHJlbWFpbmluZ0xlbmd0aH1dKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJvbldyaXRlIGVuZFwiLCB7Y2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsIHN0YXRlOiB0aGlzLnN0YXRlLCBxdWV1ZUxlbmd0aDogdGhpcy5yZXF1ZXN0UnVubmVycy5sZW5ndGh9XSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5oYW5kbGVCYWRSZXF1ZXN0KGVuc3VyZUVycm9yKGVycm9yKSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBpcyB3ZWJzb2NrZXQgdXBncmFkZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3JlcXVlc3QuanNcIikuZGVmYXVsdH0gcmVxdWVzdCAtIFJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHdlYnNvY2tldCB1cGdyYWRlLlxuICAgKi9cbiAgX2lzV2Vic29ja2V0VXBncmFkZShyZXF1ZXN0KSB7XG4gICAgY29uc3QgdXBncmFkZUhlYWRlciA9IHJlcXVlc3QuaGVhZGVyKFwidXBncmFkZVwiKT8udG9Mb3dlckNhc2UoKVxuICAgIGNvbnN0IGNvbm5lY3Rpb25IZWFkZXIgPSByZXF1ZXN0LmhlYWRlcihcImNvbm5lY3Rpb25cIik/LnRvTG93ZXJDYXNlKClcblxuICAgIHJldHVybiBCb29sZWFuKHVwZ3JhZGVIZWFkZXIgPT0gXCJ3ZWJzb2NrZXRcIiAmJiBjb25uZWN0aW9uSGVhZGVyPy5pbmNsdWRlcyhcInVwZ3JhZGVcIikpXG4gIH1cblxuICAvKipcbiAgICogUnVucyB1cGdyYWRlIHRvIHdlYnNvY2tldC5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgX3VwZ3JhZGVUb1dlYnNvY2tldCgpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudFJlcXVlc3QpIHRocm93IG5ldyBFcnJvcihcIk5vIGN1cnJlbnQgcmVxdWVzdFwiKVxuXG4gICAgY29uc3Qgc2VjV2Vic29ja2V0S2V5ID0gdGhpcy5jdXJyZW50UmVxdWVzdC5oZWFkZXIoXCJzZWMtd2Vic29ja2V0LWtleVwiKVxuXG4gICAgaWYgKCFzZWNXZWJzb2NrZXRLZXkpIHtcbiAgICAgIHRoaXMuX3NlbmRCYWRVcGdyYWRlUmVzcG9uc2UoXCJNaXNzaW5nIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlclwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgd2Vic29ja2V0QWNjZXB0S2V5ID0gY3J5cHRvLmNyZWF0ZUhhc2goXCJzaGExXCIpXG4gICAgICAudXBkYXRlKGAke3NlY1dlYnNvY2tldEtleX0yNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTFgLCBcImJpbmFyeVwiKVxuICAgICAgLmRpZ2VzdChcImJhc2U2NFwiKVxuICAgIGNvbnN0IGh0dHBWZXJzaW9uID0gdGhpcy5jdXJyZW50UmVxdWVzdC5odHRwVmVyc2lvbigpIHx8IFwiMS4xXCJcbiAgICBjb25zdCByZXNwb25zZUxpbmVzID0gW1xuICAgICAgYEhUVFAvJHtodHRwVmVyc2lvbn0gMTAxIFN3aXRjaGluZyBQcm90b2NvbHNgLFxuICAgICAgXCJVcGdyYWRlOiB3ZWJzb2NrZXRcIixcbiAgICAgIFwiQ29ubmVjdGlvbjogVXBncmFkZVwiLFxuICAgICAgYFNlYy1XZWJTb2NrZXQtQWNjZXB0OiAke3dlYnNvY2tldEFjY2VwdEtleX1gLFxuICAgICAgXCJcIixcbiAgICAgIFwiXCJcbiAgICBdXG4gICAgY29uc3QgcmVzcG9uc2UgPSByZXNwb25zZUxpbmVzLmpvaW4oXCJcXHJcXG5cIilcblxuICAgIGNvbnN0IG1lc3NhZ2VIYW5kbGVyUmVzb2x2ZXIgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0V2Vic29ja2V0TWVzc2FnZUhhbmRsZXJSZXNvbHZlcj8uKClcbiAgICBsZXQgbWVzc2FnZUhhbmRsZXJcbiAgICBsZXQgbWVzc2FnZUhhbmRsZXJQcm9taXNlXG5cbiAgICBpZiAobWVzc2FnZUhhbmRsZXJSZXNvbHZlcikge1xuICAgICAgY29uc3QgcmVzb2x2ZWRIYW5kbGVyID0gbWVzc2FnZUhhbmRsZXJSZXNvbHZlcih7XG4gICAgICAgIGNsaWVudDogdGhpcyxcbiAgICAgICAgY29uZmlndXJhdGlvbjogdGhpcy5jb25maWd1cmF0aW9uLFxuICAgICAgICByZXF1ZXN0OiB0aGlzLmN1cnJlbnRSZXF1ZXN0XG4gICAgICB9KVxuXG4gICAgICBjb25zdCByZXNvbHZlZFRoZW5hYmxlID0gLyoqIEB0eXBlIHt7dGhlbj86ICguLi5hcmdzOiBBcnJheTw/PikgPT4gP319ICovIChyZXNvbHZlZEhhbmRsZXIpXG5cbiAgICAgIGlmIChyZXNvbHZlZFRoZW5hYmxlPy50aGVuKSB7XG4gICAgICAgIG1lc3NhZ2VIYW5kbGVyUHJvbWlzZSA9IC8qKiBAdHlwZSB7UHJvbWlzZTxpbXBvcnQoXCIuLi8uLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLldlYnNvY2tldE1lc3NhZ2VIYW5kbGVyIHwgdm9pZD59ICovIChyZXNvbHZlZEhhbmRsZXIpXG4gICAgICB9IGVsc2UgaWYgKHJlc29sdmVkSGFuZGxlcikge1xuICAgICAgICBtZXNzYWdlSGFuZGxlciA9IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi4vLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5XZWJzb2NrZXRNZXNzYWdlSGFuZGxlcn0gKi8gKHJlc29sdmVkSGFuZGxlcilcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLndlYnNvY2tldFNlc3Npb24gPSBuZXcgV2Vic29ja2V0U2Vzc2lvbih7XG4gICAgICBjbGllbnQ6IHRoaXMsXG4gICAgICBjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb24sXG4gICAgICB1cGdyYWRlUmVxdWVzdDogdGhpcy5jdXJyZW50UmVxdWVzdCxcbiAgICAgIG1lc3NhZ2VIYW5kbGVyOiBtZXNzYWdlSGFuZGxlcixcbiAgICAgIG1lc3NhZ2VIYW5kbGVyUHJvbWlzZTogbWVzc2FnZUhhbmRsZXJQcm9taXNlXG4gICAgfSlcbiAgICB0aGlzLndlYnNvY2tldFNlc3Npb24uZXZlbnRzLm9uKFwiY2xvc2VcIiwgKCkgPT4ge1xuICAgICAgLy8gUGF1c2VkIHNlc3Npb25zIHN1cnZpdmUgdGhlIHNvY2tldCBjbG9zZTsgZG9uJ3QgZGVzdHJveSgpLlxuICAgICAgLy8gVGhlIGdyYWNlLWV4cGlyeSBwYXRoIChfZmluYWxpemVHcmFjZUV4cGlyeSkgd2lsbCBkZXN0cm95XG4gICAgICAvLyB0aGVtIHBlcm1hbmVudGx5IGlmIHJlc3VtZSBkb2Vzbid0IGhhcHBlbiBpbiB0aW1lLlxuICAgICAgaWYgKCF0aGlzLndlYnNvY2tldFNlc3Npb24/LmlzUGF1c2VkKCkpIHtcbiAgICAgICAgdGhpcy53ZWJzb2NrZXRTZXNzaW9uPy5kZXN0cm95KClcbiAgICAgIH1cbiAgICAgIHRoaXMud2Vic29ja2V0U2Vzc2lvbiA9IHVuZGVmaW5lZFxuICAgICAgdGhpcy5ldmVudHMuZW1pdChcImNsb3NlXCIpXG4gICAgfSlcbiAgICB0aGlzLnN0YXRlID0gXCJ3ZWJzb2NrZXRcIlxuICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJvdXRwdXRcIiwgcmVzcG9uc2UpXG4gICAgdm9pZCB0aGlzLndlYnNvY2tldFNlc3Npb24uaW5pdGlhbGl6ZUNoYW5uZWwoKVxuICAgIHRoaXMud2Vic29ja2V0U2Vzc2lvbi5zZW5kU2Vzc2lvbkVzdGFibGlzaGVkKClcbiAgfVxuXG4gIHJlcXVlc3REb25lID0gKCkgPT4ge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCgpID0+IFtcInJlcXVlc3REb25lXCIsIHtjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCwgcXVldWVMZW5ndGg6IHRoaXMucmVxdWVzdFJ1bm5lcnMubGVuZ3RofV0pXG4gICAgdm9pZCB0aGlzLnNlbmREb25lUmVxdWVzdHMoKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oXCJGYWlsZWQgd2hpbGUgc2VuZGluZyBkb25lIHJlcXVlc3RzXCIsIGVycm9yKVxuICAgICAgdGhpcy5ldmVudHMuZW1pdChcImNsb3NlXCIpXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIHNlbmREb25lUmVxdWVzdHMoKSB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3RSdW5uZXIgPSB0aGlzLnJlcXVlc3RSdW5uZXJzWzBdXG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWVzdFJ1bm5lcj8uZ2V0UmVxdWVzdCgpXG5cbiAgICAgIGlmIChyZXF1ZXN0UnVubmVyPy5nZXRTdGF0ZSgpID09IFwiZG9uZVwiKSB7XG4gICAgICAgIGNvbnN0IGh0dHBWZXJzaW9uID0gcmVxdWVzdC5odHRwVmVyc2lvbigpXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25IZWFkZXIgPSByZXF1ZXN0LmhlYWRlcihcImNvbm5lY3Rpb25cIik/LnRvTG93ZXJDYXNlKCk/LnRyaW0oKVxuICAgICAgICBjb25zdCBzaG91bGRDbG9zZUNvbm5lY3Rpb24gPSB0aGlzLnNob3VsZENsb3NlQ29ubmVjdGlvbihyZXF1ZXN0KVxuXG4gICAgICAgIHRoaXMucmVxdWVzdFJ1bm5lcnMuc2hpZnQoKVxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJzZW5kRG9uZVJlcXVlc3RzIHNoaWZ0ZWQgcXVldWVcIiwge2NsaWVudENvdW50OiB0aGlzLmNsaWVudENvdW50LCBxdWV1ZUxlbmd0aDogdGhpcy5yZXF1ZXN0UnVubmVycy5sZW5ndGh9XSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNlbmRSZXNwb25zZShyZXF1ZXN0UnVubmVyKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCgpID0+IFtgVmVsb2Npb3VzIGNsaWVudCAke3RoaXMuY2xpZW50Q291bnR9IGZhaWxlZCB3aGlsZSBzZW5kaW5nIHJlc3BvbnNlYCwgZXJyb3JdKVxuICAgICAgICAgIHRocm93IGVycm9yXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFJlcXVlc3QgPT09IHJlcXVlc3QgJiYgdGhpcy5zdGF0ZSA9PT0gXCJpbml0aWFsXCIpIHRoaXMuY3VycmVudFJlcXVlc3QgPSB1bmRlZmluZWRcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wic2VuZERvbmVSZXF1ZXN0c1wiLCB7Y2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsIGNvbm5lY3Rpb25IZWFkZXIsIGh0dHBWZXJzaW9ufV0pXG5cbiAgICAgICAgaWYgKHNob3VsZENsb3NlQ29ubmVjdGlvbikge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCgpID0+IFtgQ2xvc2luZyB0aGUgY29ubmVjdGlvbiBiZWNhdXNlICR7aHR0cFZlcnNpb259IGFuZCBjb25uZWN0aW9uIGhlYWRlciAke2Nvbm5lY3Rpb25IZWFkZXJ9YCwge2NsaWVudENvdW50OiB0aGlzLmNsaWVudENvdW50fV0pXG4gICAgICAgICAgdGhpcy5ldmVudHMuZW1pdChcImNsb3NlXCIpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2VuZCByZXNwb25zZS5cbiAgICogQHBhcmFtIHtSZXF1ZXN0UnVubmVyfSByZXF1ZXN0UnVubmVyIC0gUmVxdWVzdCBydW5uZXIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBzZW5kUmVzcG9uc2UocmVxdWVzdFJ1bm5lcikge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gZGlnZyhyZXF1ZXN0UnVubmVyLCBcInJlc3BvbnNlXCIpXG4gICAgY29uc3QgcmVxdWVzdCA9IHJlcXVlc3RSdW5uZXIuZ2V0UmVxdWVzdCgpXG4gICAgY29uc3QgZmlsZVBhdGggPSByZXNwb25zZS5nZXRGaWxlUGF0aCgpXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKClcbiAgICBjb25zdCBjb25uZWN0aW9uSGVhZGVyID0gcmVxdWVzdC5oZWFkZXIoXCJjb25uZWN0aW9uXCIpPy50b0xvd2VyQ2FzZSgpPy50cmltKClcbiAgICBjb25zdCBodHRwVmVyc2lvbiA9IHJlcXVlc3QuaHR0cFZlcnNpb24oKVxuICAgIGNvbnN0IHNob3VsZENsb3NlQ29ubmVjdGlvbiA9IHRoaXMuc2hvdWxkQ2xvc2VDb25uZWN0aW9uKHJlcXVlc3QpXG4gICAgY29uc3QgaGFzRmlsZVBhdGggPSB0eXBlb2YgZmlsZVBhdGggPT09IFwic3RyaW5nXCIgJiYgZmlsZVBhdGgubGVuZ3RoID4gMFxuICAgIGNvbnN0IGJvZHkgPSBoYXNGaWxlUGF0aCA/IG51bGwgOiByZXNwb25zZS5nZXRCb2R5KClcbiAgICBjb25zdCBib2R5SXNTdHJpbmcgPSB0eXBlb2YgYm9keSA9PT0gXCJzdHJpbmdcIlxuICAgIGNvbnN0IGJvZHlJc0JpbmFyeSA9IGJvZHkgaW5zdGFuY2VvZiBVaW50OEFycmF5XG5cbiAgICBpZiAoIWhhc0ZpbGVQYXRoICYmICFib2R5SXNTdHJpbmcgJiYgIWJvZHlJc0JpbmFyeSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCByZXNwb25zZSBib2R5IHRvIGJlIGEgc3RyaW5nIG9yIFVpbnQ4QXJyYXksIGdvdCAke3R5cGVvZiBib2R5fWApXG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXCJzZW5kUmVzcG9uc2VcIiwge2NsaWVudENvdW50OiB0aGlzLmNsaWVudENvdW50LCBjb25uZWN0aW9uSGVhZGVyLCBodHRwVmVyc2lvbn0pXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wic2VuZFJlc3BvbnNlIHBheWxvYWRcIiwge1xuICAgICAgY2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsXG4gICAgICBoYXNGaWxlUGF0aCxcbiAgICAgIGZpbGVQYXRoLFxuICAgICAgYm9keUlzQmluYXJ5LFxuICAgICAgYm9keUlzU3RyaW5nXG4gICAgfV0pXG5cbiAgICBpZiAoc2hvdWxkQ2xvc2VDb25uZWN0aW9uKSB7XG4gICAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJDb25uZWN0aW9uXCIsIFwiQ2xvc2VcIilcbiAgICB9IGVsc2UgaWYgKGh0dHBWZXJzaW9uID09IFwiMS4wXCIgJiYgY29ubmVjdGlvbkhlYWRlciA9PSBcImtlZXAtYWxpdmVcIikge1xuICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQ29ubmVjdGlvblwiLCBcIktlZXAtQWxpdmVcIilcbiAgICB9XG5cbiAgICAvLyBQZXIgUkZDIDcyMzAgwqczLjMuMywgcmVzcG9uc2VzIHdpdGggc3RhdHVzIGNvZGVzIDF4eCwgMjA0LCBhbmQgMzA0XG4gICAgLy8gTVVTVCBOT1QgY2FycnkgYSBtZXNzYWdlIGJvZHkgYW5kIE1VU1QgTk9UIGluY2x1ZGUgQ29udGVudC1MZW5ndGhcbiAgICAvLyAod2l0aCBhIG5hcnJvdyAzMDQgZXhjZXB0aW9uIHdlIGRvbid0IGxlYW4gb24pLiBTZW5kaW5nIG9uZSB3b3VsZFxuICAgIC8vIGRlc3luY2hyb25pemUga2VlcC1hbGl2ZSBjbGllbnRzIHdhaXRpbmcgZm9yIGJ5dGVzIHRoYXQgbmV2ZXJcbiAgICAvLyBhcnJpdmUg4oCUIGRyb3AgdGhlIGJvZHkgZW50aXJlbHkgZm9yIHRob3NlIGNvZGVzLlxuICAgIGNvbnN0IGlzQm9keWxlc3NTdGF0dXMgPSBpc05vQm9keVN0YXR1c0NvZGUocmVzcG9uc2UuZ2V0U3RhdHVzQ29kZSgpKVxuXG4gICAgaWYgKCFpc0JvZHlsZXNzU3RhdHVzKSB7XG4gICAgICBsZXQgY29udGVudExlbmd0aFxuXG4gICAgICBpZiAoaGFzRmlsZVBhdGgpIHtcbiAgICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBmcy5zdGF0KGZpbGVQYXRoKVxuICAgICAgICBjb250ZW50TGVuZ3RoID0gc3RhdHMuc2l6ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGVudExlbmd0aCA9IGJvZHlJc1N0cmluZyA/IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShib2R5KS5sZW5ndGggOiBib2R5LmJ5dGVMZW5ndGhcbiAgICAgIH1cblxuICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQ29udGVudC1MZW5ndGhcIiwgY29udGVudExlbmd0aClcbiAgICB9XG5cbiAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJEYXRlXCIsIGRhdGUudG9VVENTdHJpbmcoKSlcbiAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJTZXJ2ZXJcIiwgXCJWZWxvY2lvdXNcIilcblxuICAgIGxldCBoZWFkZXJzID0gXCJcIlxuXG4gICAgaGVhZGVycyArPSBgSFRUUC8ke3JlcXVlc3QuaHR0cFZlcnNpb24oKX0gJHtyZXNwb25zZS5nZXRTdGF0dXNDb2RlKCl9ICR7cmVzcG9uc2UuZ2V0U3RhdHVzTWVzc2FnZSgpfVxcclxcbmBcblxuICAgIGZvciAoY29uc3QgaGVhZGVyS2V5IGluIHJlc3BvbnNlLmhlYWRlcnMpIHtcbiAgICAgIGZvciAoY29uc3QgaGVhZGVyVmFsdWUgb2YgcmVzcG9uc2UuaGVhZGVyc1toZWFkZXJLZXldKSB7XG4gICAgICAgIGhlYWRlcnMgKz0gYCR7aGVhZGVyS2V5fTogJHtoZWFkZXJWYWx1ZX1cXHJcXG5gXG4gICAgICB9XG4gICAgfVxuXG4gICAgaGVhZGVycyArPSBcIlxcclxcblwiXG5cbiAgICB0aGlzLmV2ZW50cy5lbWl0KFwib3V0cHV0XCIsIGhlYWRlcnMpXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wic2VuZFJlc3BvbnNlIGhlYWRlcnMgZW1pdHRlZFwiLCB7Y2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsIGhlYWRlcnNMZW5ndGg6IGhlYWRlcnMubGVuZ3RofV0pXG5cbiAgICBpZiAoaXNCb2R5bGVzc1N0YXR1cykge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wic2VuZFJlc3BvbnNlIGJvZHkgc3VwcHJlc3NlZCBmb3Igbm8tYm9keSBzdGF0dXNcIiwge2NsaWVudENvdW50OiB0aGlzLmNsaWVudENvdW50LCBzdGF0dXNDb2RlOiByZXNwb25zZS5nZXRTdGF0dXNDb2RlKCl9XSlcbiAgICB9IGVsc2UgaWYgKGhhc0ZpbGVQYXRoKSB7XG4gICAgICBhd2FpdCB0aGlzLnNlbmRGaWxlT3V0cHV0KGZpbGVQYXRoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV2ZW50cy5lbWl0KFwib3V0cHV0XCIsIGJvZHkpXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJzZW5kUmVzcG9uc2UgYm9keSBlbWl0dGVkXCIsIHtjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCwgYm9keUxlbmd0aDogYm9keUlzU3RyaW5nID8gYm9keS5sZW5ndGggOiBib2R5LmJ5dGVMZW5ndGh9XSlcbiAgICB9XG5cbiAgICBhd2FpdCByZXF1ZXN0UnVubmVyLmxvZ0NvbXBsZXRlZFJlcXVlc3QoKVxuXG4gICAgaWYgKFwiZ2V0UmVxdWVzdFBhcnNlclwiIGluIHJlcXVlc3QpIHtcbiAgICAgIGNvbnN0IGh0dHBSZXF1ZXN0ID0gLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3JlcXVlc3QuanNcIikuZGVmYXVsdH0gKi8gKHJlcXVlc3QpXG4gICAgICBodHRwUmVxdWVzdC5nZXRSZXF1ZXN0UGFyc2VyKCkuZGVzdHJveSgpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2VuZCBmaWxlIG91dHB1dC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVQYXRoIC0gRmlsZSBwYXRoLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgc2VuZEZpbGVPdXRwdXQoZmlsZVBhdGgpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJzZW5kRmlsZU91dHB1dCBzdGFydFwiLCB7Y2xpZW50Q291bnQ6IHRoaXMuY2xpZW50Q291bnQsIGZpbGVQYXRofV0pXG4gICAgbGV0IHRvdGFsQnl0ZXMgPSAwXG4gICAgbGV0IGNodW5rQ291bnQgPSAwXG5cbiAgICB0cnkge1xuICAgICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBjcmVhdGVSZWFkU3RyZWFtKGZpbGVQYXRoKSkge1xuICAgICAgICBjaHVua0NvdW50ICs9IDFcbiAgICAgICAgdG90YWxCeXRlcyArPSBjaHVuay5sZW5ndGhcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wic2VuZEZpbGVPdXRwdXQgY2h1bmtcIiwge2NsaWVudENvdW50OiB0aGlzLmNsaWVudENvdW50LCBjaHVua0NvdW50LCBjaHVua0xlbmd0aDogY2h1bmsubGVuZ3RoLCB0b3RhbEJ5dGVzfV0pXG4gICAgICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJvdXRwdXRcIiwgY2h1bmspXG4gICAgICB9XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJzZW5kRmlsZU91dHB1dCBkb25lXCIsIHtjbGllbnRDb3VudDogdGhpcy5jbGllbnRDb3VudCwgY2h1bmtDb3VudCwgdG90YWxCeXRlc31dKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcigoKSA9PiBbYFZlbG9jaW91cyBjbGllbnQgJHt0aGlzLmNsaWVudENvdW50fSBmYWlsZWQgd2hpbGUgc3RyZWFtaW5nIGZpbGUgb3V0cHV0OiAke2ZpbGVQYXRofWAsIGVycm9yXSlcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2hvdWxkIGNsb3NlIGNvbm5lY3Rpb24uXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9yZXF1ZXN0LmpzXCIpLmRlZmF1bHQgfCBpbXBvcnQoXCIuL3dlYnNvY2tldC1yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9IHJlcXVlc3QgLSBSZXF1ZXN0IG9iamVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGUgY29ubmVjdGlvbiBzaG91bGQgYmUgY2xvc2VkLlxuICAgKi9cbiAgc2hvdWxkQ2xvc2VDb25uZWN0aW9uKHJlcXVlc3QpIHtcbiAgICBjb25zdCBodHRwVmVyc2lvbiA9IHJlcXVlc3QuaHR0cFZlcnNpb24oKVxuICAgIGNvbnN0IGNvbm5lY3Rpb25IZWFkZXIgPSByZXF1ZXN0LmhlYWRlcihcImNvbm5lY3Rpb25cIik/LnRvTG93ZXJDYXNlKCk/LnRyaW0oKVxuICAgIGNvbnN0IGNvbm5lY3Rpb25Ub2tlbnMgPSBjb25uZWN0aW9uSGVhZGVyXG4gICAgICA/IGNvbm5lY3Rpb25IZWFkZXIuc3BsaXQoXCIsXCIpLm1hcCgodG9rZW4pID0+IHRva2VuLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pXG4gICAgICA6IFtdXG5cbiAgICBpZiAoaHR0cFZlcnNpb24gPT0gXCJ3ZWJzb2NrZXRcIikgcmV0dXJuIGZhbHNlXG4gICAgaWYgKGNvbm5lY3Rpb25Ub2tlbnMuaW5jbHVkZXMoXCJjbG9zZVwiKSkgcmV0dXJuIHRydWVcblxuICAgIGlmIChodHRwVmVyc2lvbiA9PSBcIjEuMFwiICYmIGNvbm5lY3Rpb25IZWFkZXIgIT0gXCJrZWVwLWFsaXZlXCIpIHJldHVybiB0cnVlXG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBmb3IgdGhlIHN0YXR1cyBjb2RlcyB0aGF0IFJGQyA3MjMwIMKnMy4zLjMgZGVjbGFyZXNcbiAqIGNhbm5vdCBjYXJyeSBhIG1lc3NhZ2UgYm9keTogZXZlcnkgMXh4IGluZm9ybWF0aW9uYWwsIDIwNCBOb1xuICogQ29udGVudCwgYW5kIDMwNCBOb3QgTW9kaWZpZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhdHVzQ29kZSAtIEhUVFAgc3RhdHVzIGNvZGUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNOb0JvZHlTdGF0dXNDb2RlKHN0YXR1c0NvZGUpIHtcbiAgcmV0dXJuIChzdGF0dXNDb2RlID49IDEwMCAmJiBzdGF0dXNDb2RlIDwgMjAwKSB8fCBzdGF0dXNDb2RlID09PSAyMDQgfHwgc3RhdHVzQ29kZSA9PT0gMzA0XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params-to-object.d.ts","sourceRoot":"","sources":["../../../../src/http-server/client/params-to-object.js"],"names":[],"mappings":"AA4BA;IACE;;;OAGG;IACH,oBAFW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,EAI3B;IADC,4BAAoB;IAGtB;;;OAGG;IACH,YAFa,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAe7B;IAED;;;;;;OAMG;IACH,kBALW,MAAM,SACN,OAAC,UACD,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,KAAK,CAAC,OAAC,CAAC,GAC1B,IAAI,
|
|
1
|
+
{"version":3,"file":"params-to-object.d.ts","sourceRoot":"","sources":["../../../../src/http-server/client/params-to-object.js"],"names":[],"mappings":"AA4BA;IACE;;;OAGG;IACH,oBAFW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,EAI3B;IADC,4BAAoB;IAGtB;;;OAGG;IACH,YAFa,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAe7B;IAED;;;;;;OAMG;IACH,kBALW,MAAM,SACN,OAAC,UACD,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,KAAK,CAAC,OAAC,CAAC,GAC1B,IAAI,CA+BhB;IAED;;;;;;;OAOG;IACH,mBANW,OAAC,QACD,MAAM,UACN,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,KAAK,CAAC,OAAC,CAAC,YAC5B,MAAM,GACJ,IAAI,CAsChB;CACF"}
|
|
@@ -61,14 +61,9 @@ export default class ParamsToObject {
|
|
|
61
61
|
* Defines newResult.
|
|
62
62
|
* @type {Array<?> | Record<string, ?>} */
|
|
63
63
|
let newResult;
|
|
64
|
-
const objectResult = /**
|
|
65
|
-
* Narrows the runtime value to the documented type.
|
|
66
|
-
* @type {Record<string, ?>} */ (result);
|
|
64
|
+
const objectResult = /** @type {Record<string, ?>} */ (result);
|
|
67
65
|
if (inputName in objectResult) {
|
|
68
|
-
newResult = /**
|
|
69
|
-
* Narrows the runtime value to the documented type.
|
|
70
|
-
* @type {Array<?> | Record<string, ?>} */
|
|
71
|
-
(objectResult[inputName]);
|
|
66
|
+
newResult = /** @type {Array<?> | Record<string, ?>} */ (objectResult[inputName]);
|
|
72
67
|
}
|
|
73
68
|
else if (rest == "[]") {
|
|
74
69
|
newResult = [];
|
|
@@ -81,9 +76,7 @@ export default class ParamsToObject {
|
|
|
81
76
|
this.treatSecond(value, rest, newResult, key);
|
|
82
77
|
}
|
|
83
78
|
else {
|
|
84
|
-
const objectResult = /**
|
|
85
|
-
* Narrows the runtime value to the documented type.
|
|
86
|
-
* @type {Record<string, ?>} */ (result);
|
|
79
|
+
const objectResult = /** @type {Record<string, ?>} */ (result);
|
|
87
80
|
objectResult[key] = value;
|
|
88
81
|
}
|
|
89
82
|
}
|
|
@@ -112,19 +105,12 @@ export default class ParamsToObject {
|
|
|
112
105
|
result.push(value);
|
|
113
106
|
}
|
|
114
107
|
else if (newRest == "") {
|
|
115
|
-
/**
|
|
116
|
-
* Narrows the runtime value to the documented type.
|
|
117
|
-
* @type {Record<string, ?>} */ (result)[key] = value;
|
|
108
|
+
/** @type {Record<string, ?>} */ (result)[key] = value;
|
|
118
109
|
}
|
|
119
110
|
else {
|
|
120
|
-
const objectResult = /**
|
|
121
|
-
* Narrows the runtime value to the documented type.
|
|
122
|
-
* @type {Record<string, ?>} */ (result);
|
|
111
|
+
const objectResult = /** @type {Record<string, ?>} */ (result);
|
|
123
112
|
if (!Array.isArray(result) && key in objectResult) {
|
|
124
|
-
newResult = /**
|
|
125
|
-
* Narrows the runtime value to the documented type.
|
|
126
|
-
* @type {Array<?> | Record<string, ?>} */
|
|
127
|
-
(objectResult[key]);
|
|
113
|
+
newResult = /** @type {Array<?> | Record<string, ?>} */ (objectResult[key]);
|
|
128
114
|
}
|
|
129
115
|
else if (newRest == "[]") {
|
|
130
116
|
newResult = [];
|
|
@@ -138,4 +124,4 @@ export default class ParamsToObject {
|
|
|
138
124
|
}
|
|
139
125
|
}
|
|
140
126
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLXRvLW9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9odHRwLXNlcnZlci9jbGllbnQvcGFyYW1zLXRvLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7Ozs7OztHQU1HO0FBQ0gsU0FBUyw2QkFBNkIsQ0FBQyxJQUFJO0lBQ3pDLE1BQU0sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFDLEdBQUcsSUFBSSxDQUFBO0lBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLHNDQUFzQyxHQUFHLGNBQWMsSUFBSSxHQUFHLENBQUMsQ0FBQTtJQUN2Rjs7Z0VBRTREO0lBQzVELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQTtJQUV4QixVQUFVLENBQUMsZ0JBQWdCLEdBQUc7UUFDNUIsZUFBZSxFQUFFO1lBQ2YsR0FBRztZQUNILElBQUk7WUFDSixLQUFLLEVBQUUsa0JBQWtCO1NBQzFCO0tBQ0YsQ0FBQTtJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8sY0FBYztJQUNqQzs7O09BR0c7SUFDSCxZQUFZLE1BQU07UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFDTjs7dUNBRStCO1FBQy9CLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUVqQixLQUFJLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBRTlCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN2QyxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTTtRQUM3QixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFFcEQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUMvQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFFMUI7O3NEQUUwQztZQUMxQyxJQUFJLFNBQVMsQ0FBQTtZQUNiLE1BQU0sWUFBWSxHQUFHLGdDQUFnQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7WUFFOUQsSUFBSSxTQUFTLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQzlCLFNBQVMsR0FBRywyQ0FBMkMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO1lBQ25GLENBQUM7aUJBQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3hCLFNBQVMsR0FBRyxFQUFFLENBQUE7Z0JBQ2QsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtZQUNyQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sU0FBUyxHQUFHLEVBQUUsQ0FBQTtnQkFDZCxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFBO1lBQ3JDLENBQUM7WUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxZQUFZLEdBQUcsZ0NBQWdDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUU5RCxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFBO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEdBQUcsSUFBSTtRQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFFdEQsSUFBSSxDQUFDLFdBQVc7WUFBRSxNQUFNLDZCQUE2QixDQUFDLEVBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO1FBRTNFLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMxQixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFOUI7O2tEQUUwQztRQUMxQyxJQUFJLFNBQVMsQ0FBQTtRQUViLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLElBQUksRUFBRSxDQUFDLENBQUE7WUFDM0QsQ0FBQztZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDcEIsQ0FBQzthQUFNLElBQUksT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLGdDQUFnQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFBO1FBQ3hELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxZQUFZLEdBQUcsZ0NBQWdDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUU5RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2xELFNBQVMsR0FBRywyQ0FBMkMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQzdFLENBQUM7aUJBQU0sSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQzNCLFNBQVMsR0FBRyxFQUFFLENBQUE7Z0JBQ2QsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtZQUMvQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sU0FBUyxHQUFHLEVBQUUsQ0FBQTtnQkFDZCxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFBO1lBQy9CLENBQUM7WUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3RELENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBSdW5zIG1hbGZvcm1lZCBuZXN0ZWQgcGFyYW1zIGtleSBlcnJvci5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQXJncy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmtleSAtIFBhcmFtZXRlciBrZXkuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5yZXN0IC0gUmVtYWluaW5nIHVubWF0Y2hlZCBzZWdtZW50LlxuICogQHJldHVybnMge0Vycm9yfSAtIEVycm9yIHdpdGggcGFyc2VyIGNvbnRleHQgYXR0YWNoZWQuXG4gKi9cbmZ1bmN0aW9uIG1hbGZvcm1lZE5lc3RlZFBhcmFtc0tleUVycm9yKGFyZ3MpIHtcbiAgY29uc3Qge2tleSwgcmVzdH0gPSBhcmdzXG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBDb3VsZCBub3QgcGFyc2UgbmVzdGVkIHBhcmFtcyBrZXkgXCIke2tleX1cIiBhdCByZXN0IFwiJHtyZXN0fVwiYClcbiAgLyoqXG4gICAqIFR5cGVkIGVycm9yLlxuICAgKiBAdHlwZSB7RXJyb3IgJiB7dmVsb2Npb3VzQ29udGV4dD86IFJlY29yZDxzdHJpbmcsID8+fX0gKi9cbiAgY29uc3QgdHlwZWRFcnJvciA9IGVycm9yXG5cbiAgdHlwZWRFcnJvci52ZWxvY2lvdXNDb250ZXh0ID0ge1xuICAgIG5lc3RlZFBhcmFtc0tleToge1xuICAgICAga2V5LFxuICAgICAgcmVzdCxcbiAgICAgIHN0YWdlOiBcInBhcmFtcy10by1vYmplY3RcIlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvclxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJhbXNUb09iamVjdCB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsID8+fSBvYmplY3QgLSBPYmplY3QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvYmplY3QpIHtcbiAgICB0aGlzLm9iamVjdCA9IG9iamVjdFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdG8gb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgPz59IC0gVGhlIG9iamVjdC5cbiAgICovXG4gIHRvT2JqZWN0KCkge1xuICAgIC8qKlxuICAgICAqIFJlc3VsdC5cbiAgICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgPz59ICovXG4gICAgY29uc3QgcmVzdWx0ID0ge31cblxuICAgIGZvcihjb25zdCBrZXkgaW4gdGhpcy5vYmplY3QpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5vYmplY3Rba2V5XVxuXG4gICAgICB0aGlzLnRyZWF0SW5pdGlhbChrZXksIHZhbHVlLCByZXN1bHQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdHJlYXQgaW5pdGlhbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIEtleS5cbiAgICogQHBhcmFtIHs/fSB2YWx1ZSAtIFZhbHVlIHRvIHVzZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCA/PiB8IEFycmF5PD8+fSByZXN1bHQgLSBSZXN1bHQuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHRyZWF0SW5pdGlhbChrZXksIHZhbHVlLCByZXN1bHQpIHtcbiAgICBjb25zdCBmaXJzdE1hdGNoID0ga2V5Lm1hdGNoKC9eKC4rPykoXFxbKFtcXHNcXFNdKyQpKS8pXG5cbiAgICBpZiAoZmlyc3RNYXRjaCkge1xuICAgICAgY29uc3QgaW5wdXROYW1lID0gZmlyc3RNYXRjaFsxXVxuICAgICAgY29uc3QgcmVzdCA9IGZpcnN0TWF0Y2hbMl1cblxuICAgICAgLyoqXG4gICAgICAgKiBEZWZpbmVzIG5ld1Jlc3VsdC5cbiAgICAgICAqIEB0eXBlIHtBcnJheTw/PiB8IFJlY29yZDxzdHJpbmcsID8+fSAqL1xuICAgICAgbGV0IG5ld1Jlc3VsdFxuICAgICAgY29uc3Qgb2JqZWN0UmVzdWx0ID0gLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gKi8gKHJlc3VsdClcblxuICAgICAgaWYgKGlucHV0TmFtZSBpbiBvYmplY3RSZXN1bHQpIHtcbiAgICAgICAgbmV3UmVzdWx0ID0gLyoqIEB0eXBlIHtBcnJheTw/PiB8IFJlY29yZDxzdHJpbmcsID8+fSAqLyAob2JqZWN0UmVzdWx0W2lucHV0TmFtZV0pXG4gICAgICB9IGVsc2UgaWYgKHJlc3QgPT0gXCJbXVwiKSB7XG4gICAgICAgIG5ld1Jlc3VsdCA9IFtdXG4gICAgICAgIG9iamVjdFJlc3VsdFtpbnB1dE5hbWVdID0gbmV3UmVzdWx0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdSZXN1bHQgPSB7fVxuICAgICAgICBvYmplY3RSZXN1bHRbaW5wdXROYW1lXSA9IG5ld1Jlc3VsdFxuICAgICAgfVxuXG4gICAgICB0aGlzLnRyZWF0U2Vjb25kKHZhbHVlLCByZXN0LCBuZXdSZXN1bHQsIGtleSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb2JqZWN0UmVzdWx0ID0gLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gKi8gKHJlc3VsdClcblxuICAgICAgb2JqZWN0UmVzdWx0W2tleV0gPSB2YWx1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHRyZWF0IHNlY29uZC5cbiAgICogQHBhcmFtIHs/fSB2YWx1ZSAtIFZhbHVlIHRvIHVzZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlc3QgLSBSZXN0LlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsID8+IHwgQXJyYXk8Pz59IHJlc3VsdCAtIFJlc3VsdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtmdWxsS2V5XSAtIE9yaWdpbmFsIGZ1bGwga2V5LlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICB0cmVhdFNlY29uZCh2YWx1ZSwgcmVzdCwgcmVzdWx0LCBmdWxsS2V5ID0gcmVzdCkge1xuICAgIGNvbnN0IHNlY29uZE1hdGNoID0gcmVzdC5tYXRjaCgvXlxcWyguKj8pXFxdKFtcXHNcXFNdKikkLylcblxuICAgIGlmICghc2Vjb25kTWF0Y2gpIHRocm93IG1hbGZvcm1lZE5lc3RlZFBhcmFtc0tleUVycm9yKHtrZXk6IGZ1bGxLZXksIHJlc3R9KVxuXG4gICAgY29uc3Qga2V5ID0gc2Vjb25kTWF0Y2hbMV1cbiAgICBjb25zdCBuZXdSZXN0ID0gc2Vjb25kTWF0Y2hbMl1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgbmV3UmVzdWx0LlxuICAgICAqIEB0eXBlIHtBcnJheTw/PiB8IFJlY29yZDxzdHJpbmcsID8+fSAqL1xuICAgIGxldCBuZXdSZXN1bHRcblxuICAgIGlmIChyZXN0ID09IFwiW11cIikge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhcnJheSByZXN1bHQgZm9yIHJlc3QgJHtyZXN0fWApXG4gICAgICB9XG5cbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAobmV3UmVzdCA9PSBcIlwiKSB7XG4gICAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsID8+fSAqLyAocmVzdWx0KVtrZXldID0gdmFsdWVcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb2JqZWN0UmVzdWx0ID0gLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gKi8gKHJlc3VsdClcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJlc3VsdCkgJiYga2V5IGluIG9iamVjdFJlc3VsdCkge1xuICAgICAgICBuZXdSZXN1bHQgPSAvKiogQHR5cGUge0FycmF5PD8+IHwgUmVjb3JkPHN0cmluZywgPz59ICovIChvYmplY3RSZXN1bHRba2V5XSlcbiAgICAgIH0gZWxzZSBpZiAobmV3UmVzdCA9PSBcIltdXCIpIHtcbiAgICAgICAgbmV3UmVzdWx0ID0gW11cbiAgICAgICAgb2JqZWN0UmVzdWx0W2tleV0gPSBuZXdSZXN1bHRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1Jlc3VsdCA9IHt9XG4gICAgICAgIG9iamVjdFJlc3VsdFtrZXldID0gbmV3UmVzdWx0XG4gICAgICB9XG5cbiAgICAgIHRoaXMudHJlYXRTZWNvbmQodmFsdWUsIG5ld1Jlc3QsIG5ld1Jlc3VsdCwgZnVsbEtleSlcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/http-server/client/request-buffer/index.js"],"names":[],"mappings":"AAuBA;IA0BE;;;;OAIG;IACH,+BAFG;QAA0D,aAAa,EAA/D,OAAO,2BAA2B,EAAE,OAAO;KACrD,EAIA;IAjCD,mBAAc;IAEd;;0BAEsB;IACtB,MADU,MAAM,EAAE,CACT;IAET,mEAA2B;IAE3B;;wCAEoC;IACpC,eADU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACd;IAClB;;sCAEkC;IAClC,kBADU,MAAM,EAAE,GAAG,SAAS,CACF;IAE5B,4BAA0B;IAE1B,mBAAiB;IACjB,WAAW;IACX,qBAAmB;IACnB,cAAgB;IAQd,2DAAkC;IAClC,eAA8C;IAGhD,gBAEC;IAED;;;;OAIG;IACH,WAHW,MAAM,GACJ,MAAM,GAAG,SAAS,CA8G9B;IAzEO,0CAAkD;IAGhD,0BAA6B;IAwEvC;;;;OAIG;IACH,gBAHW,MAAM,GACJ,MAAM,CAQlB;IAED;;;OAGG;IACH,kBAFa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAelC;IAED;;;OAGG;IACH,oBAFa,IAAI,CAWhB;IAJC,uCAA6B;IAM/B,gCAEC;IAED;;;OAGG;IACH,mBAFa,IAAI,CAKhB;IAED;;;;OAIG;IACH,YAHW,MAAM,GACJ,IAAI,CAoChB;IAED;;;;OAIG;IACH,yBAHW,MAAM,GACJ,MAAM,GAAG,SAAS,CAU9B;IAED;;;OAGG;IACH,kBAFW,MAAM,QAQhB;IADwC,kCAAgD;IAGzF;;;;OAIG;IACH,kBAHW,MAAM,GACJ,IAAI,CAkDhB;IAvBO,6BAAwB;IACxB,iCAA4C;IAC5C,qCAAoD;IACpD,oCAAiD;IAQjD;;0BAEsB;IACtB,oCAAuB;IAW/B;;;;OAIG;IACH,sBAHW,MAAM,GACJ,IAAI,CAchB;IALC,+BAA0B;IAC1B,gCAA2B;IAC3B,yBAAoB;IAKtB,wBASC;IAPG,6BAAgE;IASpE;;;;OAIG;IACH,+BAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;OAGG;IACH,qBAFa,OAAO,CAMnB;IAED;;;OAGG;IACH,yBAFa,IAAI,CAOhB;IAHC,qCAAiC;IAKnC;;;;OAIG;IACH,yBAHW,MAAM,GACJ,IAAI,CAuBhB;IAED;;;OAGG;IACH,qBAFa,IAAI,CAQhB;IAED;;;;OAIG;IACH,mBAHW,MAAM,GACJ,IAAI,CAKhB;IAED,4BAaC;IAED,mCAMC;IAED,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/http-server/client/request-buffer/index.js"],"names":[],"mappings":"AAuBA;IA0BE;;;;OAIG;IACH,+BAFG;QAA0D,aAAa,EAA/D,OAAO,2BAA2B,EAAE,OAAO;KACrD,EAIA;IAjCD,mBAAc;IAEd;;0BAEsB;IACtB,MADU,MAAM,EAAE,CACT;IAET,mEAA2B;IAE3B;;wCAEoC;IACpC,eADU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACd;IAClB;;sCAEkC;IAClC,kBADU,MAAM,EAAE,GAAG,SAAS,CACF;IAE5B,4BAA0B;IAE1B,mBAAiB;IACjB,WAAW;IACX,qBAAmB;IACnB,cAAgB;IAQd,2DAAkC;IAClC,eAA8C;IAGhD,gBAEC;IAED;;;;OAIG;IACH,WAHW,MAAM,GACJ,MAAM,GAAG,SAAS,CA8G9B;IAzEO,0CAAkD;IAGhD,0BAA6B;IAwEvC;;;;OAIG;IACH,gBAHW,MAAM,GACJ,MAAM,CAQlB;IAED;;;OAGG;IACH,kBAFa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAelC;IAED;;;OAGG;IACH,oBAFa,IAAI,CAWhB;IAJC,uCAA6B;IAM/B,gCAEC;IAED;;;OAGG;IACH,mBAFa,IAAI,CAKhB;IAED;;;;OAIG;IACH,YAHW,MAAM,GACJ,IAAI,CAoChB;IAED;;;;OAIG;IACH,yBAHW,MAAM,GACJ,MAAM,GAAG,SAAS,CAU9B;IAED;;;OAGG;IACH,kBAFW,MAAM,QAQhB;IADwC,kCAAgD;IAGzF;;;;OAIG;IACH,kBAHW,MAAM,GACJ,IAAI,CAkDhB;IAvBO,6BAAwB;IACxB,iCAA4C;IAC5C,qCAAoD;IACpD,oCAAiD;IAQjD;;0BAEsB;IACtB,oCAAuB;IAW/B;;;;OAIG;IACH,sBAHW,MAAM,GACJ,IAAI,CAchB;IALC,+BAA0B;IAC1B,gCAA2B;IAC3B,yBAAoB;IAKtB,wBASC;IAPG,6BAAgE;IASpE;;;;OAIG;IACH,+BAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;OAGG;IACH,qBAFa,OAAO,CAMnB;IAED;;;OAGG;IACH,yBAFa,IAAI,CAOhB;IAHC,qCAAiC;IAKnC;;;;OAIG;IACH,yBAHW,MAAM,GACJ,IAAI,CAuBhB;IAED;;;OAGG;IACH,qBAFa,IAAI,CAQhB;IAED;;;;OAIG;IACH,mBAHW,MAAM,GACJ,IAAI,CAKhB;IAED,4BAaC;IAED,mCAMC;IAED,mCAqCC;CACF;mBAhhBkB,aAAa;mBAEb,oBAAoB;yBAHd,qBAAqB"}
|