@nlabs/reaktor 1.7.0 → 1.9.0
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/README.md +75 -0
- package/lib/actions/analytics.js +1 -1
- package/lib/actions/apps.js +1 -1
- package/lib/actions/connections.js +1 -1
- package/lib/actions/content.js +1 -1
- package/lib/actions/conversations.js +1 -1
- package/lib/actions/crm.d.ts +7 -1
- package/lib/actions/crm.js +224 -17
- package/lib/actions/crud.js +1 -1
- package/lib/actions/dynamodb.js +1 -1
- package/lib/actions/email.js +1 -1
- package/lib/actions/files.js +1 -1
- package/lib/actions/flags.js +1 -1
- package/lib/actions/groups.js +1 -1
- package/lib/actions/images.js +1 -1
- package/lib/actions/index.js +1 -1
- package/lib/actions/ios.js +1 -1
- package/lib/actions/locations.js +1 -1
- package/lib/actions/messages.js +1 -1
- package/lib/actions/notifications.js +1 -1
- package/lib/actions/payments.js +1 -1
- package/lib/actions/personas.js +1 -1
- package/lib/actions/posts.js +1 -1
- package/lib/actions/query.js +1 -1
- package/lib/actions/reactions.js +1 -1
- package/lib/actions/rum.js +14 -9
- package/lib/actions/s3.js +1 -1
- package/lib/actions/search.js +1 -1
- package/lib/actions/sms.js +1 -1
- package/lib/actions/statistics.js +1 -1
- package/lib/actions/subscriptions.js +1 -1
- package/lib/actions/tags.js +1 -1
- package/lib/actions/users.d.ts +4 -1
- package/lib/actions/users.js +28 -7
- package/lib/actions/videos.js +1 -1
- package/lib/adapters/arangoAdapter.js +1 -1
- package/lib/adapters/contentAdapter.js +1 -1
- package/lib/adapters/fileAdapter.js +1 -1
- package/lib/adapters/imageAdapter.js +1 -1
- package/lib/adapters/index.js +1 -1
- package/lib/adapters/messageAdapter.js +1 -1
- package/lib/adapters/postAdapter.js +1 -1
- package/lib/adapters/reaktorAdapter.js +1 -1
- package/lib/adapters/tagAdapter.js +1 -1
- package/lib/adapters/userAdapter.js +1 -1
- package/lib/config.js +1 -1
- package/lib/constants/collections.d.ts +12 -0
- package/lib/constants/collections.js +13 -1
- package/lib/durableChat/conversations.d.ts +62 -0
- package/lib/durableChat/conversations.js +729 -0
- package/lib/durableChat/errors.d.ts +6 -0
- package/lib/durableChat/errors.js +11 -0
- package/lib/durableChat/events.d.ts +22 -0
- package/lib/durableChat/events.js +50 -0
- package/lib/durableChat/index.d.ts +8 -0
- package/lib/durableChat/index.js +10 -0
- package/lib/durableChat/membership.d.ts +24 -0
- package/lib/durableChat/membership.js +85 -0
- package/lib/durableChat/messageTypes.d.ts +76 -0
- package/lib/durableChat/messageTypes.js +3 -0
- package/lib/durableChat/messages.d.ts +16 -0
- package/lib/durableChat/messages.js +257 -0
- package/lib/durableChat/transaction.d.ts +10 -0
- package/lib/durableChat/transaction.js +53 -0
- package/lib/durableChat/types.d.ts +81 -0
- package/lib/durableChat/types.js +3 -0
- package/lib/handlers/graphqlHandler.js +1 -1
- package/lib/index.d.ts +4 -1
- package/lib/index.js +4 -2
- package/lib/lambdas/actions/websockets.js +1 -1
- package/lib/lambdas/authorizer.js +1 -1
- package/lib/lambdas/connection.js +1 -1
- package/lib/lambdas/utils/message.js +1 -1
- package/lib/lambdas/utils/websocket.js +1 -1
- package/lib/mocks/conversation.js +1 -1
- package/lib/mocks/file.js +1 -1
- package/lib/mocks/group.js +1 -1
- package/lib/mocks/image.js +1 -1
- package/lib/mocks/post.js +1 -1
- package/lib/mocks/tag.js +1 -1
- package/lib/mocks/user.js +1 -1
- package/lib/mocks/video.js +1 -1
- package/lib/mutations/analytics/analytics.js +1 -1
- package/lib/mutations/content/content.js +1 -1
- package/lib/mutations/crm/crm.js +43 -11
- package/lib/mutations/events/events.js +1 -1
- package/lib/mutations/flags/flags.js +1 -1
- package/lib/mutations/groups/groups.js +1 -1
- package/lib/mutations/images/images.js +1 -1
- package/lib/mutations/index.js +1 -1
- package/lib/mutations/locations/locations.js +1 -1
- package/lib/mutations/messages/messages.js +1 -1
- package/lib/mutations/personas/personas.js +1 -1
- package/lib/mutations/posts/posts.js +1 -1
- package/lib/mutations/reactions/reactions.js +1 -1
- package/lib/mutations/rum/rum.js +1 -1
- package/lib/mutations/statistics/statistics.js +1 -1
- package/lib/mutations/subscriptions/subscriptions.js +1 -1
- package/lib/mutations/tags/tags.js +1 -1
- package/lib/mutations/users/users.js +1 -1
- package/lib/mutations/videos/videos.js +1 -1
- package/lib/objectTypes/analytics.js +1 -1
- package/lib/objectTypes/app.js +1 -1
- package/lib/objectTypes/bankAccount.js +1 -1
- package/lib/objectTypes/connection.js +1 -1
- package/lib/objectTypes/content.js +1 -1
- package/lib/objectTypes/conversation.js +1 -1
- package/lib/objectTypes/creditCard.js +1 -1
- package/lib/objectTypes/crm.js +5 -1
- package/lib/objectTypes/document.js +1 -1
- package/lib/objectTypes/error.js +1 -1
- package/lib/objectTypes/event.js +1 -1
- package/lib/objectTypes/external.js +1 -1
- package/lib/objectTypes/file.js +1 -1
- package/lib/objectTypes/filter.js +1 -1
- package/lib/objectTypes/flag.js +5 -2
- package/lib/objectTypes/group.js +1 -1
- package/lib/objectTypes/iapSubscription.js +1 -1
- package/lib/objectTypes/image.js +1 -1
- package/lib/objectTypes/index.js +1 -1
- package/lib/objectTypes/location.js +1 -1
- package/lib/objectTypes/message.js +1 -1
- package/lib/objectTypes/passcode.js +1 -1
- package/lib/objectTypes/persona.js +1 -1
- package/lib/objectTypes/plan.js +1 -1
- package/lib/objectTypes/post.js +1 -1
- package/lib/objectTypes/query.js +1 -1
- package/lib/objectTypes/reaction.js +1 -1
- package/lib/objectTypes/relation.js +1 -1
- package/lib/objectTypes/rum.js +1 -1
- package/lib/objectTypes/search.js +1 -1
- package/lib/objectTypes/statistics.js +1 -1
- package/lib/objectTypes/subscription.js +1 -1
- package/lib/objectTypes/tag.js +1 -1
- package/lib/objectTypes/user.js +9 -1
- package/lib/objectTypes/video.js +1 -1
- package/lib/queries/analytics/analytics.js +1 -1
- package/lib/queries/content/content.js +1 -1
- package/lib/queries/crm/crm.js +41 -13
- package/lib/queries/events/events.js +1 -1
- package/lib/queries/flags/flags.js +1 -1
- package/lib/queries/groups/groups.js +1 -1
- package/lib/queries/images/images.js +1 -1
- package/lib/queries/index.js +1 -1
- package/lib/queries/locations/locations.js +1 -1
- package/lib/queries/messages/messages.js +1 -1
- package/lib/queries/personas/personas.js +1 -1
- package/lib/queries/posts/posts.js +1 -1
- package/lib/queries/query/query.js +1 -1
- package/lib/queries/reactions/reactions.js +1 -1
- package/lib/queries/statistics/statistics.js +1 -1
- package/lib/queries/subscriptions/subscriptions.js +1 -1
- package/lib/queries/tags/tags.js +1 -1
- package/lib/queries/users/users.js +1 -1
- package/lib/queries/videos/videos.js +1 -1
- package/lib/templates/email/layout.js +1 -1
- package/lib/templates/email/passwordForgot.js +1 -1
- package/lib/templates/email/passwordRecovery.js +1 -1
- package/lib/templates/email/verifyEmail.js +1 -1
- package/lib/templates/email/welcome.js +1 -1
- package/lib/templates/sms/passwordForgot.js +1 -1
- package/lib/templates/sms/passwordRecovery.js +1 -1
- package/lib/templates/sms/verifyEmail.js +1 -1
- package/lib/templates/sms/verifyPhone.js +1 -1
- package/lib/templates/sms/welcome.js +1 -1
- package/lib/types/analytics.types.js +1 -1
- package/lib/types/apps.types.js +1 -1
- package/lib/types/arangodb.types.d.ts +1 -1
- package/lib/types/arangodb.types.js +1 -1
- package/lib/types/auth.types.d.ts +1 -0
- package/lib/types/auth.types.js +1 -1
- package/lib/types/connections.types.js +1 -1
- package/lib/types/content.types.js +1 -1
- package/lib/types/conversations.types.js +1 -1
- package/lib/types/crm.types.d.ts +20 -1
- package/lib/types/crm.types.js +1 -1
- package/lib/types/email.types.js +1 -1
- package/lib/types/error.types.js +1 -1
- package/lib/types/files.types.js +1 -1
- package/lib/types/flags.types.js +1 -1
- package/lib/types/google.types.js +1 -1
- package/lib/types/groups.types.js +1 -1
- package/lib/types/images.types.js +1 -1
- package/lib/types/index.js +1 -1
- package/lib/types/locations.types.js +1 -1
- package/lib/types/messages.types.js +1 -1
- package/lib/types/notifications.types.js +1 -1
- package/lib/types/payments.types.js +1 -1
- package/lib/types/personas.types.js +1 -1
- package/lib/types/posts.types.js +1 -1
- package/lib/types/rum.types.js +1 -1
- package/lib/types/statistics.types.js +1 -1
- package/lib/types/tags.types.js +1 -1
- package/lib/types/users.types.d.ts +1 -0
- package/lib/types/users.types.js +1 -1
- package/lib/types/videos.types.js +1 -1
- package/lib/types/websockets.types.js +1 -1
- package/lib/upload.js +1 -1
- package/lib/utils/adapterUtils.js +1 -1
- package/lib/utils/analyticsUtils.js +1 -1
- package/lib/utils/appContext.d.ts +2 -0
- package/lib/utils/appContext.js +10 -0
- package/lib/utils/aqlHelpers.js +1 -1
- package/lib/utils/arangodbUtils.js +1 -1
- package/lib/utils/authUtils.js +1 -1
- package/lib/utils/awsUtils.js +1 -1
- package/lib/utils/collectionRegistry.js +1 -1
- package/lib/utils/contextUtils.js +1 -1
- package/lib/utils/dbI18n.example.js +1 -1
- package/lib/utils/dbI18n.js +1 -1
- package/lib/utils/googleTranslate.js +1 -1
- package/lib/utils/graphqlUtils.d.ts +1 -0
- package/lib/utils/graphqlUtils.js +1 -1
- package/lib/utils/imageUtils.js +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/languageDetection.js +1 -1
- package/lib/utils/localeUtils.example.js +1 -1
- package/lib/utils/localeUtils.js +1 -1
- package/lib/utils/middlewareUtils.js +1 -1
- package/lib/utils/queryBuilder.js +1 -1
- package/lib/utils/schemaUtils.js +1 -1
- package/lib/utils/sessionUtils.d.ts +4 -0
- package/lib/utils/sessionUtils.js +1 -1
- package/lib/utils/stripeUtils.js +2 -1
- package/lib/utils/templateUtils.js +1 -1
- package/lib/utils/testUtils.js +1 -1
- package/lib/utils/translationQueue.example.js +1 -1
- package/lib/utils/translationQueue.js +1 -1
- package/lib/videoProcessing.js +1 -1
- package/package.json +19 -19
package/lib/actions/query.js
CHANGED
|
@@ -94,4 +94,4 @@ const eventCategory = 'query';
|
|
|
94
94
|
}
|
|
95
95
|
};
|
|
96
96
|
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvcXVlcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFeGNlcHRpb259IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuaW1wb3J0IHtcbiAgYnVpbGRBZ2dyZWdhdGlvblF1ZXJ5LFxuICBidWlsZFF1ZXJ5LFxuICBidWlsZFNlYXJjaFF1ZXJ5LFxuICB2YWxpZGF0ZUFnZ3JlZ2F0aW9uT3B0aW9ucyxcbiAgdmFsaWRhdGVRdWVyeU9wdGlvbnMsXG4gIHZhbGlkYXRlU2VhcmNoT3B0aW9uc1xufSBmcm9tICcuLi91dGlscy9xdWVyeUJ1aWxkZXIuanMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFnZ3JlZ2F0aW9uT3B0aW9ucyxcbiAgUXVlcnlPcHRpb25zLFxuICBTZWFyY2hPcHRpb25zXG59IGZyb20gJy4uL3R5cGVzL2FyYW5nb2RiLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdxdWVyeSc7XG5cbi8qKlxuICogRXhlY3V0ZSBhIGZsZXhpYmxlIHF1ZXJ5IGFnYWluc3QgYW55IGNvbGxlY3Rpb25cbiAqIEBwYXJhbSBjb250ZXh0IC0gQVBJIGNvbnRleHQgd2l0aCBzZXNzaW9uIGFuZCBkYXRhYmFzZSBpbmZvXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFF1ZXJ5IG9wdGlvbnMgaW5jbHVkaW5nIGNvbGxlY3Rpb24sIGZpbHRlcnMsIHNvcnQsIGxpbWl0LCBldGMuXG4gKiBAcmV0dXJucyBBcnJheSBvZiBkb2N1bWVudHMgbWF0Y2hpbmcgdGhlIHF1ZXJ5XG4gKi9cbmV4cG9ydCBjb25zdCBleGVjdXRlUXVlcnkgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIG9wdGlvbnM6IFF1ZXJ5T3B0aW9uc1xuKTogUHJvbWlzZTxhbnlbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZXhlY3V0ZVF1ZXJ5JztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuXG4gIHRyeSB7XG4gICAgLy8gVmFsaWRhdGUgcXVlcnkgb3B0aW9uc1xuICAgIHZhbGlkYXRlUXVlcnlPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgLy8gQnVpbGQgdGhlIHF1ZXJ5XG4gICAgY29uc3QgcXVlcnkgPSBidWlsZFF1ZXJ5KG9wdGlvbnMpO1xuXG4gICAgLy8gRXhlY3V0ZSBxdWVyeVxuICAgIGNvbnN0IGRiID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgICBjb25zdCBjdXJzb3IgPSBhd2FpdCBkYi5xdWVyeShxdWVyeSk7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGN1cnNvci5hbGwoKTtcblxuICAgIHJldHVybiByZXN1bHRzO1xuICB9IGNhdGNoKGVycm9yOiBhbnkpIHtcbiAgICB0aHJvdyBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgIHZhbHVlOiBlcnJvci5tZXNzYWdlXG4gICAgfSwgY29udGV4dCk7XG4gIH1cbn07XG5cbi8qKlxuICogRXhlY3V0ZSBhbiBhZ2dyZWdhdGlvbiBxdWVyeSAoQ09VTlQsIFNVTSwgQVZHLCBNSU4sIE1BWClcbiAqIEBwYXJhbSBjb250ZXh0IC0gQVBJIGNvbnRleHRcbiAqIEBwYXJhbSBvcHRpb25zIC0gQWdncmVnYXRpb24gb3B0aW9uc1xuICogQHJldHVybnMgQWdncmVnYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBjb25zdCBleGVjdXRlQWdncmVnYXRpb24gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIG9wdGlvbnM6IEFnZ3JlZ2F0aW9uT3B0aW9uc1xuKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2V4ZWN1dGVBZ2dyZWdhdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcblxuICB0cnkge1xuICAgIC8vIFZhbGlkYXRlIGFnZ3JlZ2F0aW9uIG9wdGlvbnNcbiAgICB2YWxpZGF0ZUFnZ3JlZ2F0aW9uT3B0aW9ucyhvcHRpb25zKTtcblxuICAgIC8vIEJ1aWxkIHRoZSBhZ2dyZWdhdGlvbiBxdWVyeVxuICAgIGNvbnN0IHF1ZXJ5ID0gYnVpbGRBZ2dyZWdhdGlvblF1ZXJ5KG9wdGlvbnMpO1xuXG4gICAgLy8gRXhlY3V0ZSBxdWVyeVxuICAgIGNvbnN0IGRiID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgICBjb25zdCBjdXJzb3IgPSBhd2FpdCBkYi5xdWVyeShxdWVyeSk7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGN1cnNvci5hbGwoKTtcblxuICAgIC8vIFJldHVybiB0aGUgZmlyc3QgcmVzdWx0IChhZ2dyZWdhdGlvbnMgcmV0dXJuIHNpbmdsZSB2YWx1ZSlcbiAgICAvLyBJZiBubyByZXN1bHQsIHJldHVybiBhIHByb3Blcmx5IHR5cGVkIGRlZmF1bHRcbiAgICByZXR1cm4gcmVzdWx0c1swXSB8fCB7XG4gICAgICBmaWVsZDogb3B0aW9ucy5maWVsZCB8fCBudWxsLFxuICAgICAgdHlwZTogb3B0aW9ucy50eXBlLFxuICAgICAgdmFsdWU6IG51bGxcbiAgICB9O1xuICB9IGNhdGNoKGVycm9yOiBhbnkpIHtcbiAgICB0aHJvdyBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgIHZhbHVlOiBlcnJvci5tZXNzYWdlXG4gICAgfSwgY29udGV4dCk7XG4gIH1cbn07XG5cbi8qKlxuICogRXhlY3V0ZSBhIG11bHRpLWNvbGxlY3Rpb24gc2VhcmNoXG4gKiBAcGFyYW0gY29udGV4dCAtIEFQSSBjb250ZXh0XG4gKiBAcGFyYW0gb3B0aW9ucyAtIFNlYXJjaCBvcHRpb25zIGluY2x1ZGluZyBjb2xsZWN0aW9ucywgcXVlcnkgc3RyaW5nLCBhbmQgZmlsdGVyc1xuICogQHJldHVybnMgQXJyYXkgb2YgZG9jdW1lbnRzIGZyb20gbXVsdGlwbGUgY29sbGVjdGlvbnMgbWF0Y2hpbmcgdGhlIHNlYXJjaFxuICovXG5leHBvcnQgY29uc3QgZXhlY3V0ZVNlYXJjaCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgb3B0aW9uczogU2VhcmNoT3B0aW9uc1xuKTogUHJvbWlzZTxhbnlbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZXhlY3V0ZVNlYXJjaCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcblxuICB0cnkge1xuICAgIC8vIFZhbGlkYXRlIHNlYXJjaCBvcHRpb25zXG4gICAgdmFsaWRhdGVTZWFyY2hPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgLy8gQnVpbGQgdGhlIHNlYXJjaCBxdWVyeVxuICAgIGNvbnN0IHF1ZXJ5ID0gYnVpbGRTZWFyY2hRdWVyeShvcHRpb25zKTtcblxuICAgIC8vIEV4ZWN1dGUgcXVlcnlcbiAgICBjb25zdCBkYiA9IHVzZURiKGRhdGFiYXNlTmFtZSk7XG4gICAgY29uc3QgY3Vyc29yID0gYXdhaXQgZGIucXVlcnkocXVlcnkpO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBjdXJzb3IuYWxsKCk7XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfSBjYXRjaChlcnJvcjogYW55KSB7XG4gICAgdGhyb3cgbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICB2YWx1ZTogZXJyb3IubWVzc2FnZVxuICAgIH0sIGNvbnRleHQpO1xuICB9XG59O1xuIl0sIm5hbWVzIjpbIkVycm9yVHlwZXMiLCJsb2dFeGNlcHRpb24iLCJ1c2VEYiIsImJ1aWxkQWdncmVnYXRpb25RdWVyeSIsImJ1aWxkUXVlcnkiLCJidWlsZFNlYXJjaFF1ZXJ5IiwidmFsaWRhdGVBZ2dyZWdhdGlvbk9wdGlvbnMiLCJ2YWxpZGF0ZVF1ZXJ5T3B0aW9ucyIsInZhbGlkYXRlU2VhcmNoT3B0aW9ucyIsImV2ZW50Q2F0ZWdvcnkiLCJleGVjdXRlUXVlcnkiLCJjb250ZXh0Iiwib3B0aW9ucyIsImFjdGlvbiIsImRhdGFiYXNlTmFtZSIsInF1ZXJ5IiwiZGIiLCJjdXJzb3IiLCJyZXN1bHRzIiwiYWxsIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiREFUQUJBU0VfRVJST1IiLCJ2YWx1ZSIsIm1lc3NhZ2UiLCJleGVjdXRlQWdncmVnYXRpb24iLCJmaWVsZCIsInR5cGUiLCJleGVjdXRlU2VhcmNoIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxVQUFVLFFBQU8sMEJBQTBCO0FBQ25ELFNBQVFDLFlBQVksUUFBTyw2QkFBNkI7QUFDeEQsU0FBUUMsS0FBSyxRQUFPLDRCQUE0QjtBQUNoRCxTQUNFQyxxQkFBcUIsRUFDckJDLFVBQVUsRUFDVkMsZ0JBQWdCLEVBQ2hCQywwQkFBMEIsRUFDMUJDLG9CQUFvQixFQUNwQkMscUJBQXFCLFFBQ2hCLDJCQUEyQjtBQVNsQyxNQUFNQyxnQkFBZ0I7QUFFdEI7Ozs7O0NBS0MsR0FDRCxPQUFPLE1BQU1DLGVBQWUsT0FDMUJDLFNBQ0FDO0lBRUEsTUFBTUMsU0FBUztJQUNmLE1BQU0sRUFBQ0MsWUFBWSxFQUFDLEdBQUdIO0lBRXZCLElBQUk7UUFDRix5QkFBeUI7UUFDekJKLHFCQUFxQks7UUFFckIsa0JBQWtCO1FBQ2xCLE1BQU1HLFFBQVFYLFdBQVdRO1FBRXpCLGdCQUFnQjtRQUNoQixNQUFNSSxLQUFLZCxNQUFNWTtRQUNqQixNQUFNRyxTQUFTLE1BQU1ELEdBQUdELEtBQUssQ0FBQ0E7UUFDOUIsTUFBTUcsVUFBVSxNQUFNRCxPQUFPRSxHQUFHO1FBRWhDLE9BQU9EO0lBQ1QsRUFBRSxPQUFNRSxPQUFZO1FBQ2xCLE1BQU1uQixhQUFhO1lBQ2pCWTtZQUNBUSxVQUFVWjtZQUNWYSxPQUFPdEIsV0FBV3VCLGNBQWM7WUFDaENDLE9BQU9KLE1BQU1LLE9BQU87UUFDdEIsR0FBR2Q7SUFDTDtBQUNGLEVBQUU7QUFFRjs7Ozs7Q0FLQyxHQUNELE9BQU8sTUFBTWUscUJBQXFCLE9BQ2hDZixTQUNBQztJQUVBLE1BQU1DLFNBQVM7SUFDZixNQUFNLEVBQUNDLFlBQVksRUFBQyxHQUFHSDtJQUV2QixJQUFJO1FBQ0YsK0JBQStCO1FBQy9CTCwyQkFBMkJNO1FBRTNCLDhCQUE4QjtRQUM5QixNQUFNRyxRQUFRWixzQkFBc0JTO1FBRXBDLGdCQUFnQjtRQUNoQixNQUFNSSxLQUFLZCxNQUFNWTtRQUNqQixNQUFNRyxTQUFTLE1BQU1ELEdBQUdELEtBQUssQ0FBQ0E7UUFDOUIsTUFBTUcsVUFBVSxNQUFNRCxPQUFPRSxHQUFHO1FBRWhDLDZEQUE2RDtRQUM3RCxnREFBZ0Q7UUFDaEQsT0FBT0QsT0FBTyxDQUFDLEVBQUUsSUFBSTtZQUNuQlMsT0FBT2YsUUFBUWUsS0FBSyxJQUFJO1lBQ3hCQyxNQUFNaEIsUUFBUWdCLElBQUk7WUFDbEJKLE9BQU87UUFDVDtJQUNGLEVBQUUsT0FBTUosT0FBWTtRQUNsQixNQUFNbkIsYUFBYTtZQUNqQlk7WUFDQVEsVUFBVVo7WUFDVmEsT0FBT3RCLFdBQVd1QixjQUFjO1lBQ2hDQyxPQUFPSixNQUFNSyxPQUFPO1FBQ3RCLEdBQUdkO0lBQ0w7QUFDRixFQUFFO0FBRUY7Ozs7O0NBS0MsR0FDRCxPQUFPLE1BQU1rQixnQkFBZ0IsT0FDM0JsQixTQUNBQztJQUVBLE1BQU1DLFNBQVM7SUFDZixNQUFNLEVBQUNDLFlBQVksRUFBQyxHQUFHSDtJQUV2QixJQUFJO1FBQ0YsMEJBQTBCO1FBQzFCSCxzQkFBc0JJO1FBRXRCLHlCQUF5QjtRQUN6QixNQUFNRyxRQUFRVixpQkFBaUJPO1FBRS9CLGdCQUFnQjtRQUNoQixNQUFNSSxLQUFLZCxNQUFNWTtRQUNqQixNQUFNRyxTQUFTLE1BQU1ELEdBQUdELEtBQUssQ0FBQ0E7UUFDOUIsTUFBTUcsVUFBVSxNQUFNRCxPQUFPRSxHQUFHO1FBRWhDLE9BQU9EO0lBQ1QsRUFBRSxPQUFNRSxPQUFZO1FBQ2xCLE1BQU1uQixhQUFhO1lBQ2pCWTtZQUNBUSxVQUFVWjtZQUNWYSxPQUFPdEIsV0FBV3VCLGNBQWM7WUFDaENDLE9BQU9KLE1BQU1LLE9BQU87UUFDdEIsR0FBR2Q7SUFDTDtBQUNGLEVBQUUifQ==
|
package/lib/actions/reactions.js
CHANGED
|
@@ -653,4 +653,4 @@ export const hasReaction = async (context, itemId, reactionName, direction = 'OU
|
|
|
653
653
|
}
|
|
654
654
|
};
|
|
655
655
|
|
|
656
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC9ubGFicy1yZWFrdG9yLXJlbGVhc2UuZU1RNVNoL2NoZWNrb3V0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvcmVhY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge3BhcnNlTnVtfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9udW1iZXJzJztcbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VBcmFuZ29JZCwgcGFyc2VDaGFyLCBwYXJzZUlkLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeSwgbGl0ZXJhbH0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtDT0xMRUNUSU9OUywgRURHRVN9IGZyb20gJy4uL2NvbnN0YW50cy9jb2xsZWN0aW9ucy5qcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7Z2V0Q29ubmVjdGlvbnNCeVVzZXJ9IGZyb20gJy4uL2xhbWJkYXMvYWN0aW9ucy93ZWJzb2NrZXRzLmpzJztcbmltcG9ydCB7d3NDbGllbnR9IGZyb20gJy4uL2xhbWJkYXMvdXRpbHMvd2Vic29ja2V0LmpzJztcbmltcG9ydCB7bG9nRXJyb3IsIGxvZ0V4Y2VwdGlvbn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHtidWlsZEZpbHRlckNsYXVzZX0gZnJvbSAnLi4vdXRpbHMvYXFsSGVscGVycy5qcyc7XG5pbXBvcnQge2dldExpbWl0LCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge2dldEltYWdlQnlJZH0gZnJvbSAnLi9pbWFnZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7RWRnZUNvbGxlY3Rpb259IGZyb20gJ2FyYW5nb2pzL2NvbGxlY3Rpb25zJztcbmltcG9ydCB0eXBlIHtRdWVyeUZpbHRlcn0gZnJvbSAnLi4vdHlwZXMvYXBwcy50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QXJhbmdvRGJDb2xsZWN0aW9uLCBBcmFuZ29EYkxpbWl0LCBGaWx0ZXJDb25kaXRpb24sIEZpbHRlck9wZXJhdG9yfSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7VXNlclJlYWN0aW9uUXVlcnksIFVzZXJUeXBlfSBmcm9tICcuLi90eXBlcy91c2Vycy50eXBlcy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAncmVhY3Rpb25zJztcbmNvbnN0IGhhc1JlYWN0aW9uQ29sbGVjdGlvbiA9IGxpdGVyYWwoRURHRVMuSEFTX1JFQUNUSU9OKTtcbmNvbnN0IHVzZXJzQ29sbGVjdGlvbiA9IGxpdGVyYWwoQ09MTEVDVElPTlMuVVNFUlMpO1xuY29uc3QgUEhPVE9fUkVBQ1RJT05fTkFNRVMgPSBbJ2Rpc2xpa2UnLCAnbGlrZScsICdzYXZlZCddIGFzIGNvbnN0O1xuY29uc3QgT1BQT1NJTkdfUkVBQ1RJT05fTkFNRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRpc2xpa2U6ICdsaWtlJyxcbiAgbGlrZTogJ2Rpc2xpa2UnXG59O1xuXG5leHBvcnQgdHlwZSBSZWFjdGlvbkRpcmVjdGlvbiA9ICdJTkJPVU5EJyB8ICdPVVRCT1VORCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3Rpb24ge1xuICByZWFkb25seSBfZnJvbT86IHN0cmluZztcbiAgcmVhZG9ubHkgX2tleT86IHN0cmluZztcbiAgcmVhZG9ubHkgX3RvPzogc3RyaW5nO1xuICByZWFkb25seSBhZGRlZD86IG51bWJlcjtcbiAgcmVhZG9ubHkgY291bnQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB0eXBlPzogQXJhbmdvRGJDb2xsZWN0aW9uO1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdGlvbk9wdGlvbnMge1xuICByZWFkb25seSBmcm9tPzogbnVtYmVyO1xuICByZWFkb25seSB0bz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJzb25hUmVhY3Rpb24ge1xuICByZWFkb25seSBfZnJvbT86IHN0cmluZztcbiAgcmVhZG9ubHkgX2tleT86IHN0cmluZztcbiAgcmVhZG9ubHkgX3RvPzogc3RyaW5nO1xuICByZWFkb25seSBhZGRlZD86IG51bWJlcjtcbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgcGFyc2VSZWFjdGlvbk9wdGlvbnMgPSAob3B0aW9uczogUmVhY3Rpb25PcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGZyb20gPSAwLFxuICAgIHRvID0gMzBcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBsaW1pdDogZ2V0TGltaXQoZnJvbSwgdG8pIGFzIEFyYW5nb0RiTGltaXRcbiAgfTtcbn07XG5cbmNvbnN0IGVtaXRQaG90b1JlYWN0aW9uVXBkYXRlID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBub3JtYWxpemVkUmVhY3Rpb25OYW1lID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuXG4gIGlmKCFQSE9UT19SRUFDVElPTl9OQU1FUy5pbmNsdWRlcyhub3JtYWxpemVkUmVhY3Rpb25OYW1lIGFzIHR5cGVvZiBQSE9UT19SRUFDVElPTl9OQU1FU1tudW1iZXJdKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdEl0ZW1JZCA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcblxuICBpZighZm9ybWF0SXRlbUlkLnN0YXJ0c1dpdGgoYCR7Q09MTEVDVElPTlMuSU1BR0VTfS9gKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGltYWdlSWQgPSBwYXJzZUlkKGZvcm1hdEl0ZW1JZC5zcGxpdCgnLycpLmF0KC0xKSB8fCAnJyk7XG5cbiAgaWYoIWltYWdlSWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBpbWFnZSA9IGF3YWl0IGdldEltYWdlQnlJZChjb250ZXh0LCBpbWFnZUlkKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgY29uc3Qgb3duZXJVc2VySWQgPSBwYXJzZUlkKFN0cmluZyhpbWFnZT8udXNlcklkIHx8ICcnKSk7XG5cbiAgaWYoIW93bmVyVXNlcklkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgW2Zhdm9yaXRlQ291bnQsIGxpa2VDb3VudCwgZGlzbGlrZUNvdW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICBnZXRSZWFjdGlvbkNvdW50KGNvbnRleHQsIGZvcm1hdEl0ZW1JZCwgJ3NhdmVkJykuY2F0Y2goKCkgPT4gMCksXG4gICAgZ2V0UmVhY3Rpb25Db3VudChjb250ZXh0LCBmb3JtYXRJdGVtSWQsICdsaWtlJykuY2F0Y2goKCkgPT4gMCksXG4gICAgZ2V0UmVhY3Rpb25Db3VudChjb250ZXh0LCBmb3JtYXRJdGVtSWQsICdkaXNsaWtlJykuY2F0Y2goKCkgPT4gMClcbiAgXSk7XG4gIGNvbnN0IGNvbm5lY3Rpb25zID0gYXdhaXQgZ2V0Q29ubmVjdGlvbnNCeVVzZXIob3duZXJVc2VySWQpLmNhdGNoKCgpID0+IFtdKTtcbiAgY29uc3QgY29ubmVjdGlvbklkcyA9IGNvbm5lY3Rpb25zXG4gICAgLm1hcCgoY29ubmVjdGlvbikgPT4gcGFyc2VTdHJpbmcoY29ubmVjdGlvbj8uY29ubmVjdGlvbklkIHx8IGNvbm5lY3Rpb24/LnNvY2tldElkIHx8ICcnLCAzMikpXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5maWx0ZXIoKGNvbm5lY3Rpb25JZCwgaW5kZXgsIGxpc3QpID0+IGxpc3QuaW5kZXhPZihjb25uZWN0aW9uSWQpID09PSBpbmRleCk7XG5cbiAgaWYoIWNvbm5lY3Rpb25JZHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXdhaXQgd3NDbGllbnQuc2VuZChjb25uZWN0aW9uSWRzLCB7XG4gICAgYWN0aW9uOiAncGhvdG8ucmVhY3Rpb24udXBkYXRlZCcsXG4gICAgZGF0YToge1xuICAgICAgaW1hZ2VJZCxcbiAgICAgIHJlYWN0aW9uczoge1xuICAgICAgICBkaXNsaWtlOiBOdW1iZXIoZGlzbGlrZUNvdW50IHx8IDApLFxuICAgICAgICBsaWtlOiBOdW1iZXIobGlrZUNvdW50IHx8IDApLFxuICAgICAgICBzYXZlZDogTnVtYmVyKGZhdm9yaXRlQ291bnQgfHwgMClcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcblxuY29uc3QgdmFsaWRhdGVTZXNzaW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFjdGlvbjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qge3Nlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH0gPSB7fX0gPSBjb250ZXh0O1xuXG4gIGlmICghc2Vzc2lvbklkKSB7XG4gICAgdGhyb3cgbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc2Vzc2lvbklkO1xufTtcblxuY29uc3QgZ2V0UGVyc29uYURvY0lkID0gKHBlcnNvbmFJZDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgcGVyc29uYURvY0lkID0gcGFyc2VBcmFuZ29JZChwZXJzb25hSWQpO1xuXG4gIGlmKHBlcnNvbmFEb2NJZCkge1xuICAgIHJldHVybiBwZXJzb25hRG9jSWQ7XG4gIH1cblxuICBjb25zdCBwZXJzb25hS2V5ID0gcGFyc2VJZChwZXJzb25hSWQpO1xuICByZXR1cm4gcGVyc29uYUtleSA/IGAke0NPTExFQ1RJT05TLlBFUlNPTkFTfS8ke3BlcnNvbmFLZXl9YCA6ICcnO1xufTtcblxuY29uc3QgZ2V0UmVhY3Rpb25QZXJzb25hRG9jSWQgPSAoY29udGV4dDogQXBpQ29udGV4dCwgcGVyc29uYUlkOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCByZXF1ZXN0ZWRQZXJzb25hRG9jSWQgPSBnZXRQZXJzb25hRG9jSWQocGVyc29uYUlkKTtcbiAgY29uc3Qgc2Vzc2lvblBlcnNvbmFEb2NJZCA9IGdldFBlcnNvbmFEb2NJZChTdHJpbmcoY29udGV4dD8uc2Vzc2lvbj8ucGVyc29uYUlkIHx8ICcnKSk7XG5cbiAgcmV0dXJuIHJlcXVlc3RlZFBlcnNvbmFEb2NJZCB8fCBzZXNzaW9uUGVyc29uYURvY0lkO1xufTtcblxuY29uc3QgYXNzZXJ0UGVyc29uYVJlYWN0aW9uU291cmNlID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBwZXJzb25hRG9jSWQ6IHN0cmluZyxcbiAgYWN0aW9uOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBzZXNzaW9uVXNlcklkID0gcGFyc2VJZChTdHJpbmcoY29udGV4dD8uc2Vzc2lvbj8udXNlcklkIHx8ICcnKSk7XG4gIGNvbnN0IHBlcnNvbmFLZXkgPSBwYXJzZUlkKHBlcnNvbmFEb2NJZCk7XG4gIGNvbnN0IHNlc3Npb25QZXJzb25hS2V5ID0gcGFyc2VJZChTdHJpbmcoY29udGV4dD8uc2Vzc2lvbj8ucGVyc29uYUlkIHx8ICcnKSk7XG5cbiAgaWYoIXBlcnNvbmFLZXkgfHwgIXNlc3Npb25Vc2VySWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWRfc2Vzc2lvbicpO1xuICB9XG5cbiAgaWYoc2Vzc2lvblBlcnNvbmFLZXkgJiYgcGVyc29uYUtleSA9PT0gc2Vzc2lvblBlcnNvbmFLZXkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB1c2VyID0gYXdhaXQgdXNlRGIoY29udGV4dC5kYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbGBcbiAgICBSRVRVUk4gRE9DVU1FTlQoJHt1c2Vyc0NvbGxlY3Rpb259LCAke3Nlc3Npb25Vc2VySWR9KVxuICBgKS50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpLmNhdGNoKCgpID0+IG51bGwpO1xuICBjb25zdCB1c2VyUGVyc29uYUtleSA9IHBhcnNlSWQoU3RyaW5nKHVzZXI/LnBlcnNvbmFJZCB8fCAnJykpO1xuXG4gIGlmKHVzZXJQZXJzb25hS2V5ICYmIHBlcnNvbmFLZXkgPT09IHVzZXJQZXJzb25hS2V5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgIGFjdGlvbixcbiAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICBsYWJlbDogJ2ludmFsaWRfcGVyc29uYV9yZWFjdGlvbl9zb3VyY2UnLFxuICAgIHZhbHVlOiAnaW52YWxpZF9wZXJzb25hX3JlYWN0aW9uX3NvdXJjZSdcbiAgfSwgbmV3IEVycm9yKCdpbnZhbGlkX3BlcnNvbmFfcmVhY3Rpb25fc291cmNlJyksIGNvbnRleHQpO1xufTtcblxuY29uc3QgYnVpbGRQZXJzb25hUmVhY3Rpb24gPSAoXG4gIHBlcnNvbmFEb2NJZDogc3RyaW5nLFxuICBpdGVtRG9jSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmcsXG4gIHJlYWN0aW9uVHlwZTogc3RyaW5nLFxuICByZWFjdGlvblZhbHVlOiBzdHJpbmdcbik6IFBlcnNvbmFSZWFjdGlvbiA9PiAoe1xuICBfZnJvbTogcGVyc29uYURvY0lkLFxuICBfa2V5OiBjcmVhdGVIYXNoKGByZWFjdGlvbi0ke2l0ZW1Eb2NJZH0tJHtwZXJzb25hRG9jSWR9LSR7cmVhY3Rpb25OYW1lfWApLFxuICBfdG86IGl0ZW1Eb2NJZCxcbiAgYWRkZWQ6IERhdGUubm93KCksXG4gIG5hbWU6IHJlYWN0aW9uTmFtZSxcbiAgdHlwZTogcmVhY3Rpb25UeXBlLFxuICB2YWx1ZTogcmVhY3Rpb25WYWx1ZSB8fCB1bmRlZmluZWRcbn0pO1xuXG5jb25zdCByZW1vdmVQZXJzb25hUmVhY3Rpb24gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHBlcnNvbmFEb2NJZDogc3RyaW5nLFxuICBpdGVtRG9jSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmdcbik6IFByb21pc2U8UGVyc29uYVJlYWN0aW9uIHwgbnVsbD4gPT4ge1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgIEZPUiByZWFjdGlvbiBJTiAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiByZWFjdGlvbi5fZnJvbSA9PSAke3BlcnNvbmFEb2NJZH1cbiAgICAgIEZJTFRFUiByZWFjdGlvbi5fdG8gPT0gJHtpdGVtRG9jSWR9XG4gICAgICBGSUxURVIgcmVhY3Rpb24ubmFtZSA9PSAke3JlYWN0aW9uTmFtZX1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFTU9WRSByZWFjdGlvbiBJTiAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIFJFVFVSTiBPTERcbiAgYDtcblxuICByZXR1cm4gdXNlRGIoY29udGV4dC5kYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIGFzIFByb21pc2U8UGVyc29uYVJlYWN0aW9uIHwgbnVsbD4pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFBlcnNvbmFSZWFjdGlvbiA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgcGVyc29uYUlkOiBzdHJpbmcsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbjogUGVyc29uYVJlYWN0aW9uID0ge31cbik6IFByb21pc2U8UGVyc29uYVJlYWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdhZGRQZXJzb25hUmVhY3Rpb24nO1xuICBjb25zdCBwZXJzb25hRG9jSWQgPSBnZXRSZWFjdGlvblBlcnNvbmFEb2NJZChjb250ZXh0LCBwZXJzb25hSWQpO1xuICBjb25zdCBpdGVtRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IHJlYWN0aW9uTmFtZSA9IHBhcnNlQ2hhcihyZWFjdGlvbj8ubmFtZSB8fCAnbGlrZScsIDMyKTtcbiAgY29uc3QgcmVhY3Rpb25UeXBlID0gcGFyc2VDaGFyKHJlYWN0aW9uPy50eXBlIHx8ICcnLCAzMikudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgcmVhY3Rpb25WYWx1ZSA9IHBhcnNlU3RyaW5nKHJlYWN0aW9uPy52YWx1ZSB8fCAnJywgMzIpO1xuXG4gIGF3YWl0IGFzc2VydFBlcnNvbmFSZWFjdGlvblNvdXJjZShjb250ZXh0LCBwZXJzb25hRG9jSWQsIGFjdGlvbik7XG5cbiAgY29uc3QgbmV4dFJlYWN0aW9uID0gYnVpbGRQZXJzb25hUmVhY3Rpb24ocGVyc29uYURvY0lkLCBpdGVtRG9jSWQsIHJlYWN0aW9uTmFtZSwgcmVhY3Rpb25UeXBlLCByZWFjdGlvblZhbHVlKTtcblxuICB0cnkge1xuICAgIGNvbnN0IG9wcG9zaW5nUmVhY3Rpb25OYW1lID0gT1BQT1NJTkdfUkVBQ1RJT05fTkFNRVNbcmVhY3Rpb25OYW1lXTtcblxuICAgIGlmKG9wcG9zaW5nUmVhY3Rpb25OYW1lKSB7XG4gICAgICBhd2FpdCByZW1vdmVQZXJzb25hUmVhY3Rpb24oY29udGV4dCwgcGVyc29uYURvY0lkLCBpdGVtRG9jSWQsIG9wcG9zaW5nUmVhY3Rpb25OYW1lKTtcbiAgICAgIGF3YWl0IGVtaXRQaG90b1JlYWN0aW9uVXBkYXRlKGNvbnRleHQsIGl0ZW1Eb2NJZCwgb3Bwb3NpbmdSZWFjdGlvbk5hbWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgICBVUFNFUlQge19mcm9tOiAke3BlcnNvbmFEb2NJZH0sIF90bzogJHtpdGVtRG9jSWR9LCBuYW1lOiAke3JlYWN0aW9uTmFtZX19XG4gICAgICBJTlNFUlQgJHtuZXh0UmVhY3Rpb259XG4gICAgICBVUERBVEUge1xuICAgICAgICBuYW1lOiAke3JlYWN0aW9uTmFtZX0sXG4gICAgICAgIHR5cGU6ICR7cmVhY3Rpb25UeXBlfSxcbiAgICAgICAgdmFsdWU6ICR7cmVhY3Rpb25WYWx1ZSB8fCBudWxsfVxuICAgICAgfSBJTiAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIFJFVFVSTiBORVdcbiAgICBgO1xuXG4gICAgY29uc3Qgc2F2ZWRSZWFjdGlvbiA9IGF3YWl0IHVzZURiKGNvbnRleHQuZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIGFzIFByb21pc2U8UGVyc29uYVJlYWN0aW9uPik7XG4gICAgYXdhaXQgZW1pdFBob3RvUmVhY3Rpb25VcGRhdGUoY29udGV4dCwgaXRlbURvY0lkLCByZWFjdGlvbk5hbWUpO1xuICAgIHJldHVybiBzYXZlZFJlYWN0aW9uO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yIGFzIEVycm9yLCBjb250ZXh0KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZVBlcnNvbmFSZWFjdGlvbiA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgcGVyc29uYUlkOiBzdHJpbmcsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxQZXJzb25hUmVhY3Rpb24gfCBudWxsPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdkZWxldGVQZXJzb25hUmVhY3Rpb24nO1xuICBjb25zdCBwZXJzb25hRG9jSWQgPSBnZXRSZWFjdGlvblBlcnNvbmFEb2NJZChjb250ZXh0LCBwZXJzb25hSWQpO1xuICBjb25zdCBpdGVtRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZSA9IHBhcnNlQ2hhcihyZWFjdGlvbk5hbWUsIDMyKTtcblxuICBhd2FpdCBhc3NlcnRQZXJzb25hUmVhY3Rpb25Tb3VyY2UoY29udGV4dCwgcGVyc29uYURvY0lkLCBhY3Rpb24pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZGVsZXRlZFJlYWN0aW9uID0gYXdhaXQgcmVtb3ZlUGVyc29uYVJlYWN0aW9uKGNvbnRleHQsIHBlcnNvbmFEb2NJZCwgaXRlbURvY0lkLCBmb3JtYXRSZWFjdGlvbk5hbWUpO1xuXG4gICAgaWYoZGVsZXRlZFJlYWN0aW9uPy5uYW1lKSB7XG4gICAgICBhd2FpdCBlbWl0UGhvdG9SZWFjdGlvblVwZGF0ZShjb250ZXh0LCBpdGVtRG9jSWQsIFN0cmluZyhkZWxldGVkUmVhY3Rpb24ubmFtZSB8fCAnJykpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVkUmVhY3Rpb247XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaGFzUGVyc29uYVJlYWN0aW9uID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBwZXJzb25hSWQ6IHN0cmluZyxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2hhc1BlcnNvbmFSZWFjdGlvbic7XG4gIGNvbnN0IHBlcnNvbmFEb2NJZCA9IGdldFJlYWN0aW9uUGVyc29uYURvY0lkKGNvbnRleHQsIHBlcnNvbmFJZCk7XG4gIGNvbnN0IGl0ZW1Eb2NJZCA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuXG4gIGF3YWl0IGFzc2VydFBlcnNvbmFSZWFjdGlvblNvdXJjZShjb250ZXh0LCBwZXJzb25hRG9jSWQsIGFjdGlvbik7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBGT1IgcmVhY3Rpb24gSU4gJHtoYXNSZWFjdGlvbkNvbGxlY3Rpb259XG4gICAgICBGSUxURVIgcmVhY3Rpb24uX2Zyb20gPT0gJHtwZXJzb25hRG9jSWR9XG4gICAgICBGSUxURVIgcmVhY3Rpb24uX3RvID09ICR7aXRlbURvY0lkfVxuICAgICAgRklMVEVSIHJlYWN0aW9uLm5hbWUgPT0gJHtmb3JtYXRSZWFjdGlvbk5hbWV9XG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gdHJ1ZVxuICBgO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuICEhKGF3YWl0IHVzZURiKGNvbnRleHQuZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgcmVhY3Rpb24gZWRnZSBkb2N1bWVudFxuICovXG5jb25zdCBjcmVhdGVSZWFjdGlvbkVkZ2UgPSAoXG4gIHNlc3Npb25JZDogc3RyaW5nLFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmcsXG4gIHJlYWN0aW9uVHlwZT86IEFyYW5nb0RiQ29sbGVjdGlvbixcbiAgcmVhY3Rpb25WYWx1ZT86IHN0cmluZ1xuKTogUmVhY3Rpb24gPT4ge1xuICBjb25zdCBzZXNzaW9uRG9jSWQgPSBgJHtDT0xMRUNUSU9OUy5VU0VSU30vJHtzZXNzaW9uSWR9YDtcbiAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgcmVhY3Rpb24tJHtpdGVtSWR9LSR7c2Vzc2lvbklkfWApO1xuXG4gIHJldHVybiB7XG4gICAgX2Zyb206IHNlc3Npb25Eb2NJZCxcbiAgICBfa2V5OiBlZGdlSWQsXG4gICAgX3RvOiBpdGVtSWQsXG4gICAgYWRkZWQ6IERhdGUubm93KCksXG4gICAgbmFtZTogcmVhY3Rpb25OYW1lLFxuICAgIHR5cGU6IHJlYWN0aW9uVHlwZSxcbiAgICB2YWx1ZTogcmVhY3Rpb25WYWx1ZSAhPT0gdW5kZWZpbmVkID8gcmVhY3Rpb25WYWx1ZSA6IHVuZGVmaW5lZFxuICB9O1xufTtcblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgaWYgcmVhY3Rpb24gZXhpc3RzXG4gKi9cbmNvbnN0IGZpbmRFeGlzdGluZ1JlYWN0aW9uID0gYXN5bmMgKFxuICBkYXRhYmFzZU5hbWU6IHN0cmluZyxcbiAgc2Vzc2lvbkRvY0lkOiBzdHJpbmcsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxSZWFjdGlvbiB8IG51bGw+ID0+IHtcbiAgY29uc3QgZmlsdGVyQ2xhdXNlID0gYnVpbGRGaWx0ZXJDbGF1c2Uoe1xuICAgIGxvZ2ljOiAnQU5EJyxcbiAgICBjb25kaXRpb25zOiBbXG4gICAgICB7ZmllbGQ6ICdfZnJvbScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogc2Vzc2lvbkRvY0lkfSxcbiAgICAgIHtmaWVsZDogJ190bycsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogaXRlbUlkfSxcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IHJlYWN0aW9uTmFtZX1cbiAgICBdXG4gIH0sICdyJyk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBGT1IgciBJTiAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyQ2xhdXNlKX1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiByXG4gIGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKCgpID0+IG51bGwpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFJlYWN0aW9uID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb246IFJlYWN0aW9uID0ge30sXG4gIGFsbG93RHVwbGljYXRlOiBib29sZWFuID0gZmFsc2Vcbik6IFByb21pc2U8UmVhY3Rpb24+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZFJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBzZXNzaW9uSWQgPSB2YWxpZGF0ZVNlc3Npb24oY29udGV4dCwgYWN0aW9uKTtcblxuICBjb25zdCB7XG4gICAgbmFtZTogaXRlbU5hbWUgPSAnbGlrZScsXG4gICAgdHlwZTogaXRlbVR5cGUsXG4gICAgdmFsdWU6IGl0ZW1WYWx1ZVxuICB9ID0gcmVhY3Rpb247XG5cbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWUgPSBwYXJzZUNoYXIoaXRlbU5hbWUsIDMyKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25UeXBlID0gcGFyc2VDaGFyKGl0ZW1UeXBlLCAzMikudG9Mb3dlckNhc2UoKSBhcyBBcmFuZ29EYkNvbGxlY3Rpb247XG4gIGNvbnN0IGZvcm1hdFZhbHVlID0gcGFyc2VTdHJpbmcoaXRlbVZhbHVlLCAzMik7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZCA9IGAke0NPTExFQ1RJT05TLlVTRVJTfS8ke3Nlc3Npb25JZH1gO1xuXG4gIGNvbnN0IGVkZ2UgPSBjcmVhdGVSZWFjdGlvbkVkZ2Uoc2Vzc2lvbklkLCBmb3JtYXRJdGVtSWQsIGZvcm1hdFJlYWN0aW9uTmFtZSwgZm9ybWF0UmVhY3Rpb25UeXBlLCBmb3JtYXRWYWx1ZSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBvcHBvc2luZ1JlYWN0aW9uTmFtZSA9IE9QUE9TSU5HX1JFQUNUSU9OX05BTUVTW2Zvcm1hdFJlYWN0aW9uTmFtZV07XG5cbiAgICBpZihvcHBvc2luZ1JlYWN0aW9uTmFtZSkge1xuICAgICAgY29uc3Qgb3Bwb3NpbmdSZWFjdGlvbiA9IGF3YWl0IGZpbmRFeGlzdGluZ1JlYWN0aW9uKFxuICAgICAgICBkYXRhYmFzZU5hbWUsXG4gICAgICAgIHNlc3Npb25Eb2NJZCxcbiAgICAgICAgZm9ybWF0SXRlbUlkLFxuICAgICAgICBvcHBvc2luZ1JlYWN0aW9uTmFtZVxuICAgICAgKTtcblxuICAgICAgaWYob3Bwb3NpbmdSZWFjdGlvbj8uX2tleSkge1xuICAgICAgICBjb25zdCBlZGdlQ29sbGVjdGlvbjogRWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZU5hbWUpLmNvbGxlY3Rpb24oRURHRVMuSEFTX1JFQUNUSU9OKTtcbiAgICAgICAgYXdhaXQgZWRnZUNvbGxlY3Rpb24ucmVtb3ZlKG9wcG9zaW5nUmVhY3Rpb24uX2tleSk7XG4gICAgICAgIGF3YWl0IGVtaXRQaG90b1JlYWN0aW9uVXBkYXRlKGNvbnRleHQsIGZvcm1hdEl0ZW1JZCwgb3Bwb3NpbmdSZWFjdGlvbk5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBkdXBsaWNhdGVzIGlmIG5vdCBhbGxvd2VkXG4gICAgaWYgKCFhbGxvd0R1cGxpY2F0ZSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdSZWFjdGlvbiA9IGF3YWl0IGZpbmRFeGlzdGluZ1JlYWN0aW9uKFxuICAgICAgICBkYXRhYmFzZU5hbWUsXG4gICAgICAgIHNlc3Npb25Eb2NJZCxcbiAgICAgICAgZm9ybWF0SXRlbUlkLFxuICAgICAgICBmb3JtYXRSZWFjdGlvbk5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmIChleGlzdGluZ1JlYWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZ1JlYWN0aW9uO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVkZ2VDb2xsZWN0aW9uOiBFZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbihFREdFUy5IQVNfUkVBQ1RJT04pO1xuICAgIGF3YWl0IGVkZ2VDb2xsZWN0aW9uLnNhdmUoZWRnZSwge3JldHVybk5ldzogdHJ1ZX0pO1xuICAgIGF3YWl0IGVtaXRQaG90b1JlYWN0aW9uVXBkYXRlKGNvbnRleHQsIGZvcm1hdEl0ZW1JZCwgZm9ybWF0UmVhY3Rpb25OYW1lKTtcbiAgICByZXR1cm4gZWRnZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlUmVhY3Rpb24gPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgcmVhY3Rpb25JZDogc3RyaW5nKTogUHJvbWlzZTxSZWFjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZGVsZXRlUmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlc3Npb25JZCA9IHZhbGlkYXRlU2Vzc2lvbihjb250ZXh0LCBhY3Rpb24pO1xuXG4gIGNvbnN0IGZvcm1hdFNlc3Npb25JZCA9IGAke0NPTExFQ1RJT05TLlVTRVJTfS8ke3BhcnNlSWQoc2Vzc2lvbklkKX1gO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbklkID0gYCR7RURHRVMuSEFTX1JFQUNUSU9OfS8ke3BhcnNlSWQocmVhY3Rpb25JZCl9YDtcblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZSh7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgIHtmaWVsZDogJ19mcm9tJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBmb3JtYXRTZXNzaW9uSWR9XG4gICAgXVxuICB9LCAncicpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgTEVUIHIgPSBET0NVTUVOVCgke2Zvcm1hdFJlYWN0aW9uSWR9KVxuICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyQ2xhdXNlKX1cbiAgICBMSU1JVCAxXG4gICAgUkVNT1ZFIHIgSU4gJHtoYXNSZWFjdGlvbkNvbGxlY3Rpb259XG4gICAgUkVUVVJOIE9MRFxuICBgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZGVsZXRlZFJlYWN0aW9uID0gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKTtcblxuICAgIGlmKGRlbGV0ZWRSZWFjdGlvbj8uX3RvICYmIGRlbGV0ZWRSZWFjdGlvbj8ubmFtZSkge1xuICAgICAgYXdhaXQgZW1pdFBob3RvUmVhY3Rpb25VcGRhdGUoY29udGV4dCwgU3RyaW5nKGRlbGV0ZWRSZWFjdGlvbi5fdG8gfHwgJycpLCBTdHJpbmcoZGVsZXRlZFJlYWN0aW9uLm5hbWUgfHwgJycpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZFJlYWN0aW9uO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVSZWFjdGlvbkJ5SXRlbSA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFJlYWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdkZWxldGVSZWFjdGlvbkJ5SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3Qgc2Vzc2lvbklkID0gdmFsaWRhdGVTZXNzaW9uKGNvbnRleHQsIGFjdGlvbik7XG5cbiAgY29uc3QgZm9ybWF0U2Vzc2lvbklkID0gYCR7Q09MTEVDVElPTlMuVVNFUlN9LyR7cGFyc2VJZChzZXNzaW9uSWQpfWA7XG4gIGNvbnN0IGZvcm1hdEl0ZW1Eb2NJZCA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSk7XG5cbiAgY29uc3QgZmlsdGVyQ2xhdXNlID0gYnVpbGRGaWx0ZXJDbGF1c2Uoe1xuICAgIGxvZ2ljOiAnQU5EJyxcbiAgICBjb25kaXRpb25zOiBbXG4gICAgICB7ZmllbGQ6ICdfZnJvbScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0U2Vzc2lvbklkfSxcbiAgICAgIHtmaWVsZDogJ190bycsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0SXRlbURvY0lkfSxcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICBdXG4gIH0sICdyJyk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBGT1IgciBJTiAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyQ2xhdXNlKX1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFTU9WRSByIElOICR7aGFzUmVhY3Rpb25Db2xsZWN0aW9ufVxuICAgICAgUkVUVVJOIE9MRFxuICBgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZGVsZXRlZFJlYWN0aW9uID0gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKTtcblxuICAgIGlmKGRlbGV0ZWRSZWFjdGlvbj8ubmFtZSkge1xuICAgICAgYXdhaXQgZW1pdFBob3RvUmVhY3Rpb25VcGRhdGUoY29udGV4dCwgZm9ybWF0SXRlbURvY0lkLCBTdHJpbmcoZGVsZXRlZFJlYWN0aW9uLm5hbWUgfHwgJycpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZFJlYWN0aW9uO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVSZWFjdGlvbiA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCByZWFjdGlvbjogUmVhY3Rpb24gPSB7fSk6IFByb21pc2U8UmVhY3Rpb24+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ3VwZGF0ZVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBzZXNzaW9uSWQgPSB2YWxpZGF0ZVNlc3Npb24oY29udGV4dCwgYWN0aW9uKTtcblxuICBjb25zdCB7XG4gICAgaWQ6IGl0ZW1JZCxcbiAgICBuYW1lOiBpdGVtTmFtZSxcbiAgICB2YWx1ZTogaXRlbVZhbHVlXG4gIH0gPSByZWFjdGlvbjtcbiAgY29uc3QgZm9ybWF0SWQgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdE5hbWUgPSBwYXJzZUNoYXIoaXRlbU5hbWUsIDMyKTtcbiAgY29uc3QgZm9ybWF0VmFsdWUgPSBwYXJzZVN0cmluZyhpdGVtVmFsdWUsIDMyKTtcbiAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgcmVhY3Rpb24tJHtmb3JtYXRJZH0tJHtzZXNzaW9uSWR9YCk7XG4gIGNvbnN0IHVwZGF0ZTogUmVhY3Rpb24gPSB7XG4gICAgbmFtZTogZm9ybWF0TmFtZSxcbiAgICB2YWx1ZTogZm9ybWF0VmFsdWVcbiAgfTtcbiAgY29uc3QgaW5zZXJ0OiBSZWFjdGlvbiA9IHtcbiAgICAuLi51cGRhdGUsXG4gICAgX2tleTogZWRnZUlkLFxuICAgIGFkZGVkOiBEYXRlLm5vdygpXG4gIH07XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQgJHt7X2lkOiBmb3JtYXRJZH19XG4gICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIE5FV2A7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25Db3VudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0UmVhY3Rpb25Db3VudCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWUgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG5cbiAgY29uc3QgZmlsdGVyQ2xhdXNlID0gYnVpbGRGaWx0ZXJDbGF1c2Uoe1xuICAgIGxvZ2ljOiAnQU5EJyxcbiAgICBjb25kaXRpb25zOiBbXG4gICAgICB7ZmllbGQ6ICduYW1lJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBmb3JtYXRSZWFjdGlvbk5hbWV9XG4gICAgXVxuICB9LCAncicpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgRk9SIGksIHIgSU4gSU5CT1VORCAke2Zvcm1hdEl0ZW1JZH0gJHtoYXNSZWFjdGlvbkNvbGxlY3Rpb259XG4gICAgICBGSUxURVIgJHtsaXRlcmFsKGZpbHRlckNsYXVzZSl9XG4gICAgICBDT0xMRUNUIFdJVEggQ09VTlQgSU5UTyBjb3VudFxuICAgICAgUkVUVVJOIGNvdW50XG4gIGA7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25Db3VudEJ5VXNlciA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIGl0ZW1UeXBlOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFJlYWN0aW9uW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldFJlYWN0aW9uQ291bnRCeVVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlc3Npb25JZCA9IHZhbGlkYXRlU2Vzc2lvbihjb250ZXh0LCBhY3Rpb24pO1xuXG4gIGNvbnN0IGZvcm1hdEl0ZW1JZCA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuICBjb25zdCBzZXNzaW9uRG9jSWQgPSBgJHtDT0xMRUNUSU9OUy5VU0VSU30vJHtzZXNzaW9uSWR9YDtcblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZSh7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdFJlYWN0aW9uTmFtZX0sXG4gICAgICB7ZmllbGQ6ICdfZnJvbScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogc2Vzc2lvbkRvY0lkfVxuICAgIF1cbiAgfSwgJ3InKTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgIEZPUiBpLCByIElOIElOQk9VTkQgJHtmb3JtYXRJdGVtSWR9ICR7aGFzUmVhY3Rpb25Db2xsZWN0aW9ufVxuICAgICAgRklMVEVSICR7bGl0ZXJhbChmaWx0ZXJDbGF1c2UpfVxuICAgICAgQ09MTEVDVCByZWFjdGlvblZhbHVlID0gci52YWx1ZSBJTlRPIHJlYWN0aW9uSXRlbXNcbiAgICAgIFJFVFVSTiBNRVJHRShyLCB7Y291bnQ6IExFTkdUSChyZWFjdGlvbkl0ZW1zWypdLnIudmFsdWUpfSlcbiAgYDtcblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yIGFzIEVycm9yLCBjb250ZXh0KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3VwVXNlcnNCeVJlYWN0aW9uID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBhcmFtczogVXNlclJlYWN0aW9uUXVlcnkgPSB7fSk6IFByb21pc2U8VXNlclR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0R3JvdXBVc2Vyc0J5UmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIHZhbGlkYXRlU2Vzc2lvbihjb250ZXh0LCBhY3Rpb24pO1xuXG4gIGNvbnN0IHtmaWx0ZXJzID0gW10sIGlkOiBncm91cElkLCB2YWx1ZX06IFVzZXJSZWFjdGlvblF1ZXJ5ID0gcGFyYW1zO1xuICBjb25zdCByZWFjdGlvbiA9IHBhcnNlQ2hhcih2YWx1ZSwgMzIpO1xuICBjb25zdCBncm91cERvY0lkID0gcGFyc2VBcmFuZ29JZChncm91cElkKTtcblxuICAvLyBCdWlsZCBmaWx0ZXIgY29uZGl0aW9ucyBkeW5hbWljYWxseVxuICBjb25zdCBjb25kaXRpb25zOiBGaWx0ZXJDb25kaXRpb25bXSA9IFtcbiAgICB7ZmllbGQ6ICd2YWx1ZScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogcmVhY3Rpb259XG4gIF07XG5cbiAgLy8gQWRkIGR5bmFtaWMgZmlsdGVycyBmcm9tIHBhcmFtc1xuICBmaWx0ZXJzLmZvckVhY2goKGZpbHRlcjogUXVlcnlGaWx0ZXIpID0+IHtcbiAgICBjb25zdCB7Y29uZGl0aW9uYWwgPSAnJywgbmFtZSwgdmFsdWU6IHF1ZXJ5VmFsdWV9OiBRdWVyeUZpbHRlciA9IGZpbHRlcjtcbiAgICBsZXQgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yID0gJz09JztcblxuICAgIGlmKGNvbmRpdGlvbmFsID09PSAnPj0nIHx8IGNvbmRpdGlvbmFsID09PSAnPD0nIHx8IGNvbmRpdGlvbmFsID09PSAnPicgfHwgY29uZGl0aW9uYWwgPT09ICc8Jykge1xuICAgICAgb3BlcmF0b3IgPSBjb25kaXRpb25hbCBhcyBGaWx0ZXJPcGVyYXRvcjtcbiAgICB9XG5cbiAgICBpZihuYW1lID09PSAnYWRkZWQnKSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goe2ZpZWxkOiAnYWRkZWQnLCBvcGVyYXRvciwgdmFsdWU6IHBhcnNlTnVtKHF1ZXJ5VmFsdWUpfSk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZSh7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnNcbiAgfSwgJ3InKTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgIEZPUiBnLCByIElOIElOQk9VTkQgJHtncm91cERvY0lkfSAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZPUiB1IElOICR7dXNlcnNDb2xsZWN0aW9ufVxuICAgICAgRklMVEVSICR7bGl0ZXJhbChgJHtmaWx0ZXJDbGF1c2V9ICYmIHUuX2lkID09IHIuX2Zyb21gKX1cbiAgICAgIFJFVFVSTiB1XG4gIGA7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWFjdGlvbkxpc3RCeUl0ZW0gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmVhY3Rpb25PcHRpb25zXG4pOiBQcm9taXNlPFVzZXJUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldFJlYWN0aW9uc0J5SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWUgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZVJlYWN0aW9uT3B0aW9ucyhvcHRpb25zKTtcblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZSh7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICBdXG4gIH0sICdyJyk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBGT1IgaSwgciBJTiBJTkJPVU5EICR7Zm9ybWF0SXRlbUlkfSAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyQ2xhdXNlKX1cbiAgICAgICR7bGl0ZXJhbChsaW1pdC5hcWwpfVxuICAgICAgUkVUVVJOIE1FUkdFKGksIHtyZWFjdGlvbjogcn0pXG4gIGA7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJdGVtTGlzdEJ5UmVhY3Rpb24gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmVhY3Rpb25PcHRpb25zXG4pOiBQcm9taXNlPFJlYWN0aW9uW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldEl0ZW1zQnlSZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWUgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZVJlYWN0aW9uT3B0aW9ucyhvcHRpb25zKTtcblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZSh7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICBdXG4gIH0sICdyJyk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBGT1IgdSwgciBJTiBPVVRCT1VORCAke2Zvcm1hdEl0ZW1JZH0gJHtoYXNSZWFjdGlvbkNvbGxlY3Rpb259XG4gICAgICBGSUxURVIgJHtsaXRlcmFsKGZpbHRlckNsYXVzZSl9XG4gICAgICAke2xpdGVyYWwobGltaXQuYXFsKX1cbiAgICAgIFJFVFVSTiBNRVJHRSh1LCB7cmVhY3Rpb246IHJ9KVxuICBgO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaGFzUmVhY3Rpb24gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZyxcbiAgZGlyZWN0aW9uOiBSZWFjdGlvbkRpcmVjdGlvbiA9ICdPVVRCT1VORCdcbik6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnaGFzUmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlc3Npb25JZCA9IHZhbGlkYXRlU2Vzc2lvbihjb250ZXh0LCBhY3Rpb24pO1xuXG4gIGNvbnN0IHNlc3Npb25Eb2NJZCA9IGAke0NPTExFQ1RJT05TLlVTRVJTfS8ke3Nlc3Npb25JZH1gO1xuICBjb25zdCBmb3JtYXRJdGVtSWQgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdERpcmVjdGlvbiA9IGRpcmVjdGlvbiA9PT0gJ09VVEJPVU5EJyA/ICdPVVRCT1VORCcgOiAnSU5CT1VORCc7XG4gIGNvbnN0IGl0ZW1GaWVsZCA9IGRpcmVjdGlvbiA9PT0gJ09VVEJPVU5EJyA/ICdfdG8nIDogJ19mcm9tJztcblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZSh7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IHJlYWN0aW9uTmFtZX0sXG4gICAgICB7ZmllbGQ6IGl0ZW1GaWVsZCwgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBmb3JtYXRJdGVtSWR9XG4gICAgXVxuICB9LCAncicpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgRk9SIGksIHIgSU4gJHtsaXRlcmFsKGZvcm1hdERpcmVjdGlvbil9ICR7c2Vzc2lvbkRvY0lkfSAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyQ2xhdXNlKX1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiByXG4gIGA7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZWFjdGlvbiA9IGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSk7XG4gICAgcmV0dXJuIHJlYWN0aW9uID8gcmVhY3Rpb24udmFsdWUgPT09ICd0cnVlJyA6IGZhbHNlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsicGFyc2VOdW0iLCJjcmVhdGVIYXNoIiwicGFyc2VBcmFuZ29JZCIsInBhcnNlQ2hhciIsInBhcnNlSWQiLCJwYXJzZVN0cmluZyIsImFxbCIsImxpdGVyYWwiLCJDT0xMRUNUSU9OUyIsIkVER0VTIiwiRXJyb3JUeXBlcyIsImdldENvbm5lY3Rpb25zQnlVc2VyIiwid3NDbGllbnQiLCJsb2dFcnJvciIsImxvZ0V4Y2VwdGlvbiIsImJ1aWxkRmlsdGVyQ2xhdXNlIiwiZ2V0TGltaXQiLCJ1c2VEYiIsImdldEltYWdlQnlJZCIsImV2ZW50Q2F0ZWdvcnkiLCJoYXNSZWFjdGlvbkNvbGxlY3Rpb24iLCJIQVNfUkVBQ1RJT04iLCJ1c2Vyc0NvbGxlY3Rpb24iLCJVU0VSUyIsIlBIT1RPX1JFQUNUSU9OX05BTUVTIiwiT1BQT1NJTkdfUkVBQ1RJT05fTkFNRVMiLCJkaXNsaWtlIiwibGlrZSIsInBhcnNlUmVhY3Rpb25PcHRpb25zIiwib3B0aW9ucyIsImZyb20iLCJ0byIsImxpbWl0IiwiZW1pdFBob3RvUmVhY3Rpb25VcGRhdGUiLCJjb250ZXh0IiwiaXRlbUlkIiwicmVhY3Rpb25OYW1lIiwibm9ybWFsaXplZFJlYWN0aW9uTmFtZSIsImluY2x1ZGVzIiwiZm9ybWF0SXRlbUlkIiwic3RhcnRzV2l0aCIsIklNQUdFUyIsImltYWdlSWQiLCJzcGxpdCIsImF0IiwiaW1hZ2UiLCJjYXRjaCIsIm93bmVyVXNlcklkIiwiU3RyaW5nIiwidXNlcklkIiwiZmF2b3JpdGVDb3VudCIsImxpa2VDb3VudCIsImRpc2xpa2VDb3VudCIsIlByb21pc2UiLCJhbGwiLCJnZXRSZWFjdGlvbkNvdW50IiwiY29ubmVjdGlvbnMiLCJjb25uZWN0aW9uSWRzIiwibWFwIiwiY29ubmVjdGlvbiIsImNvbm5lY3Rpb25JZCIsInNvY2tldElkIiwiZmlsdGVyIiwiQm9vbGVhbiIsImluZGV4IiwibGlzdCIsImluZGV4T2YiLCJsZW5ndGgiLCJzZW5kIiwiYWN0aW9uIiwiZGF0YSIsInJlYWN0aW9ucyIsIk51bWJlciIsInNhdmVkIiwidmFsaWRhdGVTZXNzaW9uIiwic2Vzc2lvbiIsInNlc3Npb25JZCIsImNhdGVnb3J5IiwibGFiZWwiLCJJTlZBTElEX1NFU1NJT04iLCJ2YWx1ZSIsImdldFBlcnNvbmFEb2NJZCIsInBlcnNvbmFJZCIsInBlcnNvbmFEb2NJZCIsInBlcnNvbmFLZXkiLCJQRVJTT05BUyIsImdldFJlYWN0aW9uUGVyc29uYURvY0lkIiwicmVxdWVzdGVkUGVyc29uYURvY0lkIiwic2Vzc2lvblBlcnNvbmFEb2NJZCIsImFzc2VydFBlcnNvbmFSZWFjdGlvblNvdXJjZSIsInNlc3Npb25Vc2VySWQiLCJzZXNzaW9uUGVyc29uYUtleSIsIkVycm9yIiwidXNlciIsImRhdGFiYXNlTmFtZSIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsIm5leHQiLCJ1c2VyUGVyc29uYUtleSIsImJ1aWxkUGVyc29uYVJlYWN0aW9uIiwiaXRlbURvY0lkIiwicmVhY3Rpb25UeXBlIiwicmVhY3Rpb25WYWx1ZSIsIl9mcm9tIiwiX2tleSIsIl90byIsImFkZGVkIiwiRGF0ZSIsIm5vdyIsIm5hbWUiLCJ0eXBlIiwidW5kZWZpbmVkIiwicmVtb3ZlUGVyc29uYVJlYWN0aW9uIiwiYXFsUXJ5IiwiYWRkUGVyc29uYVJlYWN0aW9uIiwicmVhY3Rpb24iLCJ0b0xvd2VyQ2FzZSIsIm5leHRSZWFjdGlvbiIsIm9wcG9zaW5nUmVhY3Rpb25OYW1lIiwic2F2ZWRSZWFjdGlvbiIsImVycm9yIiwiREFUQUJBU0VfRVJST1IiLCJkZWxldGVQZXJzb25hUmVhY3Rpb24iLCJmb3JtYXRSZWFjdGlvbk5hbWUiLCJkZWxldGVkUmVhY3Rpb24iLCJoYXNQZXJzb25hUmVhY3Rpb24iLCJjcmVhdGVSZWFjdGlvbkVkZ2UiLCJzZXNzaW9uRG9jSWQiLCJlZGdlSWQiLCJmaW5kRXhpc3RpbmdSZWFjdGlvbiIsImZpbHRlckNsYXVzZSIsImxvZ2ljIiwiY29uZGl0aW9ucyIsImZpZWxkIiwib3BlcmF0b3IiLCJhZGRSZWFjdGlvbiIsImFsbG93RHVwbGljYXRlIiwiaXRlbU5hbWUiLCJpdGVtVHlwZSIsIml0ZW1WYWx1ZSIsImZvcm1hdFJlYWN0aW9uVHlwZSIsImZvcm1hdFZhbHVlIiwiZWRnZSIsIm9wcG9zaW5nUmVhY3Rpb24iLCJlZGdlQ29sbGVjdGlvbiIsImNvbGxlY3Rpb24iLCJyZW1vdmUiLCJleGlzdGluZ1JlYWN0aW9uIiwic2F2ZSIsInJldHVybk5ldyIsImRlbGV0ZVJlYWN0aW9uIiwicmVhY3Rpb25JZCIsImZvcm1hdFNlc3Npb25JZCIsImZvcm1hdFJlYWN0aW9uSWQiLCJkZWxldGVSZWFjdGlvbkJ5SXRlbSIsImZvcm1hdEl0ZW1Eb2NJZCIsInVwZGF0ZVJlYWN0aW9uIiwiaWQiLCJmb3JtYXRJZCIsImZvcm1hdE5hbWUiLCJ1cGRhdGUiLCJpbnNlcnQiLCJfaWQiLCJnZXRSZWFjdGlvbkNvdW50QnlVc2VyIiwiZ2V0R3JvdXBVc2Vyc0J5UmVhY3Rpb24iLCJwYXJhbXMiLCJmaWx0ZXJzIiwiZ3JvdXBJZCIsImdyb3VwRG9jSWQiLCJmb3JFYWNoIiwiY29uZGl0aW9uYWwiLCJxdWVyeVZhbHVlIiwicHVzaCIsImdldFJlYWN0aW9uTGlzdEJ5SXRlbSIsImdldEl0ZW1MaXN0QnlSZWFjdGlvbiIsImhhc1JlYWN0aW9uIiwiZGlyZWN0aW9uIiwiZm9ybWF0RGlyZWN0aW9uIiwiaXRlbUZpZWxkIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxRQUFRLFFBQU8sK0JBQStCO0FBQ3RELFNBQVFDLFVBQVUsRUFBRUMsYUFBYSxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsV0FBVyxRQUFPLCtCQUErQjtBQUN4RyxTQUFRQyxHQUFHLFFBQU8sV0FBVztBQUM3QixTQUFrQkMsT0FBTyxRQUFPLGVBQWU7QUFFL0MsU0FBUUMsV0FBVyxFQUFFQyxLQUFLLFFBQU8sOEJBQThCO0FBQy9ELFNBQVFDLFVBQVUsUUFBTywwQkFBMEI7QUFDbkQsU0FBUUMsb0JBQW9CLFFBQU8sbUNBQW1DO0FBQ3RFLFNBQVFDLFFBQVEsUUFBTyxnQ0FBZ0M7QUFDdkQsU0FBUUMsUUFBUSxFQUFFQyxZQUFZLFFBQU8sNkJBQTZCO0FBQ2xFLFNBQVFDLGlCQUFpQixRQUFPLHlCQUF5QjtBQUN6RCxTQUFRQyxRQUFRLEVBQUVDLEtBQUssUUFBTyw0QkFBNEI7QUFDMUQsU0FBUUMsWUFBWSxRQUFPLGNBQWM7QUFRekMsTUFBTUMsZ0JBQWdCO0FBQ3RCLE1BQU1DLHdCQUF3QmIsUUFBUUUsTUFBTVksWUFBWTtBQUN4RCxNQUFNQyxrQkFBa0JmLFFBQVFDLFlBQVllLEtBQUs7QUFDakQsTUFBTUMsdUJBQXVCO0lBQUM7SUFBVztJQUFRO0NBQVE7QUFDekQsTUFBTUMsMEJBQWtEO0lBQ3REQyxTQUFTO0lBQ1RDLE1BQU07QUFDUjtBQWdDQSxPQUFPLE1BQU1DLHVCQUF1QixDQUFDQyxVQUEyQixDQUFDLENBQUM7SUFDaEUsTUFBTSxFQUNKQyxPQUFPLENBQUMsRUFDUkMsS0FBSyxFQUFFLEVBQ1IsR0FBR0Y7SUFFSixPQUFPO1FBQ0xHLE9BQU9oQixTQUFTYyxNQUFNQztJQUN4QjtBQUNGLEVBQUU7QUFFRixNQUFNRSwwQkFBMEIsT0FDOUJDLFNBQ0FDLFFBQ0FDO0lBRUEsTUFBTUMseUJBQXlCbEMsVUFBVWlDLGNBQWM7SUFFdkQsSUFBRyxDQUFDWixxQkFBcUJjLFFBQVEsQ0FBQ0QseUJBQWdFO1FBQ2hHO0lBQ0Y7SUFFQSxNQUFNRSxlQUFlckMsY0FBY2lDO0lBRW5DLElBQUcsQ0FBQ0ksYUFBYUMsVUFBVSxDQUFDLEdBQUdoQyxZQUFZaUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHO1FBQ3JEO0lBQ0Y7SUFFQSxNQUFNQyxVQUFVdEMsUUFBUW1DLGFBQWFJLEtBQUssQ0FBQyxLQUFLQyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBRTFELElBQUcsQ0FBQ0YsU0FBUztRQUNYO0lBQ0Y7SUFFQSxNQUFNRyxRQUFRLE1BQU0zQixhQUFhZ0IsU0FBU1EsU0FBU0ksS0FBSyxDQUFDLElBQU07SUFDL0QsTUFBTUMsY0FBYzNDLFFBQVE0QyxPQUFPSCxPQUFPSSxVQUFVO0lBRXBELElBQUcsQ0FBQ0YsYUFBYTtRQUNmO0lBQ0Y7SUFFQSxNQUFNLENBQUNHLGVBQWVDLFdBQVdDLGFBQWEsR0FBRyxNQUFNQyxRQUFRQyxHQUFHLENBQUM7UUFDakVDLGlCQUFpQnJCLFNBQVNLLGNBQWMsU0FBU08sS0FBSyxDQUFDLElBQU07UUFDN0RTLGlCQUFpQnJCLFNBQVNLLGNBQWMsUUFBUU8sS0FBSyxDQUFDLElBQU07UUFDNURTLGlCQUFpQnJCLFNBQVNLLGNBQWMsV0FBV08sS0FBSyxDQUFDLElBQU07S0FDaEU7SUFDRCxNQUFNVSxjQUFjLE1BQU03QyxxQkFBcUJvQyxhQUFhRCxLQUFLLENBQUMsSUFBTSxFQUFFO0lBQzFFLE1BQU1XLGdCQUFnQkQsWUFDbkJFLEdBQUcsQ0FBQyxDQUFDQyxhQUFldEQsWUFBWXNELFlBQVlDLGdCQUFnQkQsWUFBWUUsWUFBWSxJQUFJLEtBQ3hGQyxNQUFNLENBQUNDLFNBQ1BELE1BQU0sQ0FBQyxDQUFDRixjQUFjSSxPQUFPQyxPQUFTQSxLQUFLQyxPQUFPLENBQUNOLGtCQUFrQkk7SUFFeEUsSUFBRyxDQUFDUCxjQUFjVSxNQUFNLEVBQUU7UUFDeEI7SUFDRjtJQUVBLE1BQU12RCxTQUFTd0QsSUFBSSxDQUFDWCxlQUFlO1FBQ2pDWSxRQUFRO1FBQ1JDLE1BQU07WUFDSjVCO1lBQ0E2QixXQUFXO2dCQUNUN0MsU0FBUzhDLE9BQU9wQixnQkFBZ0I7Z0JBQ2hDekIsTUFBTTZDLE9BQU9yQixhQUFhO2dCQUMxQnNCLE9BQU9ELE9BQU90QixpQkFBaUI7WUFDakM7UUFDRjtJQUNGO0FBQ0Y7QUFFQSxNQUFNd0Isa0JBQWtCLENBQUN4QyxTQUFxQm1DO0lBQzVDLE1BQU0sRUFBQ00sU0FBUyxFQUFDMUIsUUFBUTJCLFNBQVMsRUFBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLEdBQUcxQztJQUU1QyxJQUFJLENBQUMwQyxXQUFXO1FBQ2QsTUFBTTlELGFBQWE7WUFDakJ1RDtZQUNBUSxVQUFVMUQ7WUFDVjJELE9BQU9wRSxXQUFXcUUsZUFBZTtZQUNqQ0MsT0FBTztRQUNULEdBQUc5QztJQUNMO0lBRUEsT0FBTzBDO0FBQ1Q7QUFFQSxNQUFNSyxrQkFBa0IsQ0FBQ0M7SUFDdkIsTUFBTUMsZUFBZWpGLGNBQWNnRjtJQUVuQyxJQUFHQyxjQUFjO1FBQ2YsT0FBT0E7SUFDVDtJQUVBLE1BQU1DLGFBQWFoRixRQUFROEU7SUFDM0IsT0FBT0UsYUFBYSxHQUFHNUUsWUFBWTZFLFFBQVEsQ0FBQyxDQUFDLEVBQUVELFlBQVksR0FBRztBQUNoRTtBQUVBLE1BQU1FLDBCQUEwQixDQUFDcEQsU0FBcUJnRDtJQUNwRCxNQUFNSyx3QkFBd0JOLGdCQUFnQkM7SUFDOUMsTUFBTU0sc0JBQXNCUCxnQkFBZ0JqQyxPQUFPZCxTQUFTeUMsU0FBU08sYUFBYTtJQUVsRixPQUFPSyx5QkFBeUJDO0FBQ2xDO0FBRUEsTUFBTUMsOEJBQThCLE9BQ2xDdkQsU0FDQWlELGNBQ0FkO0lBRUEsTUFBTXFCLGdCQUFnQnRGLFFBQVE0QyxPQUFPZCxTQUFTeUMsU0FBUzFCLFVBQVU7SUFDakUsTUFBTW1DLGFBQWFoRixRQUFRK0U7SUFDM0IsTUFBTVEsb0JBQW9CdkYsUUFBUTRDLE9BQU9kLFNBQVN5QyxTQUFTTyxhQUFhO0lBRXhFLElBQUcsQ0FBQ0UsY0FBYyxDQUFDTSxlQUFlO1FBQ2hDLE1BQU0sSUFBSUUsTUFBTTtJQUNsQjtJQUVBLElBQUdELHFCQUFxQlAsZUFBZU8sbUJBQW1CO1FBQ3hEO0lBQ0Y7SUFFQSxNQUFNRSxPQUFPLE1BQU01RSxNQUFNaUIsUUFBUTRELFlBQVksRUFBRUMsS0FBSyxDQUFDekYsR0FBRyxDQUFDO29CQUN2QyxFQUFFZ0IsZ0JBQWdCLEVBQUUsRUFBRW9FLGNBQWM7RUFDdEQsQ0FBQyxFQUFFTSxJQUFJLENBQUMsQ0FBQ0MsU0FBV0EsT0FBT0MsSUFBSSxJQUFJcEQsS0FBSyxDQUFDLElBQU07SUFDL0MsTUFBTXFELGlCQUFpQi9GLFFBQVE0QyxPQUFPNkMsTUFBTVgsYUFBYTtJQUV6RCxJQUFHaUIsa0JBQWtCZixlQUFlZSxnQkFBZ0I7UUFDbEQ7SUFDRjtJQUVBLE1BQU10RixTQUFTO1FBQ2J3RDtRQUNBUSxVQUFVMUQ7UUFDVjJELE9BQU87UUFDUEUsT0FBTztJQUNULEdBQUcsSUFBSVksTUFBTSxvQ0FBb0MxRDtBQUNuRDtBQUVBLE1BQU1rRSx1QkFBdUIsQ0FDM0JqQixjQUNBa0IsV0FDQWpFLGNBQ0FrRSxjQUNBQyxnQkFDcUIsQ0FBQTtRQUNyQkMsT0FBT3JCO1FBQ1BzQixNQUFNeEcsV0FBVyxDQUFDLFNBQVMsRUFBRW9HLFVBQVUsQ0FBQyxFQUFFbEIsYUFBYSxDQUFDLEVBQUUvQyxjQUFjO1FBQ3hFc0UsS0FBS0w7UUFDTE0sT0FBT0MsS0FBS0MsR0FBRztRQUNmQyxNQUFNMUU7UUFDTjJFLE1BQU1UO1FBQ050QixPQUFPdUIsaUJBQWlCUztJQUMxQixDQUFBO0FBRUEsTUFBTUMsd0JBQXdCLE9BQzVCL0UsU0FDQWlELGNBQ0FrQixXQUNBakU7SUFFQSxNQUFNOEUsU0FBbUI1RyxHQUFHLENBQUM7b0JBQ1gsRUFBRWMsc0JBQXNCOytCQUNiLEVBQUUrRCxhQUFhOzZCQUNqQixFQUFFa0IsVUFBVTs4QkFDWCxFQUFFakUsYUFBYTs7eUJBRXBCLEVBQUVoQixzQkFBc0I7O0VBRS9DLENBQUM7SUFFRCxPQUFPSCxNQUFNaUIsUUFBUTRELFlBQVksRUFBRUMsS0FBSyxDQUFDbUIsUUFDdENsQixJQUFJLENBQUMsQ0FBQ0MsU0FBV0EsT0FBT0MsSUFBSTtBQUNqQztBQUVBLE9BQU8sTUFBTWlCLHFCQUFxQixPQUNoQ2pGLFNBQ0FnRCxXQUNBL0MsUUFDQWlGLFdBQTRCLENBQUMsQ0FBQztJQUU5QixNQUFNL0MsU0FBUztJQUNmLE1BQU1jLGVBQWVHLHdCQUF3QnBELFNBQVNnRDtJQUN0RCxNQUFNbUIsWUFBWW5HLGNBQWNpQztJQUNoQyxNQUFNQyxlQUFlakMsVUFBVWlILFVBQVVOLFFBQVEsUUFBUTtJQUN6RCxNQUFNUixlQUFlbkcsVUFBVWlILFVBQVVMLFFBQVEsSUFBSSxJQUFJTSxXQUFXO0lBQ3BFLE1BQU1kLGdCQUFnQmxHLFlBQVkrRyxVQUFVcEMsU0FBUyxJQUFJO0lBRXpELE1BQU1TLDRCQUE0QnZELFNBQVNpRCxjQUFjZDtJQUV6RCxNQUFNaUQsZUFBZWxCLHFCQUFxQmpCLGNBQWNrQixXQUFXakUsY0FBY2tFLGNBQWNDO0lBRS9GLElBQUk7UUFDRixNQUFNZ0IsdUJBQXVCOUYsdUJBQXVCLENBQUNXLGFBQWE7UUFFbEUsSUFBR21GLHNCQUFzQjtZQUN2QixNQUFNTixzQkFBc0IvRSxTQUFTaUQsY0FBY2tCLFdBQVdrQjtZQUM5RCxNQUFNdEYsd0JBQXdCQyxTQUFTbUUsV0FBV2tCO1FBQ3BEO1FBRUEsTUFBTUwsU0FBbUI1RyxHQUFHLENBQUM7cUJBQ1osRUFBRTZFLGFBQWEsT0FBTyxFQUFFa0IsVUFBVSxRQUFRLEVBQUVqRSxhQUFhO2FBQ2pFLEVBQUVrRixhQUFhOztjQUVkLEVBQUVsRixhQUFhO2NBQ2YsRUFBRWtFLGFBQWE7ZUFDZCxFQUFFQyxpQkFBaUIsS0FBSztXQUM1QixFQUFFbkYsc0JBQXNCOztJQUUvQixDQUFDO1FBRUQsTUFBTW9HLGdCQUFnQixNQUFNdkcsTUFBTWlCLFFBQVE0RCxZQUFZLEVBQUVDLEtBQUssQ0FBQ21CLFFBQzNEbEIsSUFBSSxDQUFDLENBQUNDLFNBQVdBLE9BQU9DLElBQUk7UUFDL0IsTUFBTWpFLHdCQUF3QkMsU0FBU21FLFdBQVdqRTtRQUNsRCxPQUFPb0Y7SUFDVCxFQUFFLE9BQU1DLE9BQU87UUFDYixNQUFNNUcsU0FBUztZQUNid0Q7WUFDQVEsVUFBVTFEO1lBQ1YyRCxPQUFPcEUsV0FBV2dILGNBQWM7UUFDbEMsR0FBR0QsT0FBZ0J2RjtJQUNyQjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU15Rix3QkFBd0IsT0FDbkN6RixTQUNBZ0QsV0FDQS9DLFFBQ0FDO0lBRUEsTUFBTWlDLFNBQVM7SUFDZixNQUFNYyxlQUFlRyx3QkFBd0JwRCxTQUFTZ0Q7SUFDdEQsTUFBTW1CLFlBQVluRyxjQUFjaUM7SUFDaEMsTUFBTXlGLHFCQUFxQnpILFVBQVVpQyxjQUFjO0lBRW5ELE1BQU1xRCw0QkFBNEJ2RCxTQUFTaUQsY0FBY2Q7SUFFekQsSUFBSTtRQUNGLE1BQU13RCxrQkFBa0IsTUFBTVosc0JBQXNCL0UsU0FBU2lELGNBQWNrQixXQUFXdUI7UUFFdEYsSUFBR0MsaUJBQWlCZixNQUFNO1lBQ3hCLE1BQU03RSx3QkFBd0JDLFNBQVNtRSxXQUFXckQsT0FBTzZFLGdCQUFnQmYsSUFBSSxJQUFJO1FBQ25GO1FBRUEsT0FBT2U7SUFDVCxFQUFFLE9BQU1KLE9BQU87UUFDYixNQUFNNUcsU0FBUztZQUNid0Q7WUFDQVEsVUFBVTFEO1lBQ1YyRCxPQUFPcEUsV0FBV2dILGNBQWM7UUFDbEMsR0FBR0QsT0FBZ0J2RjtJQUNyQjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU00RixxQkFBcUIsT0FDaEM1RixTQUNBZ0QsV0FDQS9DLFFBQ0FDO0lBRUEsTUFBTWlDLFNBQVM7SUFDZixNQUFNYyxlQUFlRyx3QkFBd0JwRCxTQUFTZ0Q7SUFDdEQsTUFBTW1CLFlBQVluRyxjQUFjaUM7SUFDaEMsTUFBTXlGLHFCQUFxQnpILFVBQVVpQyxjQUFjO0lBRW5ELE1BQU1xRCw0QkFBNEJ2RCxTQUFTaUQsY0FBY2Q7SUFFekQsTUFBTTZDLFNBQW1CNUcsR0FBRyxDQUFDO29CQUNYLEVBQUVjLHNCQUFzQjsrQkFDYixFQUFFK0QsYUFBYTs2QkFDakIsRUFBRWtCLFVBQVU7OEJBQ1gsRUFBRXVCLG1CQUFtQjs7O0VBR2pELENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxDQUFDLENBQUUsTUFBTTNHLE1BQU1pQixRQUFRNEQsWUFBWSxFQUFFQyxLQUFLLENBQUNtQixRQUMvQ2xCLElBQUksQ0FBQyxDQUFDQyxTQUFXQSxPQUFPQyxJQUFJO0lBQ2pDLEVBQUUsT0FBTXVCLE9BQU87UUFDYixNQUFNNUcsU0FBUztZQUNid0Q7WUFDQVEsVUFBVTFEO1lBQ1YyRCxPQUFPcEUsV0FBV2dILGNBQWM7UUFDbEMsR0FBR0QsT0FBZ0J2RjtJQUNyQjtBQUNGLEVBQUU7QUFFRjs7Q0FFQyxHQUNELE1BQU02RixxQkFBcUIsQ0FDekJuRCxXQUNBekMsUUFDQUMsY0FDQWtFLGNBQ0FDO0lBRUEsTUFBTXlCLGVBQWUsR0FBR3hILFlBQVllLEtBQUssQ0FBQyxDQUFDLEVBQUVxRCxXQUFXO0lBQ3hELE1BQU1xRCxTQUFTaEksV0FBVyxDQUFDLFNBQVMsRUFBRWtDLE9BQU8sQ0FBQyxFQUFFeUMsV0FBVztJQUUzRCxPQUFPO1FBQ0w0QixPQUFPd0I7UUFDUHZCLE1BQU13QjtRQUNOdkIsS0FBS3ZFO1FBQ0x3RSxPQUFPQyxLQUFLQyxHQUFHO1FBQ2ZDLE1BQU0xRTtRQUNOMkUsTUFBTVQ7UUFDTnRCLE9BQU91QixrQkFBa0JTLFlBQVlULGdCQUFnQlM7SUFDdkQ7QUFDRjtBQUVBOztDQUVDLEdBQ0QsTUFBTWtCLHVCQUF1QixPQUMzQnBDLGNBQ0FrQyxjQUNBN0YsUUFDQUM7SUFFQSxNQUFNK0YsZUFBZXBILGtCQUFrQjtRQUNyQ3FILE9BQU87UUFDUEMsWUFBWTtZQUNWO2dCQUFDQyxPQUFPO2dCQUFTQyxVQUFVO2dCQUFNdkQsT0FBT2dEO1lBQVk7WUFDcEQ7Z0JBQUNNLE9BQU87Z0JBQU9DLFVBQVU7Z0JBQU12RCxPQUFPN0M7WUFBTTtZQUM1QztnQkFBQ21HLE9BQU87Z0JBQVFDLFVBQVU7Z0JBQU12RCxPQUFPNUM7WUFBWTtTQUNwRDtJQUNILEdBQUc7SUFFSCxNQUFNOEUsU0FBbUI1RyxHQUFHLENBQUM7YUFDbEIsRUFBRWMsc0JBQXNCO2FBQ3hCLEVBQUViLFFBQVE0SCxjQUFjOzs7RUFHbkMsQ0FBQztJQUVELE9BQU9sSCxNQUFNNkUsY0FBY0MsS0FBSyxDQUFDbUIsUUFDOUJsQixJQUFJLENBQUMsQ0FBQ0MsU0FBV0EsT0FBT0MsSUFBSSxJQUM1QnBELEtBQUssQ0FBQyxJQUFNO0FBQ2pCO0FBRUEsT0FBTyxNQUFNMEYsY0FBYyxPQUN6QnRHLFNBQ0FDLFFBQ0FpRixXQUFxQixDQUFDLENBQUMsRUFDdkJxQixpQkFBMEIsS0FBSztJQUUvQixNQUFNcEUsU0FBUztJQUNmLE1BQU0sRUFBQ3lCLFlBQVksRUFBQyxHQUFHNUQ7SUFDdkIsTUFBTTBDLFlBQVlGLGdCQUFnQnhDLFNBQVNtQztJQUUzQyxNQUFNLEVBQ0p5QyxNQUFNNEIsV0FBVyxNQUFNLEVBQ3ZCM0IsTUFBTTRCLFFBQVEsRUFDZDNELE9BQU80RCxTQUFTLEVBQ2pCLEdBQUd4QjtJQUVKLE1BQU03RSxlQUFlckMsY0FBY2lDO0lBQ25DLE1BQU15RixxQkFBcUJ6SCxVQUFVdUksVUFBVTtJQUMvQyxNQUFNRyxxQkFBcUIxSSxVQUFVd0ksVUFBVSxJQUFJdEIsV0FBVztJQUM5RCxNQUFNeUIsY0FBY3pJLFlBQVl1SSxXQUFXO0lBQzNDLE1BQU1aLGVBQWUsR0FBR3hILFlBQVllLEtBQUssQ0FBQyxDQUFDLEVBQUVxRCxXQUFXO0lBRXhELE1BQU1tRSxPQUFPaEIsbUJBQW1CbkQsV0FBV3JDLGNBQWNxRixvQkFBb0JpQixvQkFBb0JDO0lBRWpHLElBQUk7UUFDRixNQUFNdkIsdUJBQXVCOUYsdUJBQXVCLENBQUNtRyxtQkFBbUI7UUFFeEUsSUFBR0wsc0JBQXNCO1lBQ3ZCLE1BQU15QixtQkFBbUIsTUFBTWQscUJBQzdCcEMsY0FDQWtDLGNBQ0F6RixjQUNBZ0Y7WUFHRixJQUFHeUIsa0JBQWtCdkMsTUFBTTtnQkFDekIsTUFBTXdDLGlCQUFpQ2hJLE1BQU02RSxjQUFjb0QsVUFBVSxDQUFDekksTUFBTVksWUFBWTtnQkFDeEYsTUFBTTRILGVBQWVFLE1BQU0sQ0FBQ0gsaUJBQWlCdkMsSUFBSTtnQkFDakQsTUFBTXhFLHdCQUF3QkMsU0FBU0ssY0FBY2dGO1lBQ3ZEO1FBQ0Y7UUFFQSxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDa0IsZ0JBQWdCO1lBQ25CLE1BQU1XLG1CQUFtQixNQUFNbEIscUJBQzdCcEMsY0FDQWtDLGNBQ0F6RixjQUNBcUY7WUFHRixJQUFJd0Isa0JBQWtCO2dCQUNwQixPQUFPQTtZQUNUO1FBQ0Y7UUFFQSxNQUFNSCxpQkFBaUNoSSxNQUFNNkUsY0FBY29ELFVBQVUsQ0FBQ3pJLE1BQU1ZLFlBQVk7UUFDeEYsTUFBTTRILGVBQWVJLElBQUksQ0FBQ04sTUFBTTtZQUFDTyxXQUFXO1FBQUk7UUFDaEQsTUFBTXJILHdCQUF3QkMsU0FBU0ssY0FBY3FGO1FBQ3JELE9BQU9tQjtJQUNULEVBQUUsT0FBT3RCLE9BQU87UUFDZCxNQUFNNUcsU0FBUztZQUNid0Q7WUFDQVEsVUFBVTFEO1lBQ1YyRCxPQUFPcEUsV0FBV2dILGNBQWM7UUFDbEMsR0FBR0QsT0FBZ0J2RjtJQUNyQjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1xSCxpQkFBaUIsT0FBT3JILFNBQXFCc0g7SUFDeEQsTUFBTW5GLFNBQVM7SUFDZixNQUFNLEVBQUN5QixZQUFZLEVBQUMsR0FBRzVEO0lBQ3ZCLE1BQU0wQyxZQUFZRixnQkFBZ0J4QyxTQUFTbUM7SUFFM0MsTUFBTW9GLGtCQUFrQixHQUFHakosWUFBWWUsS0FBSyxDQUFDLENBQUMsRUFBRW5CLFFBQVF3RSxZQUFZO0lBQ3BFLE1BQU04RSxtQkFBbUIsR0FBR2pKLE1BQU1ZLFlBQVksQ0FBQyxDQUFDLEVBQUVqQixRQUFRb0osYUFBYTtJQUV2RSxNQUFNckIsZUFBZXBILGtCQUFrQjtRQUNyQ3FILE9BQU87UUFDUEMsWUFBWTtZQUNWO2dCQUFDQyxPQUFPO2dCQUFTQyxVQUFVO2dCQUFNdkQsT0FBT3lFO1lBQWU7U0FDeEQ7SUFDSCxHQUFHO0lBRUgsTUFBTXZDLFNBQW1CNUcsR0FBRyxDQUFDO3FCQUNWLEVBQUVvSixpQkFBaUI7V0FDN0IsRUFBRW5KLFFBQVE0SCxjQUFjOztnQkFFbkIsRUFBRS9HLHNCQUFzQjs7RUFFdEMsQ0FBQztJQUVELElBQUk7UUFDRixNQUFNeUcsa0JBQWtCLE1BQU01RyxNQUFNNkUsY0FBY0MsS0FBSyxDQUFDbUIsUUFDckRsQixJQUFJLENBQUMsQ0FBQ0MsU0FBV0EsT0FBT0MsSUFBSTtRQUUvQixJQUFHMkIsaUJBQWlCbkIsT0FBT21CLGlCQUFpQmYsTUFBTTtZQUNoRCxNQUFNN0Usd0JBQXdCQyxTQUFTYyxPQUFPNkUsZ0JBQWdCbkIsR0FBRyxJQUFJLEtBQUsxRCxPQUFPNkUsZ0JBQWdCZixJQUFJLElBQUk7UUFDM0c7UUFFQSxPQUFPZTtJQUNULEVBQUUsT0FBT0osT0FBTztRQUNkLE1BQU01RyxTQUFTO1lBQ2J3RDtZQUNBUSxVQUFVMUQ7WUFDVjJELE9BQU9wRSxXQUFXZ0gsY0FBYztRQUNsQyxHQUFHRCxPQUFnQnZGO0lBQ3JCO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTXlILHVCQUF1QixPQUNsQ3pILFNBQ0FDLFFBQ0FDO0lBRUEsTUFBTWlDLFNBQVM7SUFDZixNQUFNLEVBQUN5QixZQUFZLEVBQUMsR0FBRzVEO0lBQ3ZCLE1BQU0wQyxZQUFZRixnQkFBZ0J4QyxTQUFTbUM7SUFFM0MsTUFBTW9GLGtCQUFrQixHQUFHakosWUFBWWUsS0FBSyxDQUFDLENBQUMsRUFBRW5CLFFBQVF3RSxZQUFZO0lBQ3BFLE1BQU1nRixrQkFBa0IxSixjQUFjaUM7SUFDdEMsTUFBTXlGLHFCQUFxQnpILFVBQVVpQztJQUVyQyxNQUFNK0YsZUFBZXBILGtCQUFrQjtRQUNyQ3FILE9BQU87UUFDUEMsWUFBWTtZQUNWO2dCQUFDQyxPQUFPO2dCQUFTQyxVQUFVO2dCQUFNdkQsT0FBT3lFO1lBQWU7WUFDdkQ7Z0JBQUNuQixPQUFPO2dCQUFPQyxVQUFVO2dCQUFNdkQsT0FBTzRFO1lBQWU7WUFDckQ7Z0JBQUN0QixPQUFPO2dCQUFRQyxVQUFVO2dCQUFNdkQsT0FBTzRDO1lBQWtCO1NBQzFEO0lBQ0gsR0FBRztJQUVILE1BQU1WLFNBQW1CNUcsR0FBRyxDQUFDO2FBQ2xCLEVBQUVjLHNCQUFzQjthQUN4QixFQUFFYixRQUFRNEgsY0FBYzs7a0JBRW5CLEVBQUUvRyxzQkFBc0I7O0VBRXhDLENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTXlHLGtCQUFrQixNQUFNNUcsTUFBTTZFLGNBQWNDLEtBQUssQ0FBQ21CLFFBQ3JEbEIsSUFBSSxDQUFDLENBQUNDLFNBQVdBLE9BQU9DLElBQUk7UUFFL0IsSUFBRzJCLGlCQUFpQmYsTUFBTTtZQUN4QixNQUFNN0Usd0JBQXdCQyxTQUFTMEgsaUJBQWlCNUcsT0FBTzZFLGdCQUFnQmYsSUFBSSxJQUFJO1FBQ3pGO1FBRUEsT0FBT2U7SUFDVCxFQUFFLE9BQU9KLE9BQU87UUFDZCxNQUFNNUcsU0FBUztZQUNid0Q7WUFDQVEsVUFBVTFEO1lBQ1YyRCxPQUFPcEUsV0FBV2dILGNBQWM7UUFDbEMsR0FBR0QsT0FBZ0J2RjtJQUNyQjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU0ySCxpQkFBaUIsT0FBTzNILFNBQXFCa0YsV0FBcUIsQ0FBQyxDQUFDO0lBQy9FLE1BQU0vQyxTQUFTO0lBQ2YsTUFBTSxFQUFDeUIsWUFBWSxFQUFDLEdBQUc1RDtJQUN2QixNQUFNMEMsWUFBWUYsZ0JBQWdCeEMsU0FBU21DO0lBRTNDLE1BQU0sRUFDSnlGLElBQUkzSCxNQUFNLEVBQ1YyRSxNQUFNNEIsUUFBUSxFQUNkMUQsT0FBTzRELFNBQVMsRUFDakIsR0FBR3hCO0lBQ0osTUFBTTJDLFdBQVc3SixjQUFjaUM7SUFDL0IsTUFBTTZILGFBQWE3SixVQUFVdUksVUFBVTtJQUN2QyxNQUFNSSxjQUFjekksWUFBWXVJLFdBQVc7SUFDM0MsTUFBTVgsU0FBU2hJLFdBQVcsQ0FBQyxTQUFTLEVBQUU4SixTQUFTLENBQUMsRUFBRW5GLFdBQVc7SUFDN0QsTUFBTXFGLFNBQW1CO1FBQ3ZCbkQsTUFBTWtEO1FBQ05oRixPQUFPOEQ7SUFDVDtJQUNBLE1BQU1vQixTQUFtQjtRQUN2QixHQUFHRCxNQUFNO1FBQ1R4RCxNQUFNd0I7UUFDTnRCLE9BQU9DLEtBQUtDLEdBQUc7SUFDakI7SUFFQSxNQUFNSyxTQUFtQjVHLEdBQUcsQ0FBQyxPQUFPLEVBQUU7UUFBQzZKLEtBQUtKO0lBQVEsRUFBRTtXQUM3QyxFQUFFRyxPQUFPO1dBQ1QsRUFBRUQsT0FBTzs7Y0FFTixDQUFDO0lBRWIsSUFBSTtRQUNGLE9BQU8sTUFBTWhKLE1BQU02RSxjQUFjQyxLQUFLLENBQUNtQixRQUNwQ2xCLElBQUksQ0FBQyxDQUFDQyxTQUFXQSxPQUFPQyxJQUFJO0lBQ2pDLEVBQUUsT0FBT3VCLE9BQU87UUFDZCxNQUFNNUcsU0FBUztZQUNid0Q7WUFDQVEsVUFBVTFEO1lBQ1YyRCxPQUFPcEUsV0FBV2dILGNBQWM7UUFDbEMsR0FBR0QsT0FBZ0J2RjtJQUNyQjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1xQixtQkFBbUIsT0FDOUJyQixTQUNBQyxRQUNBQztJQUVBLE1BQU1pQyxTQUFTO0lBQ2YsTUFBTSxFQUFDeUIsWUFBWSxFQUFDLEdBQUc1RDtJQUN2QixNQUFNSyxlQUFlckMsY0FBY2lDO0lBQ25DLE1BQU15RixxQkFBcUJ6SCxVQUFVaUMsY0FBYztJQUVuRCxNQUFNK0YsZUFBZXBILGtCQUFrQjtRQUNyQ3FILE9BQU87UUFDUEMsWUFBWTtZQUNWO2dCQUFDQyxPQUFPO2dCQUFRQyxVQUFVO2dCQUFNdkQsT0FBTzRDO1lBQWtCO1NBQzFEO0lBQ0gsR0FBRztJQUVILE1BQU1WLFNBQW1CNUcsR0FBRyxDQUFDO3dCQUNQLEVBQUVpQyxhQUFhLENBQUMsRUFBRW5CLHNCQUFzQjthQUNuRCxFQUFFYixRQUFRNEgsY0FBYzs7O0VBR25DLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxNQUFNbEgsTUFBTTZFLGNBQWNDLEtBQUssQ0FBQ21CLFFBQ3BDbEIsSUFBSSxDQUFDLENBQUNDLFNBQVdBLE9BQU9DLElBQUk7SUFDakMsRUFBRSxPQUFPdUIsT0FBTztRQUNkLE1BQU01RyxTQUFTO1lBQ2J3RDtZQUNBUSxVQUFVMUQ7WUFDVjJELE9BQU9wRSxXQUFXZ0gsY0FBYztRQUNsQyxHQUFHRCxPQUFnQnZGO0lBQ3JCO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTWtJLHlCQUF5QixPQUNwQ2xJLFNBQ0FDLFFBQ0F3RyxVQUNBdkc7SUFFQSxNQUFNaUMsU0FBUztJQUNmLE1BQU0sRUFBQ3lCLFlBQVksRUFBQyxHQUFHNUQ7SUFDdkIsTUFBTTBDLFlBQVlGLGdCQUFnQnhDLFNBQVNtQztJQUUzQyxNQUFNOUIsZUFBZXJDLGNBQWNpQztJQUNuQyxNQUFNeUYscUJBQXFCekgsVUFBVWlDLGNBQWM7SUFDbkQsTUFBTTRGLGVBQWUsR0FBR3hILFlBQVllLEtBQUssQ0FBQyxDQUFDLEVBQUVxRCxXQUFXO0lBRXhELE1BQU11RCxlQUFlcEgsa0JBQWtCO1FBQ3JDcUgsT0FBTztRQUNQQyxZQUFZO1lBQ1Y7Z0JBQUNDLE9BQU87Z0JBQVFDLFVBQVU7Z0JBQU12RCxPQUFPNEM7WUFBa0I7WUFDekQ7Z0JBQUNVLE9BQU87Z0JBQVNDLFVBQVU7Z0JBQU12RCxPQUFPZ0Q7WUFBWTtTQUNyRDtJQUNILEdBQUc7SUFFSCxNQUFNZCxTQUFtQjVHLEdBQUcsQ0FBQzt3QkFDUCxFQUFFaUMsYUFBYSxDQUFDLEVBQUVuQixzQkFBc0I7YUFDbkQsRUFBRWIsUUFBUTRILGNBQWM7OztFQUduQyxDQUFDO0lBRUQsSUFBSTtRQUNGLE9BQU8sTUFBTWxILE1BQU02RSxjQUFjQyxLQUFLLENBQUNtQixRQUNwQ2xCLElBQUksQ0FBQyxDQUFDQyxTQUFXQSxPQUFPM0MsR0FBRztJQUNoQyxFQUFFLE9BQU9tRSxPQUFPO1FBQ2QsTUFBTTVHLFNBQVM7WUFDYndEO1lBQ0FRLFVBQVUxRDtZQUNWMkQsT0FBT3BFLFdBQVdnSCxjQUFjO1FBQ2xDLEdBQUdELE9BQWdCdkY7SUFDckI7QUFDRixFQUFFO0FBRUYsT0FBTyxNQUFNbUksMEJBQTBCLE9BQU9uSSxTQUFxQm9JLFNBQTRCLENBQUMsQ0FBQztJQUMvRixNQUFNakcsU0FBUztJQUNmLE1BQU0sRUFBQ3lCLFlBQVksRUFBQyxHQUFHNUQ7SUFDdkJ3QyxnQkFBZ0J4QyxTQUFTbUM7SUFFekIsTUFBTSxFQUFDa0csVUFBVSxFQUFFLEVBQUVULElBQUlVLE9BQU8sRUFBRXhGLEtBQUssRUFBQyxHQUFzQnNGO0lBQzlELE1BQU1sRCxXQUFXakgsVUFBVTZFLE9BQU87SUFDbEMsTUFBTXlGLGFBQWF2SyxjQUFjc0s7SUFFakMsc0NBQXNDO0lBQ3RDLE1BQU1uQyxhQUFnQztRQUNwQztZQUFDQyxPQUFPO1lBQVNDLFVBQVU7WUFBTXZELE9BQU9vQztRQUFRO0tBQ2pEO0lBRUQsa0NBQWtDO0lBQ2xDbUQsUUFBUUcsT0FBTyxDQUFDLENBQUM1RztRQUNmLE1BQU0sRUFBQzZHLGNBQWMsRUFBRSxFQUFFN0QsSUFBSSxFQUFFOUIsT0FBTzRGLFVBQVUsRUFBQyxHQUFnQjlHO1FBQ2pFLElBQUl5RSxXQUEyQjtRQUUvQixJQUFHb0MsZ0JBQWdCLFFBQVFBLGdCQUFnQixRQUFRQSxnQkFBZ0IsT0FBT0EsZ0JBQWdCLEtBQUs7WUFDN0ZwQyxXQUFXb0M7UUFDYjtRQUVBLElBQUc3RCxTQUFTLFNBQVM7WUFDbkJ1QixXQUFXd0MsSUFBSSxDQUFDO2dCQUFDdkMsT0FBTztnQkFBU0M7Z0JBQVV2RCxPQUFPaEYsU0FBUzRLO1lBQVc7UUFDeEU7SUFDRjtJQUVBLE1BQU16QyxlQUFlcEgsa0JBQWtCO1FBQ3JDcUgsT0FBTztRQUNQQztJQUNGLEdBQUc7SUFFSCxNQUFNbkIsU0FBbUI1RyxHQUFHLENBQUM7d0JBQ1AsRUFBRW1LLFdBQVcsQ0FBQyxFQUFFckosc0JBQXNCO2VBQy9DLEVBQUVFLGdCQUFnQjthQUNwQixFQUFFZixRQUFRLEdBQUc0SCxhQUFhLG9CQUFvQixDQUFDLEVBQUU7O0VBRTVELENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxNQUFNbEgsTUFBTTZFLGNBQWNDLEtBQUssQ0FBQ21CLFFBQ3BDbEIsSUFBSSxDQUFDLENBQUNDLFNBQVdBLE9BQU8zQyxHQUFHO0lBQ2hDLEVBQUUsT0FBT21FLE9BQU87UUFDZCxNQUFNNUcsU0FBUztZQUNid0Q7WUFDQVEsVUFBVTFEO1lBQ1YyRCxPQUFPcEUsV0FBV2dILGNBQWM7UUFDbEMsR0FBR0QsT0FBZ0J2RjtJQUNyQjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU00SSx3QkFBd0IsT0FDbkM1SSxTQUNBQyxRQUNBQyxjQUNBUDtJQUVBLE1BQU13QyxTQUFTO0lBQ2YsTUFBTSxFQUFDeUIsWUFBWSxFQUFDLEdBQUc1RDtJQUN2QixNQUFNSyxlQUFlckMsY0FBY2lDO0lBQ25DLE1BQU15RixxQkFBcUJ6SCxVQUFVaUMsY0FBYztJQUNuRCxNQUFNLEVBQUNKLEtBQUssRUFBQyxHQUFHSixxQkFBcUJDO0lBRXJDLE1BQU1zRyxlQUFlcEgsa0JBQWtCO1FBQ3JDcUgsT0FBTztRQUNQQyxZQUFZO1lBQ1Y7Z0JBQUNDLE9BQU87Z0JBQVFDLFVBQVU7Z0JBQU12RCxPQUFPNEM7WUFBa0I7U0FDMUQ7SUFDSCxHQUFHO0lBRUgsTUFBTVYsU0FBbUI1RyxHQUFHLENBQUM7d0JBQ1AsRUFBRWlDLGFBQWEsQ0FBQyxFQUFFbkIsc0JBQXNCO2FBQ25ELEVBQUViLFFBQVE0SCxjQUFjO01BQy9CLEVBQUU1SCxRQUFReUIsTUFBTTFCLEdBQUcsRUFBRTs7RUFFekIsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLE1BQU1XLE1BQU02RSxjQUFjQyxLQUFLLENBQUNtQixRQUNwQ2xCLElBQUksQ0FBQyxDQUFDQyxTQUFXQSxPQUFPM0MsR0FBRztJQUNoQyxFQUFFLE9BQU9tRSxPQUFPO1FBQ2QsTUFBTTVHLFNBQVM7WUFDYndEO1lBQ0FRLFVBQVUxRDtZQUNWMkQsT0FBT3BFLFdBQVdnSCxjQUFjO1FBQ2xDLEdBQUdELE9BQWdCdkY7SUFDckI7QUFDRixFQUFFO0FBRUYsT0FBTyxNQUFNNkksd0JBQXdCLE9BQ25DN0ksU0FDQUMsUUFDQUMsY0FDQVA7SUFFQSxNQUFNd0MsU0FBUztJQUNmLE1BQU0sRUFBQ3lCLFlBQVksRUFBQyxHQUFHNUQ7SUFDdkIsTUFBTUssZUFBZXJDLGNBQWNpQztJQUNuQyxNQUFNeUYscUJBQXFCekgsVUFBVWlDLGNBQWM7SUFDbkQsTUFBTSxFQUFDSixLQUFLLEVBQUMsR0FBR0oscUJBQXFCQztJQUVyQyxNQUFNc0csZUFBZXBILGtCQUFrQjtRQUNyQ3FILE9BQU87UUFDUEMsWUFBWTtZQUNWO2dCQUFDQyxPQUFPO2dCQUFRQyxVQUFVO2dCQUFNdkQsT0FBTzRDO1lBQWtCO1NBQzFEO0lBQ0gsR0FBRztJQUVILE1BQU1WLFNBQW1CNUcsR0FBRyxDQUFDO3lCQUNOLEVBQUVpQyxhQUFhLENBQUMsRUFBRW5CLHNCQUFzQjthQUNwRCxFQUFFYixRQUFRNEgsY0FBYztNQUMvQixFQUFFNUgsUUFBUXlCLE1BQU0xQixHQUFHLEVBQUU7O0VBRXpCLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxNQUFNVyxNQUFNNkUsY0FBY0MsS0FBSyxDQUFDbUIsUUFDcENsQixJQUFJLENBQUMsQ0FBQ0MsU0FBV0EsT0FBTzNDLEdBQUc7SUFDaEMsRUFBRSxPQUFPbUUsT0FBTztRQUNkLE1BQU01RyxTQUFTO1lBQ2J3RDtZQUNBUSxVQUFVMUQ7WUFDVjJELE9BQU9wRSxXQUFXZ0gsY0FBYztRQUNsQyxHQUFHRCxPQUFnQnZGO0lBQ3JCO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTThJLGNBQWMsT0FDekI5SSxTQUNBQyxRQUNBQyxjQUNBNkksWUFBK0IsVUFBVTtJQUV6QyxNQUFNNUcsU0FBUztJQUNmLE1BQU0sRUFBQ3lCLFlBQVksRUFBQyxHQUFHNUQ7SUFDdkIsTUFBTTBDLFlBQVlGLGdCQUFnQnhDLFNBQVNtQztJQUUzQyxNQUFNMkQsZUFBZSxHQUFHeEgsWUFBWWUsS0FBSyxDQUFDLENBQUMsRUFBRXFELFdBQVc7SUFDeEQsTUFBTXJDLGVBQWVyQyxjQUFjaUM7SUFDbkMsTUFBTStJLGtCQUFrQkQsY0FBYyxhQUFhLGFBQWE7SUFDaEUsTUFBTUUsWUFBWUYsY0FBYyxhQUFhLFFBQVE7SUFFckQsTUFBTTlDLGVBQWVwSCxrQkFBa0I7UUFDckNxSCxPQUFPO1FBQ1BDLFlBQVk7WUFDVjtnQkFBQ0MsT0FBTztnQkFBUUMsVUFBVTtnQkFBTXZELE9BQU81QztZQUFZO1lBQ25EO2dCQUFDa0csT0FBTzZDO2dCQUFXNUMsVUFBVTtnQkFBTXZELE9BQU96QztZQUFZO1NBQ3ZEO0lBQ0gsR0FBRztJQUVILE1BQU0yRSxTQUFtQjVHLEdBQUcsQ0FBQztnQkFDZixFQUFFQyxRQUFRMkssaUJBQWlCLENBQUMsRUFBRWxELGFBQWEsQ0FBQyxFQUFFNUcsc0JBQXNCO2FBQ3ZFLEVBQUViLFFBQVE0SCxjQUFjOzs7RUFHbkMsQ0FBQztJQUVELElBQUk7UUFDRixNQUFNZixXQUFXLE1BQU1uRyxNQUFNNkUsY0FBY0MsS0FBSyxDQUFDbUIsUUFDOUNsQixJQUFJLENBQUMsQ0FBQ0MsU0FBV0EsT0FBT0MsSUFBSTtRQUMvQixPQUFPa0IsV0FBV0EsU0FBU3BDLEtBQUssS0FBSyxTQUFTO0lBQ2hELEVBQUUsT0FBT3lDLE9BQU87UUFDZCxNQUFNNUcsU0FBUztZQUNid0Q7WUFDQVEsVUFBVTFEO1lBQ1YyRCxPQUFPcEUsV0FBV2dILGNBQWM7UUFDbEMsR0FBR0QsT0FBZ0J2RjtJQUNyQjtBQUNGLEVBQUUifQ==
|
|
656
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvcmVhY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge3BhcnNlTnVtfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9udW1iZXJzJztcbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VBcmFuZ29JZCwgcGFyc2VDaGFyLCBwYXJzZUlkLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeSwgbGl0ZXJhbH0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtDT0xMRUNUSU9OUywgRURHRVN9IGZyb20gJy4uL2NvbnN0YW50cy9jb2xsZWN0aW9ucy5qcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7Z2V0Q29ubmVjdGlvbnNCeVVzZXJ9IGZyb20gJy4uL2xhbWJkYXMvYWN0aW9ucy93ZWJzb2NrZXRzLmpzJztcbmltcG9ydCB7d3NDbGllbnR9IGZyb20gJy4uL2xhbWJkYXMvdXRpbHMvd2Vic29ja2V0LmpzJztcbmltcG9ydCB7bG9nRXJyb3IsIGxvZ0V4Y2VwdGlvbn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHtidWlsZEZpbHRlckNsYXVzZX0gZnJvbSAnLi4vdXRpbHMvYXFsSGVscGVycy5qcyc7XG5pbXBvcnQge2dldExpbWl0LCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge2dldEltYWdlQnlJZH0gZnJvbSAnLi9pbWFnZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7RWRnZUNvbGxlY3Rpb259IGZyb20gJ2FyYW5nb2pzL2NvbGxlY3Rpb25zJztcbmltcG9ydCB0eXBlIHtRdWVyeUZpbHRlcn0gZnJvbSAnLi4vdHlwZXMvYXBwcy50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QXJhbmdvRGJDb2xsZWN0aW9uLCBBcmFuZ29EYkxpbWl0LCBGaWx0ZXJDb25kaXRpb24sIEZpbHRlck9wZXJhdG9yfSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7VXNlclJlYWN0aW9uUXVlcnksIFVzZXJUeXBlfSBmcm9tICcuLi90eXBlcy91c2Vycy50eXBlcy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAncmVhY3Rpb25zJztcbmNvbnN0IGhhc1JlYWN0aW9uQ29sbGVjdGlvbiA9IGxpdGVyYWwoRURHRVMuSEFTX1JFQUNUSU9OKTtcbmNvbnN0IHVzZXJzQ29sbGVjdGlvbiA9IGxpdGVyYWwoQ09MTEVDVElPTlMuVVNFUlMpO1xuY29uc3QgUEhPVE9fUkVBQ1RJT05fTkFNRVMgPSBbJ2Rpc2xpa2UnLCAnbGlrZScsICdzYXZlZCddIGFzIGNvbnN0O1xuY29uc3QgT1BQT1NJTkdfUkVBQ1RJT05fTkFNRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRpc2xpa2U6ICdsaWtlJyxcbiAgbGlrZTogJ2Rpc2xpa2UnXG59O1xuXG5leHBvcnQgdHlwZSBSZWFjdGlvbkRpcmVjdGlvbiA9ICdJTkJPVU5EJyB8ICdPVVRCT1VORCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3Rpb24ge1xuICByZWFkb25seSBfZnJvbT86IHN0cmluZztcbiAgcmVhZG9ubHkgX2tleT86IHN0cmluZztcbiAgcmVhZG9ubHkgX3RvPzogc3RyaW5nO1xuICByZWFkb25seSBhZGRlZD86IG51bWJlcjtcbiAgcmVhZG9ubHkgY291bnQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB0eXBlPzogQXJhbmdvRGJDb2xsZWN0aW9uO1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdGlvbk9wdGlvbnMge1xuICByZWFkb25seSBmcm9tPzogbnVtYmVyO1xuICByZWFkb25seSB0bz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJzb25hUmVhY3Rpb24ge1xuICByZWFkb25seSBfZnJvbT86IHN0cmluZztcbiAgcmVhZG9ubHkgX2tleT86IHN0cmluZztcbiAgcmVhZG9ubHkgX3RvPzogc3RyaW5nO1xuICByZWFkb25seSBhZGRlZD86IG51bWJlcjtcbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgcGFyc2VSZWFjdGlvbk9wdGlvbnMgPSAob3B0aW9uczogUmVhY3Rpb25PcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGZyb20gPSAwLFxuICAgIHRvID0gMzBcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBsaW1pdDogZ2V0TGltaXQoZnJvbSwgdG8pIGFzIEFyYW5nb0RiTGltaXRcbiAgfTtcbn07XG5cbmNvbnN0IGVtaXRQaG90b1JlYWN0aW9uVXBkYXRlID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBub3JtYWxpemVkUmVhY3Rpb25OYW1lID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuXG4gIGlmKCFQSE9UT19SRUFDVElPTl9OQU1FUy5pbmNsdWRlcyhub3JtYWxpemVkUmVhY3Rpb25OYW1lIGFzIHR5cGVvZiBQSE9UT19SRUFDVElPTl9OQU1FU1tudW1iZXJdKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdEl0ZW1JZCA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcblxuICBpZighZm9ybWF0SXRlbUlkLnN0YXJ0c1dpdGgoYCR7Q09MTEVDVElPTlMuSU1BR0VTfS9gKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGltYWdlSWQgPSBwYXJzZUlkKGZvcm1hdEl0ZW1JZC5zcGxpdCgnLycpLmF0KC0xKSB8fCAnJyk7XG5cbiAgaWYoIWltYWdlSWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBpbWFnZSA9IGF3YWl0IGdldEltYWdlQnlJZChjb250ZXh0LCBpbWFnZUlkKS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgY29uc3Qgb3duZXJVc2VySWQgPSBwYXJzZUlkKFN0cmluZyhpbWFnZT8udXNlcklkIHx8ICcnKSk7XG5cbiAgaWYoIW93bmVyVXNlcklkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgW2Zhdm9yaXRlQ291bnQsIGxpa2VDb3VudCwgZGlzbGlrZUNvdW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICBnZXRSZWFjdGlvbkNvdW50KGNvbnRleHQsIGZvcm1hdEl0ZW1JZCwgJ3NhdmVkJykuY2F0Y2goKCkgPT4gMCksXG4gICAgZ2V0UmVhY3Rpb25Db3VudChjb250ZXh0LCBmb3JtYXRJdGVtSWQsICdsaWtlJykuY2F0Y2goKCkgPT4gMCksXG4gICAgZ2V0UmVhY3Rpb25Db3VudChjb250ZXh0LCBmb3JtYXRJdGVtSWQsICdkaXNsaWtlJykuY2F0Y2goKCkgPT4gMClcbiAgXSk7XG4gIGNvbnN0IGNvbm5lY3Rpb25zID0gYXdhaXQgZ2V0Q29ubmVjdGlvbnNCeVVzZXIob3duZXJVc2VySWQpLmNhdGNoKCgpID0+IFtdKTtcbiAgY29uc3QgY29ubmVjdGlvbklkcyA9IGNvbm5lY3Rpb25zXG4gICAgLm1hcCgoY29ubmVjdGlvbikgPT4gcGFyc2VTdHJpbmcoY29ubmVjdGlvbj8uY29ubmVjdGlvbklkIHx8IGNvbm5lY3Rpb24/LnNvY2tldElkIHx8ICcnLCAzMikpXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5maWx0ZXIoKGNvbm5lY3Rpb25JZCwgaW5kZXgsIGxpc3QpID0+IGxpc3QuaW5kZXhPZihjb25uZWN0aW9uSWQpID09PSBpbmRleCk7XG5cbiAgaWYoIWNvbm5lY3Rpb25JZHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXdhaXQgd3NDbGllbnQuc2VuZChjb25uZWN0aW9uSWRzLCB7XG4gICAgYWN0aW9uOiAncGhvdG8ucmVhY3Rpb24udXBkYXRlZCcsXG4gICAgZGF0YToge1xuICAgICAgaW1hZ2VJZCxcbiAgICAgIHJlYWN0aW9uczoge1xuICAgICAgICBkaXNsaWtlOiBOdW1iZXIoZGlzbGlrZUNvdW50IHx8IDApLFxuICAgICAgICBsaWtlOiBOdW1iZXIobGlrZUNvdW50IHx8IDApLFxuICAgICAgICBzYXZlZDogTnVtYmVyKGZhdm9yaXRlQ291bnQgfHwgMClcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcblxuY29uc3QgdmFsaWRhdGVTZXNzaW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFjdGlvbjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qge3Nlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH0gPSB7fX0gPSBjb250ZXh0O1xuXG4gIGlmICghc2Vzc2lvbklkKSB7XG4gICAgdGhyb3cgbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc2Vzc2lvbklkO1xufTtcblxuY29uc3QgZ2V0UGVyc29uYURvY0lkID0gKHBlcnNvbmFJZDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgcGVyc29uYURvY0lkID0gcGFyc2VBcmFuZ29JZChwZXJzb25hSWQpO1xuXG4gIGlmKHBlcnNvbmFEb2NJZCkge1xuICAgIHJldHVybiBwZXJzb25hRG9jSWQ7XG4gIH1cblxuICBjb25zdCBwZXJzb25hS2V5ID0gcGFyc2VJZChwZXJzb25hSWQpO1xuICByZXR1cm4gcGVyc29uYUtleSA/IGAke0NPTExFQ1RJT05TLlBFUlNPTkFTfS8ke3BlcnNvbmFLZXl9YCA6ICcnO1xufTtcblxuY29uc3QgZ2V0UmVhY3Rpb25QZXJzb25hRG9jSWQgPSAoY29udGV4dDogQXBpQ29udGV4dCwgcGVyc29uYUlkOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCByZXF1ZXN0ZWRQZXJzb25hRG9jSWQgPSBnZXRQZXJzb25hRG9jSWQocGVyc29uYUlkKTtcbiAgY29uc3Qgc2Vzc2lvblBlcnNvbmFEb2NJZCA9IGdldFBlcnNvbmFEb2NJZChTdHJpbmcoY29udGV4dD8uc2Vzc2lvbj8ucGVyc29uYUlkIHx8ICcnKSk7XG5cbiAgcmV0dXJuIHJlcXVlc3RlZFBlcnNvbmFEb2NJZCB8fCBzZXNzaW9uUGVyc29uYURvY0lkO1xufTtcblxuY29uc3QgYXNzZXJ0UGVyc29uYVJlYWN0aW9uU291cmNlID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBwZXJzb25hRG9jSWQ6IHN0cmluZyxcbiAgYWN0aW9uOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBzZXNzaW9uVXNlcklkID0gcGFyc2VJZChTdHJpbmcoY29udGV4dD8uc2Vzc2lvbj8udXNlcklkIHx8ICcnKSk7XG4gIGNvbnN0IHBlcnNvbmFLZXkgPSBwYXJzZUlkKHBlcnNvbmFEb2NJZCk7XG4gIGNvbnN0IHNlc3Npb25QZXJzb25hS2V5ID0gcGFyc2VJZChTdHJpbmcoY29udGV4dD8uc2Vzc2lvbj8ucGVyc29uYUlkIHx8ICcnKSk7XG5cbiAgaWYoIXBlcnNvbmFLZXkgfHwgIXNlc3Npb25Vc2VySWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWRfc2Vzc2lvbicpO1xuICB9XG5cbiAgaWYoc2Vzc2lvblBlcnNvbmFLZXkgJiYgcGVyc29uYUtleSA9PT0gc2Vzc2lvblBlcnNvbmFLZXkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB1c2VyID0gYXdhaXQgdXNlRGIoY29udGV4dC5kYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbGBcbiAgICBSRVRVUk4gRE9DVU1FTlQoJHt1c2Vyc0NvbGxlY3Rpb259LCAke3Nlc3Npb25Vc2VySWR9KVxuICBgKS50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpLmNhdGNoKCgpID0+IG51bGwpO1xuICBjb25zdCB1c2VyUGVyc29uYUtleSA9IHBhcnNlSWQoU3RyaW5nKHVzZXI/LnBlcnNvbmFJZCB8fCAnJykpO1xuXG4gIGlmKHVzZXJQZXJzb25hS2V5ICYmIHBlcnNvbmFLZXkgPT09IHVzZXJQZXJzb25hS2V5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgIGFjdGlvbixcbiAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICBsYWJlbDogJ2ludmFsaWRfcGVyc29uYV9yZWFjdGlvbl9zb3VyY2UnLFxuICAgIHZhbHVlOiAnaW52YWxpZF9wZXJzb25hX3JlYWN0aW9uX3NvdXJjZSdcbiAgfSwgbmV3IEVycm9yKCdpbnZhbGlkX3BlcnNvbmFfcmVhY3Rpb25fc291cmNlJyksIGNvbnRleHQpO1xufTtcblxuY29uc3QgYnVpbGRQZXJzb25hUmVhY3Rpb24gPSAoXG4gIHBlcnNvbmFEb2NJZDogc3RyaW5nLFxuICBpdGVtRG9jSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmcsXG4gIHJlYWN0aW9uVHlwZTogc3RyaW5nLFxuICByZWFjdGlvblZhbHVlOiBzdHJpbmdcbik6IFBlcnNvbmFSZWFjdGlvbiA9PiAoe1xuICBfZnJvbTogcGVyc29uYURvY0lkLFxuICBfa2V5OiBjcmVhdGVIYXNoKGByZWFjdGlvbi0ke2l0ZW1Eb2NJZH0tJHtwZXJzb25hRG9jSWR9LSR7cmVhY3Rpb25OYW1lfWApLFxuICBfdG86IGl0ZW1Eb2NJZCxcbiAgYWRkZWQ6IERhdGUubm93KCksXG4gIG5hbWU6IHJlYWN0aW9uTmFtZSxcbiAgdHlwZTogcmVhY3Rpb25UeXBlLFxuICB2YWx1ZTogcmVhY3Rpb25WYWx1ZSB8fCB1bmRlZmluZWRcbn0pO1xuXG5jb25zdCByZW1vdmVQZXJzb25hUmVhY3Rpb24gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHBlcnNvbmFEb2NJZDogc3RyaW5nLFxuICBpdGVtRG9jSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmdcbik6IFByb21pc2U8UGVyc29uYVJlYWN0aW9uIHwgbnVsbD4gPT4ge1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgIEZPUiByZWFjdGlvbiBJTiAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiByZWFjdGlvbi5fZnJvbSA9PSAke3BlcnNvbmFEb2NJZH1cbiAgICAgIEZJTFRFUiByZWFjdGlvbi5fdG8gPT0gJHtpdGVtRG9jSWR9XG4gICAgICBGSUxURVIgcmVhY3Rpb24ubmFtZSA9PSAke3JlYWN0aW9uTmFtZX1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFTU9WRSByZWFjdGlvbiBJTiAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIFJFVFVSTiBPTERcbiAgYDtcblxuICByZXR1cm4gdXNlRGIoY29udGV4dC5kYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIGFzIFByb21pc2U8UGVyc29uYVJlYWN0aW9uIHwgbnVsbD4pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFBlcnNvbmFSZWFjdGlvbiA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgcGVyc29uYUlkOiBzdHJpbmcsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbjogUGVyc29uYVJlYWN0aW9uID0ge31cbik6IFByb21pc2U8UGVyc29uYVJlYWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdhZGRQZXJzb25hUmVhY3Rpb24nO1xuICBjb25zdCBwZXJzb25hRG9jSWQgPSBnZXRSZWFjdGlvblBlcnNvbmFEb2NJZChjb250ZXh0LCBwZXJzb25hSWQpO1xuICBjb25zdCBpdGVtRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IHJlYWN0aW9uTmFtZSA9IHBhcnNlQ2hhcihyZWFjdGlvbj8ubmFtZSB8fCAnbGlrZScsIDMyKTtcbiAgY29uc3QgcmVhY3Rpb25UeXBlID0gcGFyc2VDaGFyKHJlYWN0aW9uPy50eXBlIHx8ICcnLCAzMikudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgcmVhY3Rpb25WYWx1ZSA9IHBhcnNlU3RyaW5nKHJlYWN0aW9uPy52YWx1ZSB8fCAnJywgMzIpO1xuXG4gIGF3YWl0IGFzc2VydFBlcnNvbmFSZWFjdGlvblNvdXJjZShjb250ZXh0LCBwZXJzb25hRG9jSWQsIGFjdGlvbik7XG5cbiAgY29uc3QgbmV4dFJlYWN0aW9uID0gYnVpbGRQZXJzb25hUmVhY3Rpb24ocGVyc29uYURvY0lkLCBpdGVtRG9jSWQsIHJlYWN0aW9uTmFtZSwgcmVhY3Rpb25UeXBlLCByZWFjdGlvblZhbHVlKTtcblxuICB0cnkge1xuICAgIGNvbnN0IG9wcG9zaW5nUmVhY3Rpb25OYW1lID0gT1BQT1NJTkdfUkVBQ1RJT05fTkFNRVNbcmVhY3Rpb25OYW1lXTtcblxuICAgIGlmKG9wcG9zaW5nUmVhY3Rpb25OYW1lKSB7XG4gICAgICBhd2FpdCByZW1vdmVQZXJzb25hUmVhY3Rpb24oY29udGV4dCwgcGVyc29uYURvY0lkLCBpdGVtRG9jSWQsIG9wcG9zaW5nUmVhY3Rpb25OYW1lKTtcbiAgICAgIGF3YWl0IGVtaXRQaG90b1JlYWN0aW9uVXBkYXRlKGNvbnRleHQsIGl0ZW1Eb2NJZCwgb3Bwb3NpbmdSZWFjdGlvbk5hbWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgICBVUFNFUlQge19mcm9tOiAke3BlcnNvbmFEb2NJZH0sIF90bzogJHtpdGVtRG9jSWR9LCBuYW1lOiAke3JlYWN0aW9uTmFtZX19XG4gICAgICBJTlNFUlQgJHtuZXh0UmVhY3Rpb259XG4gICAgICBVUERBVEUge1xuICAgICAgICBuYW1lOiAke3JlYWN0aW9uTmFtZX0sXG4gICAgICAgIHR5cGU6ICR7cmVhY3Rpb25UeXBlfSxcbiAgICAgICAgdmFsdWU6ICR7cmVhY3Rpb25WYWx1ZSB8fCBudWxsfVxuICAgICAgfSBJTiAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIFJFVFVSTiBORVdcbiAgICBgO1xuXG4gICAgY29uc3Qgc2F2ZWRSZWFjdGlvbiA9IGF3YWl0IHVzZURiKGNvbnRleHQuZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIGFzIFByb21pc2U8UGVyc29uYVJlYWN0aW9uPik7XG4gICAgYXdhaXQgZW1pdFBob3RvUmVhY3Rpb25VcGRhdGUoY29udGV4dCwgaXRlbURvY0lkLCByZWFjdGlvbk5hbWUpO1xuICAgIHJldHVybiBzYXZlZFJlYWN0aW9uO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yIGFzIEVycm9yLCBjb250ZXh0KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZVBlcnNvbmFSZWFjdGlvbiA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgcGVyc29uYUlkOiBzdHJpbmcsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxQZXJzb25hUmVhY3Rpb24gfCBudWxsPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdkZWxldGVQZXJzb25hUmVhY3Rpb24nO1xuICBjb25zdCBwZXJzb25hRG9jSWQgPSBnZXRSZWFjdGlvblBlcnNvbmFEb2NJZChjb250ZXh0LCBwZXJzb25hSWQpO1xuICBjb25zdCBpdGVtRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZSA9IHBhcnNlQ2hhcihyZWFjdGlvbk5hbWUsIDMyKTtcblxuICBhd2FpdCBhc3NlcnRQZXJzb25hUmVhY3Rpb25Tb3VyY2UoY29udGV4dCwgcGVyc29uYURvY0lkLCBhY3Rpb24pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZGVsZXRlZFJlYWN0aW9uID0gYXdhaXQgcmVtb3ZlUGVyc29uYVJlYWN0aW9uKGNvbnRleHQsIHBlcnNvbmFEb2NJZCwgaXRlbURvY0lkLCBmb3JtYXRSZWFjdGlvbk5hbWUpO1xuXG4gICAgaWYoZGVsZXRlZFJlYWN0aW9uPy5uYW1lKSB7XG4gICAgICBhd2FpdCBlbWl0UGhvdG9SZWFjdGlvblVwZGF0ZShjb250ZXh0LCBpdGVtRG9jSWQsIFN0cmluZyhkZWxldGVkUmVhY3Rpb24ubmFtZSB8fCAnJykpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVkUmVhY3Rpb247XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaGFzUGVyc29uYVJlYWN0aW9uID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBwZXJzb25hSWQ6IHN0cmluZyxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2hhc1BlcnNvbmFSZWFjdGlvbic7XG4gIGNvbnN0IHBlcnNvbmFEb2NJZCA9IGdldFJlYWN0aW9uUGVyc29uYURvY0lkKGNvbnRleHQsIHBlcnNvbmFJZCk7XG4gIGNvbnN0IGl0ZW1Eb2NJZCA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuXG4gIGF3YWl0IGFzc2VydFBlcnNvbmFSZWFjdGlvblNvdXJjZShjb250ZXh0LCBwZXJzb25hRG9jSWQsIGFjdGlvbik7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBGT1IgcmVhY3Rpb24gSU4gJHtoYXNSZWFjdGlvbkNvbGxlY3Rpb259XG4gICAgICBGSUxURVIgcmVhY3Rpb24uX2Zyb20gPT0gJHtwZXJzb25hRG9jSWR9XG4gICAgICBGSUxURVIgcmVhY3Rpb24uX3RvID09ICR7aXRlbURvY0lkfVxuICAgICAgRklMVEVSIHJlYWN0aW9uLm5hbWUgPT0gJHtmb3JtYXRSZWFjdGlvbk5hbWV9XG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gdHJ1ZVxuICBgO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuICEhKGF3YWl0IHVzZURiKGNvbnRleHQuZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgcmVhY3Rpb24gZWRnZSBkb2N1bWVudFxuICovXG5jb25zdCBjcmVhdGVSZWFjdGlvbkVkZ2UgPSAoXG4gIHNlc3Npb25JZDogc3RyaW5nLFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmcsXG4gIHJlYWN0aW9uVHlwZT86IEFyYW5nb0RiQ29sbGVjdGlvbixcbiAgcmVhY3Rpb25WYWx1ZT86IHN0cmluZ1xuKTogUmVhY3Rpb24gPT4ge1xuICBjb25zdCBzZXNzaW9uRG9jSWQgPSBgJHtDT0xMRUNUSU9OUy5VU0VSU30vJHtzZXNzaW9uSWR9YDtcbiAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgcmVhY3Rpb24tJHtpdGVtSWR9LSR7c2Vzc2lvbklkfWApO1xuXG4gIHJldHVybiB7XG4gICAgX2Zyb206IHNlc3Npb25Eb2NJZCxcbiAgICBfa2V5OiBlZGdlSWQsXG4gICAgX3RvOiBpdGVtSWQsXG4gICAgYWRkZWQ6IERhdGUubm93KCksXG4gICAgbmFtZTogcmVhY3Rpb25OYW1lLFxuICAgIHR5cGU6IHJlYWN0aW9uVHlwZSxcbiAgICB2YWx1ZTogcmVhY3Rpb25WYWx1ZSAhPT0gdW5kZWZpbmVkID8gcmVhY3Rpb25WYWx1ZSA6IHVuZGVmaW5lZFxuICB9O1xufTtcblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgaWYgcmVhY3Rpb24gZXhpc3RzXG4gKi9cbmNvbnN0IGZpbmRFeGlzdGluZ1JlYWN0aW9uID0gYXN5bmMgKFxuICBkYXRhYmFzZU5hbWU6IHN0cmluZyxcbiAgc2Vzc2lvbkRvY0lkOiBzdHJpbmcsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxSZWFjdGlvbiB8IG51bGw+ID0+IHtcbiAgY29uc3QgZmlsdGVyQ2xhdXNlID0gYnVpbGRGaWx0ZXJDbGF1c2Uoe1xuICAgIGxvZ2ljOiAnQU5EJyxcbiAgICBjb25kaXRpb25zOiBbXG4gICAgICB7ZmllbGQ6ICdfZnJvbScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogc2Vzc2lvbkRvY0lkfSxcbiAgICAgIHtmaWVsZDogJ190bycsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogaXRlbUlkfSxcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IHJlYWN0aW9uTmFtZX1cbiAgICBdXG4gIH0sICdyJyk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBGT1IgciBJTiAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyQ2xhdXNlKX1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiByXG4gIGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKCgpID0+IG51bGwpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFJlYWN0aW9uID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb246IFJlYWN0aW9uID0ge30sXG4gIGFsbG93RHVwbGljYXRlOiBib29sZWFuID0gZmFsc2Vcbik6IFByb21pc2U8UmVhY3Rpb24+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZFJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBzZXNzaW9uSWQgPSB2YWxpZGF0ZVNlc3Npb24oY29udGV4dCwgYWN0aW9uKTtcblxuICBjb25zdCB7XG4gICAgbmFtZTogaXRlbU5hbWUgPSAnbGlrZScsXG4gICAgdHlwZTogaXRlbVR5cGUsXG4gICAgdmFsdWU6IGl0ZW1WYWx1ZVxuICB9ID0gcmVhY3Rpb247XG5cbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWUgPSBwYXJzZUNoYXIoaXRlbU5hbWUsIDMyKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25UeXBlID0gcGFyc2VDaGFyKGl0ZW1UeXBlLCAzMikudG9Mb3dlckNhc2UoKSBhcyBBcmFuZ29EYkNvbGxlY3Rpb247XG4gIGNvbnN0IGZvcm1hdFZhbHVlID0gcGFyc2VTdHJpbmcoaXRlbVZhbHVlLCAzMik7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZCA9IGAke0NPTExFQ1RJT05TLlVTRVJTfS8ke3Nlc3Npb25JZH1gO1xuXG4gIGNvbnN0IGVkZ2UgPSBjcmVhdGVSZWFjdGlvbkVkZ2Uoc2Vzc2lvbklkLCBmb3JtYXRJdGVtSWQsIGZvcm1hdFJlYWN0aW9uTmFtZSwgZm9ybWF0UmVhY3Rpb25UeXBlLCBmb3JtYXRWYWx1ZSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBvcHBvc2luZ1JlYWN0aW9uTmFtZSA9IE9QUE9TSU5HX1JFQUNUSU9OX05BTUVTW2Zvcm1hdFJlYWN0aW9uTmFtZV07XG5cbiAgICBpZihvcHBvc2luZ1JlYWN0aW9uTmFtZSkge1xuICAgICAgY29uc3Qgb3Bwb3NpbmdSZWFjdGlvbiA9IGF3YWl0IGZpbmRFeGlzdGluZ1JlYWN0aW9uKFxuICAgICAgICBkYXRhYmFzZU5hbWUsXG4gICAgICAgIHNlc3Npb25Eb2NJZCxcbiAgICAgICAgZm9ybWF0SXRlbUlkLFxuICAgICAgICBvcHBvc2luZ1JlYWN0aW9uTmFtZVxuICAgICAgKTtcblxuICAgICAgaWYob3Bwb3NpbmdSZWFjdGlvbj8uX2tleSkge1xuICAgICAgICBjb25zdCBlZGdlQ29sbGVjdGlvbjogRWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZU5hbWUpLmNvbGxlY3Rpb24oRURHRVMuSEFTX1JFQUNUSU9OKTtcbiAgICAgICAgYXdhaXQgZWRnZUNvbGxlY3Rpb24ucmVtb3ZlKG9wcG9zaW5nUmVhY3Rpb24uX2tleSk7XG4gICAgICAgIGF3YWl0IGVtaXRQaG90b1JlYWN0aW9uVXBkYXRlKGNvbnRleHQsIGZvcm1hdEl0ZW1JZCwgb3Bwb3NpbmdSZWFjdGlvbk5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBkdXBsaWNhdGVzIGlmIG5vdCBhbGxvd2VkXG4gICAgaWYgKCFhbGxvd0R1cGxpY2F0ZSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdSZWFjdGlvbiA9IGF3YWl0IGZpbmRFeGlzdGluZ1JlYWN0aW9uKFxuICAgICAgICBkYXRhYmFzZU5hbWUsXG4gICAgICAgIHNlc3Npb25Eb2NJZCxcbiAgICAgICAgZm9ybWF0SXRlbUlkLFxuICAgICAgICBmb3JtYXRSZWFjdGlvbk5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmIChleGlzdGluZ1JlYWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZ1JlYWN0aW9uO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVkZ2VDb2xsZWN0aW9uOiBFZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbihFREdFUy5IQVNfUkVBQ1RJT04pO1xuICAgIGF3YWl0IGVkZ2VDb2xsZWN0aW9uLnNhdmUoZWRnZSwge3JldHVybk5ldzogdHJ1ZX0pO1xuICAgIGF3YWl0IGVtaXRQaG90b1JlYWN0aW9uVXBkYXRlKGNvbnRleHQsIGZvcm1hdEl0ZW1JZCwgZm9ybWF0UmVhY3Rpb25OYW1lKTtcbiAgICByZXR1cm4gZWRnZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlUmVhY3Rpb24gPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgcmVhY3Rpb25JZDogc3RyaW5nKTogUHJvbWlzZTxSZWFjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZGVsZXRlUmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlc3Npb25JZCA9IHZhbGlkYXRlU2Vzc2lvbihjb250ZXh0LCBhY3Rpb24pO1xuXG4gIGNvbnN0IGZvcm1hdFNlc3Npb25JZCA9IGAke0NPTExFQ1RJT05TLlVTRVJTfS8ke3BhcnNlSWQoc2Vzc2lvbklkKX1gO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbklkID0gYCR7RURHRVMuSEFTX1JFQUNUSU9OfS8ke3BhcnNlSWQocmVhY3Rpb25JZCl9YDtcblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZSh7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgIHtmaWVsZDogJ19mcm9tJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBmb3JtYXRTZXNzaW9uSWR9XG4gICAgXVxuICB9LCAncicpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgTEVUIHIgPSBET0NVTUVOVCgke2Zvcm1hdFJlYWN0aW9uSWR9KVxuICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyQ2xhdXNlKX1cbiAgICBMSU1JVCAxXG4gICAgUkVNT1ZFIHIgSU4gJHtoYXNSZWFjdGlvbkNvbGxlY3Rpb259XG4gICAgUkVUVVJOIE9MRFxuICBgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZGVsZXRlZFJlYWN0aW9uID0gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKTtcblxuICAgIGlmKGRlbGV0ZWRSZWFjdGlvbj8uX3RvICYmIGRlbGV0ZWRSZWFjdGlvbj8ubmFtZSkge1xuICAgICAgYXdhaXQgZW1pdFBob3RvUmVhY3Rpb25VcGRhdGUoY29udGV4dCwgU3RyaW5nKGRlbGV0ZWRSZWFjdGlvbi5fdG8gfHwgJycpLCBTdHJpbmcoZGVsZXRlZFJlYWN0aW9uLm5hbWUgfHwgJycpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZFJlYWN0aW9uO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVSZWFjdGlvbkJ5SXRlbSA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFJlYWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdkZWxldGVSZWFjdGlvbkJ5SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3Qgc2Vzc2lvbklkID0gdmFsaWRhdGVTZXNzaW9uKGNvbnRleHQsIGFjdGlvbik7XG5cbiAgY29uc3QgZm9ybWF0U2Vzc2lvbklkID0gYCR7Q09MTEVDVElPTlMuVVNFUlN9LyR7cGFyc2VJZChzZXNzaW9uSWQpfWA7XG4gIGNvbnN0IGZvcm1hdEl0ZW1Eb2NJZCA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSk7XG5cbiAgY29uc3QgZmlsdGVyQ2xhdXNlID0gYnVpbGRGaWx0ZXJDbGF1c2Uoe1xuICAgIGxvZ2ljOiAnQU5EJyxcbiAgICBjb25kaXRpb25zOiBbXG4gICAgICB7ZmllbGQ6ICdfZnJvbScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0U2Vzc2lvbklkfSxcbiAgICAgIHtmaWVsZDogJ190bycsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0SXRlbURvY0lkfSxcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICBdXG4gIH0sICdyJyk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBGT1IgciBJTiAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyQ2xhdXNlKX1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFTU9WRSByIElOICR7aGFzUmVhY3Rpb25Db2xsZWN0aW9ufVxuICAgICAgUkVUVVJOIE9MRFxuICBgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZGVsZXRlZFJlYWN0aW9uID0gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKTtcblxuICAgIGlmKGRlbGV0ZWRSZWFjdGlvbj8ubmFtZSkge1xuICAgICAgYXdhaXQgZW1pdFBob3RvUmVhY3Rpb25VcGRhdGUoY29udGV4dCwgZm9ybWF0SXRlbURvY0lkLCBTdHJpbmcoZGVsZXRlZFJlYWN0aW9uLm5hbWUgfHwgJycpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZFJlYWN0aW9uO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVSZWFjdGlvbiA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCByZWFjdGlvbjogUmVhY3Rpb24gPSB7fSk6IFByb21pc2U8UmVhY3Rpb24+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ3VwZGF0ZVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBzZXNzaW9uSWQgPSB2YWxpZGF0ZVNlc3Npb24oY29udGV4dCwgYWN0aW9uKTtcblxuICBjb25zdCB7XG4gICAgaWQ6IGl0ZW1JZCxcbiAgICBuYW1lOiBpdGVtTmFtZSxcbiAgICB2YWx1ZTogaXRlbVZhbHVlXG4gIH0gPSByZWFjdGlvbjtcbiAgY29uc3QgZm9ybWF0SWQgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdE5hbWUgPSBwYXJzZUNoYXIoaXRlbU5hbWUsIDMyKTtcbiAgY29uc3QgZm9ybWF0VmFsdWUgPSBwYXJzZVN0cmluZyhpdGVtVmFsdWUsIDMyKTtcbiAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgcmVhY3Rpb24tJHtmb3JtYXRJZH0tJHtzZXNzaW9uSWR9YCk7XG4gIGNvbnN0IHVwZGF0ZTogUmVhY3Rpb24gPSB7XG4gICAgbmFtZTogZm9ybWF0TmFtZSxcbiAgICB2YWx1ZTogZm9ybWF0VmFsdWVcbiAgfTtcbiAgY29uc3QgaW5zZXJ0OiBSZWFjdGlvbiA9IHtcbiAgICAuLi51cGRhdGUsXG4gICAgX2tleTogZWRnZUlkLFxuICAgIGFkZGVkOiBEYXRlLm5vdygpXG4gIH07XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQgJHt7X2lkOiBmb3JtYXRJZH19XG4gICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIE5FV2A7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25Db3VudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0UmVhY3Rpb25Db3VudCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWUgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG5cbiAgY29uc3QgZmlsdGVyQ2xhdXNlID0gYnVpbGRGaWx0ZXJDbGF1c2Uoe1xuICAgIGxvZ2ljOiAnQU5EJyxcbiAgICBjb25kaXRpb25zOiBbXG4gICAgICB7ZmllbGQ6ICduYW1lJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBmb3JtYXRSZWFjdGlvbk5hbWV9XG4gICAgXVxuICB9LCAncicpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgRk9SIGksIHIgSU4gSU5CT1VORCAke2Zvcm1hdEl0ZW1JZH0gJHtoYXNSZWFjdGlvbkNvbGxlY3Rpb259XG4gICAgICBGSUxURVIgJHtsaXRlcmFsKGZpbHRlckNsYXVzZSl9XG4gICAgICBDT0xMRUNUIFdJVEggQ09VTlQgSU5UTyBjb3VudFxuICAgICAgUkVUVVJOIGNvdW50XG4gIGA7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25Db3VudEJ5VXNlciA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIGl0ZW1UeXBlOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFJlYWN0aW9uW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldFJlYWN0aW9uQ291bnRCeVVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlc3Npb25JZCA9IHZhbGlkYXRlU2Vzc2lvbihjb250ZXh0LCBhY3Rpb24pO1xuXG4gIGNvbnN0IGZvcm1hdEl0ZW1JZCA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuICBjb25zdCBzZXNzaW9uRG9jSWQgPSBgJHtDT0xMRUNUSU9OUy5VU0VSU30vJHtzZXNzaW9uSWR9YDtcblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZSh7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdFJlYWN0aW9uTmFtZX0sXG4gICAgICB7ZmllbGQ6ICdfZnJvbScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogc2Vzc2lvbkRvY0lkfVxuICAgIF1cbiAgfSwgJ3InKTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgIEZPUiBpLCByIElOIElOQk9VTkQgJHtmb3JtYXRJdGVtSWR9ICR7aGFzUmVhY3Rpb25Db2xsZWN0aW9ufVxuICAgICAgRklMVEVSICR7bGl0ZXJhbChmaWx0ZXJDbGF1c2UpfVxuICAgICAgQ09MTEVDVCByZWFjdGlvblZhbHVlID0gci52YWx1ZSBJTlRPIHJlYWN0aW9uSXRlbXNcbiAgICAgIFJFVFVSTiBNRVJHRShyLCB7Y291bnQ6IExFTkdUSChyZWFjdGlvbkl0ZW1zWypdLnIudmFsdWUpfSlcbiAgYDtcblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yIGFzIEVycm9yLCBjb250ZXh0KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3VwVXNlcnNCeVJlYWN0aW9uID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBhcmFtczogVXNlclJlYWN0aW9uUXVlcnkgPSB7fSk6IFByb21pc2U8VXNlclR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0R3JvdXBVc2Vyc0J5UmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIHZhbGlkYXRlU2Vzc2lvbihjb250ZXh0LCBhY3Rpb24pO1xuXG4gIGNvbnN0IHtmaWx0ZXJzID0gW10sIGlkOiBncm91cElkLCB2YWx1ZX06IFVzZXJSZWFjdGlvblF1ZXJ5ID0gcGFyYW1zO1xuICBjb25zdCByZWFjdGlvbiA9IHBhcnNlQ2hhcih2YWx1ZSwgMzIpO1xuICBjb25zdCBncm91cERvY0lkID0gcGFyc2VBcmFuZ29JZChncm91cElkKTtcblxuICAvLyBCdWlsZCBmaWx0ZXIgY29uZGl0aW9ucyBkeW5hbWljYWxseVxuICBjb25zdCBjb25kaXRpb25zOiBGaWx0ZXJDb25kaXRpb25bXSA9IFtcbiAgICB7ZmllbGQ6ICd2YWx1ZScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogcmVhY3Rpb259XG4gIF07XG5cbiAgLy8gQWRkIGR5bmFtaWMgZmlsdGVycyBmcm9tIHBhcmFtc1xuICBmaWx0ZXJzLmZvckVhY2goKGZpbHRlcjogUXVlcnlGaWx0ZXIpID0+IHtcbiAgICBjb25zdCB7Y29uZGl0aW9uYWwgPSAnJywgbmFtZSwgdmFsdWU6IHF1ZXJ5VmFsdWV9OiBRdWVyeUZpbHRlciA9IGZpbHRlcjtcbiAgICBsZXQgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yID0gJz09JztcblxuICAgIGlmKGNvbmRpdGlvbmFsID09PSAnPj0nIHx8IGNvbmRpdGlvbmFsID09PSAnPD0nIHx8IGNvbmRpdGlvbmFsID09PSAnPicgfHwgY29uZGl0aW9uYWwgPT09ICc8Jykge1xuICAgICAgb3BlcmF0b3IgPSBjb25kaXRpb25hbCBhcyBGaWx0ZXJPcGVyYXRvcjtcbiAgICB9XG5cbiAgICBpZihuYW1lID09PSAnYWRkZWQnKSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goe2ZpZWxkOiAnYWRkZWQnLCBvcGVyYXRvciwgdmFsdWU6IHBhcnNlTnVtKHF1ZXJ5VmFsdWUpfSk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZSh7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnNcbiAgfSwgJ3InKTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgIEZPUiBnLCByIElOIElOQk9VTkQgJHtncm91cERvY0lkfSAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZPUiB1IElOICR7dXNlcnNDb2xsZWN0aW9ufVxuICAgICAgRklMVEVSICR7bGl0ZXJhbChgJHtmaWx0ZXJDbGF1c2V9ICYmIHUuX2lkID09IHIuX2Zyb21gKX1cbiAgICAgIFJFVFVSTiB1XG4gIGA7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWFjdGlvbkxpc3RCeUl0ZW0gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmVhY3Rpb25PcHRpb25zXG4pOiBQcm9taXNlPFVzZXJUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldFJlYWN0aW9uc0J5SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWUgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZVJlYWN0aW9uT3B0aW9ucyhvcHRpb25zKTtcblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZSh7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICBdXG4gIH0sICdyJyk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBGT1IgaSwgciBJTiBJTkJPVU5EICR7Zm9ybWF0SXRlbUlkfSAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyQ2xhdXNlKX1cbiAgICAgICR7bGl0ZXJhbChsaW1pdC5hcWwpfVxuICAgICAgUkVUVVJOIE1FUkdFKGksIHtyZWFjdGlvbjogcn0pXG4gIGA7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJdGVtTGlzdEJ5UmVhY3Rpb24gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmVhY3Rpb25PcHRpb25zXG4pOiBQcm9taXNlPFJlYWN0aW9uW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldEl0ZW1zQnlSZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWUgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZVJlYWN0aW9uT3B0aW9ucyhvcHRpb25zKTtcblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZSh7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IGZvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICBdXG4gIH0sICdyJyk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBGT1IgdSwgciBJTiBPVVRCT1VORCAke2Zvcm1hdEl0ZW1JZH0gJHtoYXNSZWFjdGlvbkNvbGxlY3Rpb259XG4gICAgICBGSUxURVIgJHtsaXRlcmFsKGZpbHRlckNsYXVzZSl9XG4gICAgICAke2xpdGVyYWwobGltaXQuYXFsKX1cbiAgICAgIFJFVFVSTiBNRVJHRSh1LCB7cmVhY3Rpb246IHJ9KVxuICBgO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaGFzUmVhY3Rpb24gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZyxcbiAgZGlyZWN0aW9uOiBSZWFjdGlvbkRpcmVjdGlvbiA9ICdPVVRCT1VORCdcbik6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnaGFzUmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlc3Npb25JZCA9IHZhbGlkYXRlU2Vzc2lvbihjb250ZXh0LCBhY3Rpb24pO1xuXG4gIGNvbnN0IHNlc3Npb25Eb2NJZCA9IGAke0NPTExFQ1RJT05TLlVTRVJTfS8ke3Nlc3Npb25JZH1gO1xuICBjb25zdCBmb3JtYXRJdGVtSWQgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdERpcmVjdGlvbiA9IGRpcmVjdGlvbiA9PT0gJ09VVEJPVU5EJyA/ICdPVVRCT1VORCcgOiAnSU5CT1VORCc7XG4gIGNvbnN0IGl0ZW1GaWVsZCA9IGRpcmVjdGlvbiA9PT0gJ09VVEJPVU5EJyA/ICdfdG8nIDogJ19mcm9tJztcblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZSh7XG4gICAgbG9naWM6ICdBTkQnLFxuICAgIGNvbmRpdGlvbnM6IFtcbiAgICAgIHtmaWVsZDogJ25hbWUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IHJlYWN0aW9uTmFtZX0sXG4gICAgICB7ZmllbGQ6IGl0ZW1GaWVsZCwgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiBmb3JtYXRJdGVtSWR9XG4gICAgXVxuICB9LCAncicpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgRk9SIGksIHIgSU4gJHtsaXRlcmFsKGZvcm1hdERpcmVjdGlvbil9ICR7c2Vzc2lvbkRvY0lkfSAke2hhc1JlYWN0aW9uQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyQ2xhdXNlKX1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiByXG4gIGA7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZWFjdGlvbiA9IGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSk7XG4gICAgcmV0dXJuIHJlYWN0aW9uID8gcmVhY3Rpb24udmFsdWUgPT09ICd0cnVlJyA6IGZhbHNlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsicGFyc2VOdW0iLCJjcmVhdGVIYXNoIiwicGFyc2VBcmFuZ29JZCIsInBhcnNlQ2hhciIsInBhcnNlSWQiLCJwYXJzZVN0cmluZyIsImFxbCIsImxpdGVyYWwiLCJDT0xMRUNUSU9OUyIsIkVER0VTIiwiRXJyb3JUeXBlcyIsImdldENvbm5lY3Rpb25zQnlVc2VyIiwid3NDbGllbnQiLCJsb2dFcnJvciIsImxvZ0V4Y2VwdGlvbiIsImJ1aWxkRmlsdGVyQ2xhdXNlIiwiZ2V0TGltaXQiLCJ1c2VEYiIsImdldEltYWdlQnlJZCIsImV2ZW50Q2F0ZWdvcnkiLCJoYXNSZWFjdGlvbkNvbGxlY3Rpb24iLCJIQVNfUkVBQ1RJT04iLCJ1c2Vyc0NvbGxlY3Rpb24iLCJVU0VSUyIsIlBIT1RPX1JFQUNUSU9OX05BTUVTIiwiT1BQT1NJTkdfUkVBQ1RJT05fTkFNRVMiLCJkaXNsaWtlIiwibGlrZSIsInBhcnNlUmVhY3Rpb25PcHRpb25zIiwib3B0aW9ucyIsImZyb20iLCJ0byIsImxpbWl0IiwiZW1pdFBob3RvUmVhY3Rpb25VcGRhdGUiLCJjb250ZXh0IiwiaXRlbUlkIiwicmVhY3Rpb25OYW1lIiwibm9ybWFsaXplZFJlYWN0aW9uTmFtZSIsImluY2x1ZGVzIiwiZm9ybWF0SXRlbUlkIiwic3RhcnRzV2l0aCIsIklNQUdFUyIsImltYWdlSWQiLCJzcGxpdCIsImF0IiwiaW1hZ2UiLCJjYXRjaCIsIm93bmVyVXNlcklkIiwiU3RyaW5nIiwidXNlcklkIiwiZmF2b3JpdGVDb3VudCIsImxpa2VDb3VudCIsImRpc2xpa2VDb3VudCIsIlByb21pc2UiLCJhbGwiLCJnZXRSZWFjdGlvbkNvdW50IiwiY29ubmVjdGlvbnMiLCJjb25uZWN0aW9uSWRzIiwibWFwIiwiY29ubmVjdGlvbiIsImNvbm5lY3Rpb25JZCIsInNvY2tldElkIiwiZmlsdGVyIiwiQm9vbGVhbiIsImluZGV4IiwibGlzdCIsImluZGV4T2YiLCJsZW5ndGgiLCJzZW5kIiwiYWN0aW9uIiwiZGF0YSIsInJlYWN0aW9ucyIsIk51bWJlciIsInNhdmVkIiwidmFsaWRhdGVTZXNzaW9uIiwic2Vzc2lvbiIsInNlc3Npb25JZCIsImNhdGVnb3J5IiwibGFiZWwiLCJJTlZBTElEX1NFU1NJT04iLCJ2YWx1ZSIsImdldFBlcnNvbmFEb2NJZCIsInBlcnNvbmFJZCIsInBlcnNvbmFEb2NJZCIsInBlcnNvbmFLZXkiLCJQRVJTT05BUyIsImdldFJlYWN0aW9uUGVyc29uYURvY0lkIiwicmVxdWVzdGVkUGVyc29uYURvY0lkIiwic2Vzc2lvblBlcnNvbmFEb2NJZCIsImFzc2VydFBlcnNvbmFSZWFjdGlvblNvdXJjZSIsInNlc3Npb25Vc2VySWQiLCJzZXNzaW9uUGVyc29uYUtleSIsIkVycm9yIiwidXNlciIsImRhdGFiYXNlTmFtZSIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsIm5leHQiLCJ1c2VyUGVyc29uYUtleSIsImJ1aWxkUGVyc29uYVJlYWN0aW9uIiwiaXRlbURvY0lkIiwicmVhY3Rpb25UeXBlIiwicmVhY3Rpb25WYWx1ZSIsIl9mcm9tIiwiX2tleSIsIl90byIsImFkZGVkIiwiRGF0ZSIsIm5vdyIsIm5hbWUiLCJ0eXBlIiwidW5kZWZpbmVkIiwicmVtb3ZlUGVyc29uYVJlYWN0aW9uIiwiYXFsUXJ5IiwiYWRkUGVyc29uYVJlYWN0aW9uIiwicmVhY3Rpb24iLCJ0b0xvd2VyQ2FzZSIsIm5leHRSZWFjdGlvbiIsIm9wcG9zaW5nUmVhY3Rpb25OYW1lIiwic2F2ZWRSZWFjdGlvbiIsImVycm9yIiwiREFUQUJBU0VfRVJST1IiLCJkZWxldGVQZXJzb25hUmVhY3Rpb24iLCJmb3JtYXRSZWFjdGlvbk5hbWUiLCJkZWxldGVkUmVhY3Rpb24iLCJoYXNQZXJzb25hUmVhY3Rpb24iLCJjcmVhdGVSZWFjdGlvbkVkZ2UiLCJzZXNzaW9uRG9jSWQiLCJlZGdlSWQiLCJmaW5kRXhpc3RpbmdSZWFjdGlvbiIsImZpbHRlckNsYXVzZSIsImxvZ2ljIiwiY29uZGl0aW9ucyIsImZpZWxkIiwib3BlcmF0b3IiLCJhZGRSZWFjdGlvbiIsImFsbG93RHVwbGljYXRlIiwiaXRlbU5hbWUiLCJpdGVtVHlwZSIsIml0ZW1WYWx1ZSIsImZvcm1hdFJlYWN0aW9uVHlwZSIsImZvcm1hdFZhbHVlIiwiZWRnZSIsIm9wcG9zaW5nUmVhY3Rpb24iLCJlZGdlQ29sbGVjdGlvbiIsImNvbGxlY3Rpb24iLCJyZW1vdmUiLCJleGlzdGluZ1JlYWN0aW9uIiwic2F2ZSIsInJldHVybk5ldyIsImRlbGV0ZVJlYWN0aW9uIiwicmVhY3Rpb25JZCIsImZvcm1hdFNlc3Npb25JZCIsImZvcm1hdFJlYWN0aW9uSWQiLCJkZWxldGVSZWFjdGlvbkJ5SXRlbSIsImZvcm1hdEl0ZW1Eb2NJZCIsInVwZGF0ZVJlYWN0aW9uIiwiaWQiLCJmb3JtYXRJZCIsImZvcm1hdE5hbWUiLCJ1cGRhdGUiLCJpbnNlcnQiLCJfaWQiLCJnZXRSZWFjdGlvbkNvdW50QnlVc2VyIiwiZ2V0R3JvdXBVc2Vyc0J5UmVhY3Rpb24iLCJwYXJhbXMiLCJmaWx0ZXJzIiwiZ3JvdXBJZCIsImdyb3VwRG9jSWQiLCJmb3JFYWNoIiwiY29uZGl0aW9uYWwiLCJxdWVyeVZhbHVlIiwicHVzaCIsImdldFJlYWN0aW9uTGlzdEJ5SXRlbSIsImdldEl0ZW1MaXN0QnlSZWFjdGlvbiIsImhhc1JlYWN0aW9uIiwiZGlyZWN0aW9uIiwiZm9ybWF0RGlyZWN0aW9uIiwiaXRlbUZpZWxkIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxRQUFRLFFBQU8sK0JBQStCO0FBQ3RELFNBQVFDLFVBQVUsRUFBRUMsYUFBYSxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsV0FBVyxRQUFPLCtCQUErQjtBQUN4RyxTQUFRQyxHQUFHLFFBQU8sV0FBVztBQUM3QixTQUFrQkMsT0FBTyxRQUFPLGVBQWU7QUFFL0MsU0FBUUMsV0FBVyxFQUFFQyxLQUFLLFFBQU8sOEJBQThCO0FBQy9ELFNBQVFDLFVBQVUsUUFBTywwQkFBMEI7QUFDbkQsU0FBUUMsb0JBQW9CLFFBQU8sbUNBQW1DO0FBQ3RFLFNBQVFDLFFBQVEsUUFBTyxnQ0FBZ0M7QUFDdkQsU0FBUUMsUUFBUSxFQUFFQyxZQUFZLFFBQU8sNkJBQTZCO0FBQ2xFLFNBQVFDLGlCQUFpQixRQUFPLHlCQUF5QjtBQUN6RCxTQUFRQyxRQUFRLEVBQUVDLEtBQUssUUFBTyw0QkFBNEI7QUFDMUQsU0FBUUMsWUFBWSxRQUFPLGNBQWM7QUFRekMsTUFBTUMsZ0JBQWdCO0FBQ3RCLE1BQU1DLHdCQUF3QmIsUUFBUUUsTUFBTVksWUFBWTtBQUN4RCxNQUFNQyxrQkFBa0JmLFFBQVFDLFlBQVllLEtBQUs7QUFDakQsTUFBTUMsdUJBQXVCO0lBQUM7SUFBVztJQUFRO0NBQVE7QUFDekQsTUFBTUMsMEJBQWtEO0lBQ3REQyxTQUFTO0lBQ1RDLE1BQU07QUFDUjtBQWdDQSxPQUFPLE1BQU1DLHVCQUF1QixDQUFDQyxVQUEyQixDQUFDLENBQUM7SUFDaEUsTUFBTSxFQUNKQyxPQUFPLENBQUMsRUFDUkMsS0FBSyxFQUFFLEVBQ1IsR0FBR0Y7SUFFSixPQUFPO1FBQ0xHLE9BQU9oQixTQUFTYyxNQUFNQztJQUN4QjtBQUNGLEVBQUU7QUFFRixNQUFNRSwwQkFB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
|
package/lib/actions/rum.js
CHANGED
|
@@ -92,13 +92,14 @@ const getAppMonitor = async (context, analyticsId)=>{
|
|
|
92
92
|
const configuredMonitors = context.config?.aws?.rum?.appMonitors || Config.get('aws.rum.appMonitors', {});
|
|
93
93
|
const environmentMonitors = parseEnvironmentAppMonitors();
|
|
94
94
|
const configuredMonitor = environmentMonitors[analyticsId] || configuredMonitors[analyticsId];
|
|
95
|
+
const analytics = await getAnalyticsById(context, analyticsId);
|
|
96
|
+
const appId = normalizeText(analytics?.appId || analyticsId, 128);
|
|
95
97
|
if (!configuredMonitor) {
|
|
96
|
-
|
|
97
|
-
if (!analytics) {
|
|
98
|
+
if (!analytics || !appId) {
|
|
98
99
|
throw new UserError('invalid_rum_app');
|
|
99
100
|
}
|
|
100
101
|
return {
|
|
101
|
-
appId
|
|
102
|
+
appId,
|
|
102
103
|
monitor: {
|
|
103
104
|
domain: analytics.domain,
|
|
104
105
|
id: analytics.monitorId,
|
|
@@ -115,7 +116,7 @@ const getAppMonitor = async (context, analyticsId)=>{
|
|
|
115
116
|
throw new UserError('invalid_rum_app');
|
|
116
117
|
}
|
|
117
118
|
return {
|
|
118
|
-
appId
|
|
119
|
+
appId,
|
|
119
120
|
monitor: {
|
|
120
121
|
...monitor,
|
|
121
122
|
domain: normalizeDomain(monitor.domain || context.config?.details?.url || Config.get('details.url') || analyticsId),
|
|
@@ -265,9 +266,9 @@ const initializeLogCollection = async (databaseName)=>{
|
|
|
265
266
|
throw error;
|
|
266
267
|
}
|
|
267
268
|
};
|
|
268
|
-
const persistRumEvents = async (
|
|
269
|
-
await initializeLogCollection(
|
|
270
|
-
const collection = useDb(
|
|
269
|
+
const persistRumEvents = async (databaseName, analyticsId, appId, events, now)=>{
|
|
270
|
+
await initializeLogCollection(databaseName);
|
|
271
|
+
const collection = useDb(databaseName).collection(COLLECTIONS.LOGS);
|
|
271
272
|
const expiresAt = Math.floor((now + LOG_RETENTION_MS) / 1000);
|
|
272
273
|
await Promise.all(events.map((event)=>collection.save({
|
|
273
274
|
_key: createHash('sha256').update(`${appId}:${event.eventId}`).digest('hex'),
|
|
@@ -298,11 +299,15 @@ export const trackRum = async (context, batch)=>{
|
|
|
298
299
|
}
|
|
299
300
|
const now = Date.now();
|
|
300
301
|
const { appId, monitor } = await getAppMonitor(context, analyticsId);
|
|
302
|
+
if (!context.resolveAppDatabaseName) {
|
|
303
|
+
throw new UserError('app_database_resolver_unavailable');
|
|
304
|
+
}
|
|
305
|
+
const databaseName = await context.resolveAppDatabaseName(context, appId);
|
|
301
306
|
const events = inputEvents.map((event)=>sanitizeEvent(event, now));
|
|
302
307
|
const eventsByJourney = groupEventsByJourney(events);
|
|
303
308
|
const client = getRumClient(context);
|
|
304
309
|
await Promise.all([
|
|
305
|
-
persistRumEvents(
|
|
310
|
+
persistRumEvents(databaseName, analyticsId, appId, events, now),
|
|
306
311
|
...Array.from(eventsByJourney.entries()).map(([journeyId, journeyEvents])=>client.send(new PutRumEventsCommand({
|
|
307
312
|
...monitor.alias ? {
|
|
308
313
|
Alias: monitor.alias
|
|
@@ -341,4 +346,4 @@ export const trackRum = async (context, batch)=>{
|
|
|
341
346
|
};
|
|
342
347
|
};
|
|
343
348
|
|
|
344
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC9ubGFicy1yZWFrdG9yLXJlbGVhc2UuZU1RNVNoL2NoZWNrb3V0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvcnVtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI2LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge1B1dFJ1bUV2ZW50c0NvbW1hbmQsIFJVTUNsaWVudH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXJ1bSc7XG5pbXBvcnQge2NyZWF0ZUhhc2gsIHJhbmRvbVVVSUR9IGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHtDT0xMRUNUSU9OU30gZnJvbSAnLi4vY29uc3RhbnRzL2NvbGxlY3Rpb25zLmpzJztcbmltcG9ydCB7VXNlckVycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7Z2V0QW5hbHl0aWNzQnlJZH0gZnJvbSAnLi9hbmFseXRpY3MuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXdzQ29uZmlnLCBBd3NSdW1BcHBNb25pdG9yQ29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1J1bUJhdGNoSW5wdXRUeXBlLCBSdW1FdmVudElucHV0VHlwZSwgUnVtUHJvcGVydHksIFJ1bVRyYWNrUmVzdWx0VHlwZX0gZnJvbSAnLi4vdHlwZXMvcnVtLnR5cGVzLmpzJztcblxuY29uc3QgTUFYX0JBVENIX1NJWkUgPSA1MDtcbmNvbnN0IE1BWF9QUk9QRVJUSUVTID0gMjA7XG5jb25zdCBNQVhfU0VRVUVOQ0UgPSAxXzAwMF8wMDA7XG5jb25zdCBNQVhfVElNRVNUQU1QX0FHRV9NUyA9IDI0ICogNjAgKiA2MCAqIDEwMDA7XG5jb25zdCBNQVhfVElNRVNUQU1QX0ZVVFVSRV9NUyA9IDUgKiA2MCAqIDEwMDA7XG5jb25zdCBMT0dfUkVURU5USU9OX01TID0gOTAgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuY29uc3QgVVVJRF9QQVRURVJOID0gL15bYS1mXFxkXXs4fS1bYS1mXFxkXXs0fS1bYS1mXFxkXXs0fS1bYS1mXFxkXXs0fS1bYS1mXFxkXXsxMn0kL2k7XG5jb25zdCBCTE9DS0VEX1BST1BFUlRZX0tFWVMgPSBuZXcgU2V0KFtcbiAgJ2FjY291bnRpZCcsXG4gICdhZGRyZXNzJyxcbiAgJ2VtYWlsJyxcbiAgJ2ZpcnN0bmFtZScsXG4gICdmdWxsbmFtZScsXG4gICdnZW9sb2NhdGlvbicsXG4gICdpcCcsXG4gICdpcGFkZHJlc3MnLFxuICAnbGFzdG5hbWUnLFxuICAnbGF0aXR1ZGUnLFxuICAnbG9uZ2l0dWRlJyxcbiAgJ25hbWUnLFxuICAncGhvbmUnLFxuICAncmVmZXJyZXInLFxuICAndG9rZW4nLFxuICAndXNlcmFnZW50JyxcbiAgJ3VzZXJpZCdcbl0pO1xuY29uc3QgRU1BSUxfUEFUVEVSTiA9IC9cXGJbXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rXFxiL2k7XG5jb25zdCBsb2dDb2xsZWN0aW9uSW5pdGlhbGl6YXRpb24gPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4oKTtcblxudHlwZSBSdW1BcHBNb25pdG9yTWFwID0gUmVjb3JkPHN0cmluZywgQXdzUnVtQXBwTW9uaXRvckNvbmZpZyB8IHN0cmluZz47XG50eXBlIFJ1bU1ldGFkYXRhID0gUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+O1xudHlwZSBSZXNvbHZlZFJ1bU1vbml0b3IgPSB7XG4gIHJlYWRvbmx5IGFwcElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1vbml0b3I6IEF3c1J1bUFwcE1vbml0b3JDb25maWc7XG59O1xuXG5jb25zdCBSVU1fTUVUQURBVEFfUFJPUEVSVFlfS0VZUzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuICBicm93c2VyTGFuZ3VhZ2U6IFsnYnJvd3Nlcmxhbmd1YWdlJ10sXG4gIGJyb3dzZXJOYW1lOiBbJ2Jyb3dzZXJuYW1lJ10sXG4gIGJyb3dzZXJWZXJzaW9uOiBbJ2Jyb3dzZXJ2ZXJzaW9uJ10sXG4gIGRldmljZVR5cGU6IFsnZGV2aWNldHlwZSddLFxuICBpbnRlcmFjdGlvbjogWydpbnRlcmFjdGlvbiddLFxuICBvc05hbWU6IFsnb3NuYW1lJ10sXG4gIG9zVmVyc2lvbjogWydvc3ZlcnNpb24nXSxcbiAgcGFnZUlkOiBbJ3BhZ2VpZCddLFxuICBwYXJlbnRQYWdlSWQ6IFsncGFyZW50cGFnZWlkJywgJ3BhcmVudHBhZ2UnXVxufTtcblxuY29uc3Qgbm9ybWFsaXplVGV4dCA9ICh2YWx1ZTogdW5rbm93biwgbWF4TGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcgPT5cbiAgU3RyaW5nKHZhbHVlIHx8ICcnKS50cmltKCkuc2xpY2UoMCwgbWF4TGVuZ3RoKTtcblxuY29uc3Qgbm9ybWFsaXplUHJvcGVydHlLZXkgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PlxuICB2YWx1ZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05XS9nLCAnJyk7XG5cbmNvbnN0IG5vcm1hbGl6ZURvbWFpbiA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiBub3JtYWxpemVUZXh0KHZhbHVlLCAyNTMpXG4gIC5yZXBsYWNlKC9eaHR0cHM/OlxcL1xcLy9pLCAnJylcbiAgLnNwbGl0KCcvJylbMF1cbiAgLnNwbGl0KCc6JylbMF07XG5cbmNvbnN0IGdldEF3c1V1aWQgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmKFVVSURfUEFUVEVSTi50ZXN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IGhhc2ggPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUodmFsdWUpLmRpZ2VzdCgnaGV4Jyk7XG4gIHJldHVybiBgJHtoYXNoLnNsaWNlKDAsIDgpfS0ke2hhc2guc2xpY2UoOCwgMTIpfS0ke2hhc2guc2xpY2UoMTIsIDE2KX0tJHtoYXNoLnNsaWNlKDE2LCAyMCl9LSR7aGFzaC5zbGljZSgyMCwgMzIpfWA7XG59O1xuXG5jb25zdCBwYXJzZUVudmlyb25tZW50QXBwTW9uaXRvcnMgPSAoKTogUnVtQXBwTW9uaXRvck1hcCA9PiB7XG4gIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnYuQVdTX1JVTV9BUFBfTU9OSVRPUlM7XG5cbiAgaWYoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICByZXR1cm4gcGFyc2VkICYmIHR5cGVvZiBwYXJzZWQgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHBhcnNlZCkgPyBwYXJzZWQgOiB7fTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fY29uZmlnJyk7XG4gIH1cbn07XG5cbmNvbnN0IGdldEFwcE1vbml0b3IgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGFuYWx5dGljc0lkOiBzdHJpbmdcbik6IFByb21pc2U8UmVzb2x2ZWRSdW1Nb25pdG9yPiA9PiB7XG4gIGNvbnN0IGNvbmZpZ3VyZWRNb25pdG9ycyA9IGNvbnRleHQuY29uZmlnPy5hd3M/LnJ1bT8uYXBwTW9uaXRvcnMgfHxcbiAgICBDb25maWcuZ2V0PFJ1bUFwcE1vbml0b3JNYXA+KCdhd3MucnVtLmFwcE1vbml0b3JzJywge30pO1xuICBjb25zdCBlbnZpcm9ubWVudE1vbml0b3JzID0gcGFyc2VFbnZpcm9ubWVudEFwcE1vbml0b3JzKCk7XG4gIGNvbnN0IGNvbmZpZ3VyZWRNb25pdG9yID0gZW52aXJvbm1lbnRNb25pdG9yc1thbmFseXRpY3NJZF0gfHwgY29uZmlndXJlZE1vbml0b3JzW2FuYWx5dGljc0lkXTtcblxuICBpZighY29uZmlndXJlZE1vbml0b3IpIHtcbiAgICBjb25zdCBhbmFseXRpY3MgPSBhd2FpdCBnZXRBbmFseXRpY3NCeUlkKGNvbnRleHQsIGFuYWx5dGljc0lkKTtcblxuICAgIGlmKCFhbmFseXRpY3MpIHtcbiAgICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2ludmFsaWRfcnVtX2FwcCcpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhcHBJZDogYW5hbHl0aWNzLmFwcElkLFxuICAgICAgbW9uaXRvcjoge1xuICAgICAgICBkb21haW46IGFuYWx5dGljcy5kb21haW4sXG4gICAgICAgIGlkOiBhbmFseXRpY3MubW9uaXRvcklkLFxuICAgICAgICBuYW1lOiBhbmFseXRpY3MubW9uaXRvck5hbWUsXG4gICAgICAgIHZlcnNpb246IG5vcm1hbGl6ZVRleHQoXG4gICAgICAgICAgY29udGV4dC5jb25maWc/LmRldGFpbHM/LnZlcnNpb24gfHwgQ29uZmlnLmdldCgnZGV0YWlscy52ZXJzaW9uJykgfHwgJzEuMC4wJyxcbiAgICAgICAgICAyNTVcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjb25zdCBtb25pdG9yID0gdHlwZW9mIGNvbmZpZ3VyZWRNb25pdG9yID09PSAnc3RyaW5nJyA/IHtpZDogY29uZmlndXJlZE1vbml0b3J9IDogY29uZmlndXJlZE1vbml0b3I7XG4gIGNvbnN0IG1vbml0b3JJZCA9IG5vcm1hbGl6ZVRleHQobW9uaXRvcj8uaWQsIDM2KTtcblxuICBpZighbW9uaXRvcklkIHx8ICFVVUlEX1BBVFRFUk4udGVzdChtb25pdG9ySWQpKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fYXBwJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFwcElkOiBhbmFseXRpY3NJZCxcbiAgICBtb25pdG9yOiB7XG4gICAgICAuLi5tb25pdG9yLFxuICAgICAgZG9tYWluOiBub3JtYWxpemVEb21haW4oXG4gICAgICAgIG1vbml0b3IuZG9tYWluIHx8IGNvbnRleHQuY29uZmlnPy5kZXRhaWxzPy51cmwgfHwgQ29uZmlnLmdldCgnZGV0YWlscy51cmwnKSB8fCBhbmFseXRpY3NJZFxuICAgICAgKSxcbiAgICAgIGlkOiBtb25pdG9ySWQsXG4gICAgICBuYW1lOiBub3JtYWxpemVUZXh0KG1vbml0b3IubmFtZSB8fCBhbmFseXRpY3NJZCwgMjU1KSxcbiAgICAgIHZlcnNpb246IG5vcm1hbGl6ZVRleHQoXG4gICAgICAgIG1vbml0b3IudmVyc2lvbiB8fCBjb250ZXh0LmNvbmZpZz8uZGV0YWlscz8udmVyc2lvbiB8fCBDb25maWcuZ2V0KCdkZXRhaWxzLnZlcnNpb24nKSB8fCAnMS4wLjAnLFxuICAgICAgICAyNTVcbiAgICAgIClcbiAgICB9XG4gIH07XG59O1xuXG5jb25zdCBnZXRSdW1DbGllbnQgPSAoY29udGV4dDogQXBpQ29udGV4dCk6IFJVTUNsaWVudCA9PiB7XG4gIGNvbnN0IGF3c0NvbmZpZzogQXdzQ29uZmlnID0gY29udGV4dC5jb25maWc/LmF3cyB8fCBDb25maWcuZ2V0PEF3c0NvbmZpZz4oJ2F3cycsIHt9KTtcbiAgY29uc3Qge2FjY2Vzc0tleUlkLCBzZWNyZXRBY2Nlc3NLZXksIHNlc3Npb25Ub2tlbn0gPSBhd3NDb25maWcuY3JlZGVudGlhbHMgfHwge307XG4gIGNvbnN0IHVzZXNSdW50aW1lQ3JlZGVudGlhbHMgPSBCb29sZWFuKFxuICAgIHByb2Nlc3MuZW52LkFXU19TRVNTSU9OX1RPS0VOICYmXG4gICAgYWNjZXNzS2V5SWQgPT09IHByb2Nlc3MuZW52LkFXU19BQ0NFU1NfS0VZX0lEICYmXG4gICAgc2VjcmV0QWNjZXNzS2V5ID09PSBwcm9jZXNzLmVudi5BV1NfU0VDUkVUX0FDQ0VTU19LRVlcbiAgKTtcbiAgY29uc3QgY3JlZGVudGlhbHMgPSBhY2Nlc3NLZXlJZCAmJiBzZWNyZXRBY2Nlc3NLZXkgJiYgIXVzZXNSdW50aW1lQ3JlZGVudGlhbHMgPyB7XG4gICAgYWNjZXNzS2V5SWQsXG4gICAgc2VjcmV0QWNjZXNzS2V5LFxuICAgIC4uLihzZXNzaW9uVG9rZW4gPyB7c2Vzc2lvblRva2VufSA6IHt9KVxuICB9IDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiBuZXcgUlVNQ2xpZW50KHtcbiAgICAuLi4oY3JlZGVudGlhbHMgPyB7Y3JlZGVudGlhbHN9IDoge30pLFxuICAgIC4uLihhd3NDb25maWcucmVnaW9uID8ge3JlZ2lvbjogYXdzQ29uZmlnLnJlZ2lvbn0gOiB7fSlcbiAgfSk7XG59O1xuXG5jb25zdCBzYW5pdGl6ZVRpbWVzdGFtcCA9ICh2YWx1ZTogdW5rbm93biwgbm93OiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICBjb25zdCB0aW1lc3RhbXAgPSBOdW1iZXIodmFsdWUpO1xuXG4gIGlmKFxuICAgICFOdW1iZXIuaXNGaW5pdGUodGltZXN0YW1wKSB8fFxuICAgIHRpbWVzdGFtcCA8IG5vdyAtIE1BWF9USU1FU1RBTVBfQUdFX01TIHx8XG4gICAgdGltZXN0YW1wID4gbm93ICsgTUFYX1RJTUVTVEFNUF9GVVRVUkVfTVNcbiAgKSB7XG4gICAgcmV0dXJuIG5vdztcbiAgfVxuXG4gIHJldHVybiBNYXRoLmZsb29yKHRpbWVzdGFtcCk7XG59O1xuXG5jb25zdCBzYW5pdGl6ZVByb3BlcnRpZXMgPSAoXG4gIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5PiA9IHt9XG4pOiBSZWNvcmQ8c3RyaW5nLCBSdW1Qcm9wZXJ0eT4gPT4gT2JqZWN0LmVudHJpZXMocHJvcGVydGllcylcbiAgLnNsaWNlKDAsIE1BWF9QUk9QRVJUSUVTKVxuICAucmVkdWNlPFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5Pj4oKHJlc3VsdCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlLZXkgPSBub3JtYWxpemVUZXh0KGtleSwgNjQpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQcm9wZXJ0eUtleSA9IG5vcm1hbGl6ZVByb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcblxuICAgIGlmKFxuICAgICAgcHJvcGVydHlLZXkgJiZcbiAgICAgICFCTE9DS0VEX1BST1BFUlRZX0tFWVMuaGFzKG5vcm1hbGl6ZWRQcm9wZXJ0eUtleSkgJiZcbiAgICAgIFsnYm9vbGVhbicsICdudW1iZXInLCAnc3RyaW5nJ10uaW5jbHVkZXModHlwZW9mIHZhbHVlKVxuICAgICkge1xuICAgICAgaWYodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCB0ZXh0VmFsdWUgPSBub3JtYWxpemVUZXh0KHZhbHVlLCAyNTYpO1xuXG4gICAgICAgIGlmKHRleHRWYWx1ZSAmJiAhRU1BSUxfUEFUVEVSTi50ZXN0KHRleHRWYWx1ZSkpIHtcbiAgICAgICAgICByZXN1bHRbcHJvcGVydHlLZXldID0gdGV4dFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHwgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkge1xuICAgICAgICByZXN1bHRbcHJvcGVydHlLZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwge30pO1xuXG5jb25zdCBnZXRSdW1NZXRhZGF0YSA9IChcbiAgYXBwSWQ6IHN0cmluZyxcbiAgZG9tYWluOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5PlxuKTogUnVtTWV0YWRhdGEgPT4ge1xuICBjb25zdCBub3JtYWxpemVkUHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBSdW1Qcm9wZXJ0eT4+KFxuICAgIChyZXN1bHQsIFtrZXksIHZhbHVlXSkgPT4gKHsuLi5yZXN1bHQsIFtub3JtYWxpemVQcm9wZXJ0eUtleShrZXkpXTogdmFsdWV9KSxcbiAgICB7fVxuICApO1xuXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhSVU1fTUVUQURBVEFfUFJPUEVSVFlfS0VZUykucmVkdWNlPFJ1bU1ldGFkYXRhPigobWV0YWRhdGEsIFtrZXksIGFsaWFzZXNdKSA9PiB7XG4gICAgY29uc3QgYWxpYXMgPSBhbGlhc2VzLmZpbmQoKGNhbmRpZGF0ZSkgPT4gbm9ybWFsaXplZFByb3BlcnRpZXNbY2FuZGlkYXRlXSAhPT0gdW5kZWZpbmVkKTtcblxuICAgIGlmKGFsaWFzKSB7XG4gICAgICBtZXRhZGF0YVtrZXldID0gbm9ybWFsaXplZFByb3BlcnRpZXNbYWxpYXNdO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfSwge1xuICAgIGFwcGxpY2F0aW9uSWQ6IGFwcElkLFxuICAgIC4uLihkb21haW4gPyB7ZG9tYWlufSA6IHt9KSxcbiAgICBwbGF0Zm9ybVR5cGU6ICd3ZWInLFxuICAgIHZlcnNpb246ICcxLjAuMCdcbiAgfSk7XG59O1xuXG5jb25zdCBzYW5pdGl6ZUV2ZW50ID0gKGV2ZW50OiBSdW1FdmVudElucHV0VHlwZSwgbm93OiBudW1iZXIpOiBSdW1FdmVudElucHV0VHlwZSA9PiB7XG4gIGNvbnN0IGlucHV0RXZlbnRJZCA9IG5vcm1hbGl6ZVRleHQoZXZlbnQuZXZlbnRJZCwgMTI4KTtcbiAgY29uc3Qgam91cm5leUlkID0gbm9ybWFsaXplVGV4dChldmVudC5qb3VybmV5SWQsIDEyOCk7XG4gIGNvbnN0IG5hbWUgPSBub3JtYWxpemVUZXh0KGV2ZW50Lm5hbWUsIDEyOCk7XG4gIGNvbnN0IHBhdGggPSBub3JtYWxpemVUZXh0KGV2ZW50LnBhdGgsIDI1Nikuc3BsaXQoJz8nKVswXS5zcGxpdCgnIycpWzBdO1xuICBjb25zdCB0eXBlID0gbm9ybWFsaXplVGV4dChldmVudC50eXBlLCAyNTYpLnJlcGxhY2UoL1teYS16QS1aMC05Xy4tXS9nLCAnXycpO1xuXG4gIGlmKCFpbnB1dEV2ZW50SWQgfHwgIWpvdXJuZXlJZCB8fCAhbmFtZSB8fCAhdHlwZSkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2ludmFsaWRfcnVtX2V2ZW50Jyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV2ZW50SWQ6IGdldEF3c1V1aWQoaW5wdXRFdmVudElkKSxcbiAgICBqb3VybmV5SWQ6IGdldEF3c1V1aWQoam91cm5leUlkKSxcbiAgICBuYW1lLFxuICAgIC4uLihwYXRoID8ge3BhdGh9IDoge30pLFxuICAgIHByb3BlcnRpZXM6IHNhbml0aXplUHJvcGVydGllcyhldmVudC5wcm9wZXJ0aWVzKSxcbiAgICBzZXF1ZW5jZTogTWF0aC5taW4oTUFYX1NFUVVFTkNFLCBNYXRoLm1heCgxLCBNYXRoLmZsb29yKE51bWJlcihldmVudC5zZXF1ZW5jZSkgfHwgMSkpKSxcbiAgICB0aW1lc3RhbXA6IHNhbml0aXplVGltZXN0YW1wKGV2ZW50LnRpbWVzdGFtcCwgbm93KSxcbiAgICB0eXBlXG4gIH07XG59O1xuXG5jb25zdCBncm91cEV2ZW50c0J5Sm91cm5leSA9IChldmVudHM6IFJ1bUV2ZW50SW5wdXRUeXBlW10pOiBNYXA8c3RyaW5nLCBSdW1FdmVudElucHV0VHlwZVtdPiA9PlxuICBldmVudHMucmVkdWNlPE1hcDxzdHJpbmcsIFJ1bUV2ZW50SW5wdXRUeXBlW10+PigoZ3JvdXBzLCBldmVudCkgPT4ge1xuICAgIGNvbnN0IGpvdXJuZXlFdmVudHMgPSBncm91cHMuZ2V0KGV2ZW50LmpvdXJuZXlJZCkgfHwgW107XG4gICAgam91cm5leUV2ZW50cy5wdXNoKGV2ZW50KTtcbiAgICBncm91cHMuc2V0KGV2ZW50LmpvdXJuZXlJZCwgam91cm5leUV2ZW50cyk7XG4gICAgcmV0dXJuIGdyb3VwcztcbiAgfSwgbmV3IE1hcCgpKTtcblxuY29uc3QgaW5pdGlhbGl6ZUxvZ0NvbGxlY3Rpb24gPSBhc3luYyAoZGF0YWJhc2VOYW1lPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGNhY2hlS2V5ID0gZGF0YWJhc2VOYW1lIHx8ICdyZWFrdG9yJztcbiAgY29uc3QgZXhpc3RpbmdJbml0aWFsaXphdGlvbiA9IGxvZ0NvbGxlY3Rpb25Jbml0aWFsaXphdGlvbi5nZXQoY2FjaGVLZXkpO1xuXG4gIGlmKGV4aXN0aW5nSW5pdGlhbGl6YXRpb24pIHtcbiAgICByZXR1cm4gZXhpc3RpbmdJbml0aWFsaXphdGlvbjtcbiAgfVxuXG4gIGNvbnN0IGluaXRpYWxpemF0aW9uID0gKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlTmFtZSk7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IGRhdGFiYXNlLmNvbGxlY3Rpb24oQ09MTEVDVElPTlMuTE9HUyk7XG5cbiAgICBpZighYXdhaXQgY29sbGVjdGlvbi5leGlzdHMoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZGF0YWJhc2UuY3JlYXRlQ29sbGVjdGlvbihDT0xMRUNUSU9OUy5MT0dTKTtcbiAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgaWYoIWF3YWl0IGNvbGxlY3Rpb24uZXhpc3RzKCkpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIGNvbGxlY3Rpb24uZW5zdXJlSW5kZXgoe1xuICAgICAgICBmaWVsZHM6IFsnYXBwSWQnLCAnZXZlbnRJZCddLFxuICAgICAgICBuYW1lOiAnbG9nc19hcHBfZXZlbnQnLFxuICAgICAgICB0eXBlOiAncGVyc2lzdGVudCcsXG4gICAgICAgIHVuaXF1ZTogdHJ1ZVxuICAgICAgfSksXG4gICAgICBjb2xsZWN0aW9uLmVuc3VyZUluZGV4KHtcbiAgICAgICAgZXhwaXJlQWZ0ZXI6IDAsXG4gICAgICAgIGZpZWxkczogWydleHBpcmVzQXQnXSxcbiAgICAgICAgbmFtZTogJ2xvZ3NfZXhwaXJ5JyxcbiAgICAgICAgdHlwZTogJ3R0bCdcbiAgICAgIH0pXG4gICAgXSk7XG4gIH0pKCk7XG5cbiAgbG9nQ29sbGVjdGlvbkluaXRpYWxpemF0aW9uLnNldChjYWNoZUtleSwgaW5pdGlhbGl6YXRpb24pO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgaW5pdGlhbGl6YXRpb247XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2dDb2xsZWN0aW9uSW5pdGlhbGl6YXRpb24uZGVsZXRlKGNhY2hlS2V5KTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuY29uc3QgcGVyc2lzdFJ1bUV2ZW50cyA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgYW5hbHl0aWNzSWQ6IHN0cmluZyxcbiAgYXBwSWQ6IHN0cmluZyxcbiAgZXZlbnRzOiBSdW1FdmVudElucHV0VHlwZVtdLFxuICBub3c6IG51bWJlclxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGF3YWl0IGluaXRpYWxpemVMb2dDb2xsZWN0aW9uKGNvbnRleHQuZGF0YWJhc2VOYW1lKTtcbiAgY29uc3QgY29sbGVjdGlvbiA9IHVzZURiKGNvbnRleHQuZGF0YWJhc2VOYW1lKS5jb2xsZWN0aW9uKENPTExFQ1RJT05TLkxPR1MpO1xuICBjb25zdCBleHBpcmVzQXQgPSBNYXRoLmZsb29yKChub3cgKyBMT0dfUkVURU5USU9OX01TKSAvIDEwMDApO1xuXG4gIGF3YWl0IFByb21pc2UuYWxsKGV2ZW50cy5tYXAoKGV2ZW50KSA9PiBjb2xsZWN0aW9uLnNhdmUoe1xuICAgIF9rZXk6IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShgJHthcHBJZH06JHtldmVudC5ldmVudElkfWApLmRpZ2VzdCgnaGV4JyksXG4gICAgYWRkZWQ6IG5vdyxcbiAgICBhbmFseXRpY3NJZCxcbiAgICBhcHBJZCxcbiAgICBldmVudElkOiBldmVudC5ldmVudElkLFxuICAgIGV4cGlyZXNBdCxcbiAgICBqb3VybmV5SWQ6IGV2ZW50LmpvdXJuZXlJZCxcbiAgICBuYW1lOiBldmVudC5uYW1lLFxuICAgIC4uLihldmVudC5wYXRoID8ge3BhdGg6IGV2ZW50LnBhdGh9IDoge30pLFxuICAgIHByb3BlcnRpZXM6IGV2ZW50LnByb3BlcnRpZXMsXG4gICAgc2VxdWVuY2U6IGV2ZW50LnNlcXVlbmNlLFxuICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLFxuICAgIHR5cGU6IGV2ZW50LnR5cGVcbiAgfSwge292ZXJ3cml0ZU1vZGU6ICdpZ25vcmUnLCBzaWxlbnQ6IHRydWV9KSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYWNrUnVtID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBiYXRjaDogUnVtQmF0Y2hJbnB1dFR5cGVcbik6IFByb21pc2U8UnVtVHJhY2tSZXN1bHRUeXBlPiA9PiB7XG4gIGNvbnN0IGFuYWx5dGljc0lkID0gbm9ybWFsaXplVGV4dChiYXRjaD8uYW5hbHl0aWNzSWQsIDEyOCk7XG4gIGNvbnN0IGlucHV0RXZlbnRzID0gQXJyYXkuaXNBcnJheShiYXRjaD8uZXZlbnRzKSA/IGJhdGNoLmV2ZW50cyA6IFtdO1xuXG4gIGlmKCFhbmFseXRpY3NJZCB8fCBpbnB1dEV2ZW50cy5sZW5ndGggPT09IDAgfHwgaW5wdXRFdmVudHMubGVuZ3RoID4gTUFYX0JBVENIX1NJWkUpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKCdpbnZhbGlkX3J1bV9iYXRjaCcpO1xuICB9XG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgY29uc3Qge2FwcElkLCBtb25pdG9yfSA9IGF3YWl0IGdldEFwcE1vbml0b3IoY29udGV4dCwgYW5hbHl0aWNzSWQpO1xuICBjb25zdCBldmVudHMgPSBpbnB1dEV2ZW50cy5tYXAoKGV2ZW50KSA9PiBzYW5pdGl6ZUV2ZW50KGV2ZW50LCBub3cpKTtcbiAgY29uc3QgZXZlbnRzQnlKb3VybmV5ID0gZ3JvdXBFdmVudHNCeUpvdXJuZXkoZXZlbnRzKTtcbiAgY29uc3QgY2xpZW50ID0gZ2V0UnVtQ2xpZW50KGNvbnRleHQpO1xuXG4gIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICBwZXJzaXN0UnVtRXZlbnRzKGNvbnRleHQsIGFuYWx5dGljc0lkLCBhcHBJZCwgZXZlbnRzLCBub3cpLFxuICAgIC4uLkFycmF5LmZyb20oZXZlbnRzQnlKb3VybmV5LmVudHJpZXMoKSkubWFwKChbam91cm5leUlkLCBqb3VybmV5RXZlbnRzXSkgPT5cbiAgICAgIGNsaWVudC5zZW5kKG5ldyBQdXRSdW1FdmVudHNDb21tYW5kKHtcbiAgICAgIC4uLihtb25pdG9yLmFsaWFzID8ge0FsaWFzOiBtb25pdG9yLmFsaWFzfSA6IHt9KSxcbiAgICAgIEFwcE1vbml0b3JEZXRhaWxzOiB7XG4gICAgICAgIGlkOiBtb25pdG9yLmlkLFxuICAgICAgICBuYW1lOiBtb25pdG9yLm5hbWUsXG4gICAgICAgIHZlcnNpb246IG1vbml0b3IudmVyc2lvblxuICAgICAgfSxcbiAgICAgIEJhdGNoSWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgIElkOiBtb25pdG9yLmlkLFxuICAgICAgUnVtRXZlbnRzOiBqb3VybmV5RXZlbnRzLm1hcCgoZXZlbnQpID0+ICh7XG4gICAgICAgIGRldGFpbHM6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBhcHBJZCxcbiAgICAgICAgICBuYW1lOiBldmVudC5uYW1lLFxuICAgICAgICAgIC4uLihldmVudC5wYXRoID8ge3BhdGg6IGV2ZW50LnBhdGh9IDoge30pLFxuICAgICAgICAgIHByb3BlcnRpZXM6IGV2ZW50LnByb3BlcnRpZXMsXG4gICAgICAgICAgc2VxdWVuY2U6IGV2ZW50LnNlcXVlbmNlXG4gICAgICAgIH0pLFxuICAgICAgICBpZDogZXZlbnQuZXZlbnRJZCxcbiAgICAgICAgbWV0YWRhdGE6IEpTT04uc3RyaW5naWZ5KGdldFJ1bU1ldGFkYXRhKFxuICAgICAgICAgIGFwcElkLFxuICAgICAgICAgIG1vbml0b3IuZG9tYWluLFxuICAgICAgICAgIGV2ZW50LnByb3BlcnRpZXMgYXMgUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+XG4gICAgICAgICkpLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKGV2ZW50LnRpbWVzdGFtcCksXG4gICAgICAgIHR5cGU6IGV2ZW50LnR5cGVcbiAgICAgIH0pKSxcbiAgICAgIFVzZXJEZXRhaWxzOiB7XG4gICAgICAgIHNlc3Npb25JZDogam91cm5leUlkLFxuICAgICAgICB1c2VySWQ6IGpvdXJuZXlJZFxuICAgICAgfVxuICAgICAgfSkpXG4gICAgKVxuICBdKTtcblxuICByZXR1cm4ge2FjY2VwdGVkOiBldmVudHMubGVuZ3RoLCBhbmFseXRpY3NJZH07XG59O1xuIl0sIm5hbWVzIjpbIlB1dFJ1bUV2ZW50c0NvbW1hbmQiLCJSVU1DbGllbnQiLCJjcmVhdGVIYXNoIiwicmFuZG9tVVVJRCIsIkNvbmZpZyIsIkNPTExFQ1RJT05TIiwiVXNlckVycm9yIiwidXNlRGIiLCJnZXRBbmFseXRpY3NCeUlkIiwiTUFYX0JBVENIX1NJWkUiLCJNQVhfUFJPUEVSVElFUyIsIk1BWF9TRVFVRU5DRSIsIk1BWF9USU1FU1RBTVBfQUdFX01TIiwiTUFYX1RJTUVTVEFNUF9GVVRVUkVfTVMiLCJMT0dfUkVURU5USU9OX01TIiwiVVVJRF9QQVRURVJOIiwiQkxPQ0tFRF9QUk9QRVJUWV9LRVlTIiwiU2V0IiwiRU1BSUxfUEFUVEVSTiIsImxvZ0NvbGxlY3Rpb25Jbml0aWFsaXphdGlvbiIsIk1hcCIsIlJVTV9NRVRBREFUQV9QUk9QRVJUWV9LRVlTIiwiYnJvd3Nlckxhbmd1YWdlIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyVmVyc2lvbiIsImRldmljZVR5cGUiLCJpbnRlcmFjdGlvbiIsIm9zTmFtZSIsIm9zVmVyc2lvbiIsInBhZ2VJZCIsInBhcmVudFBhZ2VJZCIsIm5vcm1hbGl6ZVRleHQiLCJ2YWx1ZSIsIm1heExlbmd0aCIsIlN0cmluZyIsInRyaW0iLCJzbGljZSIsIm5vcm1hbGl6ZVByb3BlcnR5S2V5IiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwibm9ybWFsaXplRG9tYWluIiwic3BsaXQiLCJnZXRBd3NVdWlkIiwidGVzdCIsImhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJwYXJzZUVudmlyb25tZW50QXBwTW9uaXRvcnMiLCJwcm9jZXNzIiwiZW52IiwiQVdTX1JVTV9BUFBfTU9OSVRPUlMiLCJwYXJzZWQiLCJKU09OIiwicGFyc2UiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRBcHBNb25pdG9yIiwiY29udGV4dCIsImFuYWx5dGljc0lkIiwiY29uZmlndXJlZE1vbml0b3JzIiwiY29uZmlnIiwiYXdzIiwicnVtIiwiYXBwTW9uaXRvcnMiLCJnZXQiLCJlbnZpcm9ubWVudE1vbml0b3JzIiwiY29uZmlndXJlZE1vbml0b3IiLCJhbmFseXRpY3MiLCJhcHBJZCIsIm1vbml0b3IiLCJkb21haW4iLCJpZCIsIm1vbml0b3JJZCIsIm5hbWUiLCJtb25pdG9yTmFtZSIsInZlcnNpb24iLCJkZXRhaWxzIiwidXJsIiwiZ2V0UnVtQ2xpZW50IiwiYXdzQ29uZmlnIiwiYWNjZXNzS2V5SWQiLCJzZWNyZXRBY2Nlc3NLZXkiLCJzZXNzaW9uVG9rZW4iLCJjcmVkZW50aWFscyIsInVzZXNSdW50aW1lQ3JlZGVudGlhbHMiLCJCb29sZWFuIiwiQVdTX1NFU1NJT05fVE9LRU4iLCJBV1NfQUNDRVNTX0tFWV9JRCIsIkFXU19TRUNSRVRfQUNDRVNTX0tFWSIsInVuZGVmaW5lZCIsInJlZ2lvbiIsInNhbml0aXplVGltZXN0YW1wIiwibm93IiwidGltZXN0YW1wIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJNYXRoIiwiZmxvb3IiLCJzYW5pdGl6ZVByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiT2JqZWN0IiwiZW50cmllcyIsInJlZHVjZSIsInJlc3VsdCIsImtleSIsInByb3BlcnR5S2V5Iiwibm9ybWFsaXplZFByb3BlcnR5S2V5IiwiaGFzIiwiaW5jbHVkZXMiLCJ0ZXh0VmFsdWUiLCJnZXRSdW1NZXRhZGF0YSIsIm5vcm1hbGl6ZWRQcm9wZXJ0aWVzIiwibWV0YWRhdGEiLCJhbGlhc2VzIiwiYWxpYXMiLCJmaW5kIiwiY2FuZGlkYXRlIiwiYXBwbGljYXRpb25JZCIsInBsYXRmb3JtVHlwZSIsInNhbml0aXplRXZlbnQiLCJldmVudCIsImlucHV0RXZlbnRJZCIsImV2ZW50SWQiLCJqb3VybmV5SWQiLCJwYXRoIiwidHlwZSIsInNlcXVlbmNlIiwibWluIiwibWF4IiwiZ3JvdXBFdmVudHNCeUpvdXJuZXkiLCJldmVudHMiLCJncm91cHMiLCJqb3VybmV5RXZlbnRzIiwicHVzaCIsInNldCIsImluaXRpYWxpemVMb2dDb2xsZWN0aW9uIiwiZGF0YWJhc2VOYW1lIiwiY2FjaGVLZXkiLCJleGlzdGluZ0luaXRpYWxpemF0aW9uIiwiaW5pdGlhbGl6YXRpb24iLCJkYXRhYmFzZSIsImNvbGxlY3Rpb24iLCJMT0dTIiwiZXhpc3RzIiwiY3JlYXRlQ29sbGVjdGlvbiIsImVycm9yIiwiUHJvbWlzZSIsImFsbCIsImVuc3VyZUluZGV4IiwiZmllbGRzIiwidW5pcXVlIiwiZXhwaXJlQWZ0ZXIiLCJkZWxldGUiLCJwZXJzaXN0UnVtRXZlbnRzIiwiZXhwaXJlc0F0IiwibWFwIiwic2F2ZSIsIl9rZXkiLCJhZGRlZCIsIm92ZXJ3cml0ZU1vZGUiLCJzaWxlbnQiLCJ0cmFja1J1bSIsImJhdGNoIiwiaW5wdXRFdmVudHMiLCJsZW5ndGgiLCJEYXRlIiwiZXZlbnRzQnlKb3VybmV5IiwiY2xpZW50IiwiZnJvbSIsInNlbmQiLCJBbGlhcyIsIkFwcE1vbml0b3JEZXRhaWxzIiwiQmF0Y2hJZCIsIklkIiwiUnVtRXZlbnRzIiwic3RyaW5naWZ5IiwiVXNlckRldGFpbHMiLCJzZXNzaW9uSWQiLCJ1c2VySWQiLCJhY2NlcHRlZCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsbUJBQW1CLEVBQUVDLFNBQVMsUUFBTyxzQkFBc0I7QUFDbkUsU0FBUUMsVUFBVSxFQUFFQyxVQUFVLFFBQU8sU0FBUztBQUU5QyxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQUNwQyxT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
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvcnVtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI2LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge1B1dFJ1bUV2ZW50c0NvbW1hbmQsIFJVTUNsaWVudH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXJ1bSc7XG5pbXBvcnQge2NyZWF0ZUhhc2gsIHJhbmRvbVVVSUR9IGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHtDT0xMRUNUSU9OU30gZnJvbSAnLi4vY29uc3RhbnRzL2NvbGxlY3Rpb25zLmpzJztcbmltcG9ydCB7VXNlckVycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7Z2V0QW5hbHl0aWNzQnlJZH0gZnJvbSAnLi9hbmFseXRpY3MuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXdzQ29uZmlnLCBBd3NSdW1BcHBNb25pdG9yQ29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1J1bUJhdGNoSW5wdXRUeXBlLCBSdW1FdmVudElucHV0VHlwZSwgUnVtUHJvcGVydHksIFJ1bVRyYWNrUmVzdWx0VHlwZX0gZnJvbSAnLi4vdHlwZXMvcnVtLnR5cGVzLmpzJztcblxuY29uc3QgTUFYX0JBVENIX1NJWkUgPSA1MDtcbmNvbnN0IE1BWF9QUk9QRVJUSUVTID0gMjA7XG5jb25zdCBNQVhfU0VRVUVOQ0UgPSAxXzAwMF8wMDA7XG5jb25zdCBNQVhfVElNRVNUQU1QX0FHRV9NUyA9IDI0ICogNjAgKiA2MCAqIDEwMDA7XG5jb25zdCBNQVhfVElNRVNUQU1QX0ZVVFVSRV9NUyA9IDUgKiA2MCAqIDEwMDA7XG5jb25zdCBMT0dfUkVURU5USU9OX01TID0gOTAgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuY29uc3QgVVVJRF9QQVRURVJOID0gL15bYS1mXFxkXXs4fS1bYS1mXFxkXXs0fS1bYS1mXFxkXXs0fS1bYS1mXFxkXXs0fS1bYS1mXFxkXXsxMn0kL2k7XG5jb25zdCBCTE9DS0VEX1BST1BFUlRZX0tFWVMgPSBuZXcgU2V0KFtcbiAgJ2FjY291bnRpZCcsXG4gICdhZGRyZXNzJyxcbiAgJ2VtYWlsJyxcbiAgJ2ZpcnN0bmFtZScsXG4gICdmdWxsbmFtZScsXG4gICdnZW9sb2NhdGlvbicsXG4gICdpcCcsXG4gICdpcGFkZHJlc3MnLFxuICAnbGFzdG5hbWUnLFxuICAnbGF0aXR1ZGUnLFxuICAnbG9uZ2l0dWRlJyxcbiAgJ25hbWUnLFxuICAncGhvbmUnLFxuICAncmVmZXJyZXInLFxuICAndG9rZW4nLFxuICAndXNlcmFnZW50JyxcbiAgJ3VzZXJpZCdcbl0pO1xuY29uc3QgRU1BSUxfUEFUVEVSTiA9IC9cXGJbXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rXFxiL2k7XG5jb25zdCBsb2dDb2xsZWN0aW9uSW5pdGlhbGl6YXRpb24gPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4oKTtcblxudHlwZSBSdW1BcHBNb25pdG9yTWFwID0gUmVjb3JkPHN0cmluZywgQXdzUnVtQXBwTW9uaXRvckNvbmZpZyB8IHN0cmluZz47XG50eXBlIFJ1bU1ldGFkYXRhID0gUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+O1xudHlwZSBSZXNvbHZlZFJ1bU1vbml0b3IgPSB7XG4gIHJlYWRvbmx5IGFwcElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1vbml0b3I6IEF3c1J1bUFwcE1vbml0b3JDb25maWc7XG59O1xuXG5jb25zdCBSVU1fTUVUQURBVEFfUFJPUEVSVFlfS0VZUzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuICBicm93c2VyTGFuZ3VhZ2U6IFsnYnJvd3Nlcmxhbmd1YWdlJ10sXG4gIGJyb3dzZXJOYW1lOiBbJ2Jyb3dzZXJuYW1lJ10sXG4gIGJyb3dzZXJWZXJzaW9uOiBbJ2Jyb3dzZXJ2ZXJzaW9uJ10sXG4gIGRldmljZVR5cGU6IFsnZGV2aWNldHlwZSddLFxuICBpbnRlcmFjdGlvbjogWydpbnRlcmFjdGlvbiddLFxuICBvc05hbWU6IFsnb3NuYW1lJ10sXG4gIG9zVmVyc2lvbjogWydvc3ZlcnNpb24nXSxcbiAgcGFnZUlkOiBbJ3BhZ2VpZCddLFxuICBwYXJlbnRQYWdlSWQ6IFsncGFyZW50cGFnZWlkJywgJ3BhcmVudHBhZ2UnXVxufTtcblxuY29uc3Qgbm9ybWFsaXplVGV4dCA9ICh2YWx1ZTogdW5rbm93biwgbWF4TGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcgPT5cbiAgU3RyaW5nKHZhbHVlIHx8ICcnKS50cmltKCkuc2xpY2UoMCwgbWF4TGVuZ3RoKTtcblxuY29uc3Qgbm9ybWFsaXplUHJvcGVydHlLZXkgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PlxuICB2YWx1ZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05XS9nLCAnJyk7XG5cbmNvbnN0IG5vcm1hbGl6ZURvbWFpbiA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiBub3JtYWxpemVUZXh0KHZhbHVlLCAyNTMpXG4gIC5yZXBsYWNlKC9eaHR0cHM/OlxcL1xcLy9pLCAnJylcbiAgLnNwbGl0KCcvJylbMF1cbiAgLnNwbGl0KCc6JylbMF07XG5cbmNvbnN0IGdldEF3c1V1aWQgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmKFVVSURfUEFUVEVSTi50ZXN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IGhhc2ggPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUodmFsdWUpLmRpZ2VzdCgnaGV4Jyk7XG4gIHJldHVybiBgJHtoYXNoLnNsaWNlKDAsIDgpfS0ke2hhc2guc2xpY2UoOCwgMTIpfS0ke2hhc2guc2xpY2UoMTIsIDE2KX0tJHtoYXNoLnNsaWNlKDE2LCAyMCl9LSR7aGFzaC5zbGljZSgyMCwgMzIpfWA7XG59O1xuXG5jb25zdCBwYXJzZUVudmlyb25tZW50QXBwTW9uaXRvcnMgPSAoKTogUnVtQXBwTW9uaXRvck1hcCA9PiB7XG4gIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnYuQVdTX1JVTV9BUFBfTU9OSVRPUlM7XG5cbiAgaWYoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICByZXR1cm4gcGFyc2VkICYmIHR5cGVvZiBwYXJzZWQgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHBhcnNlZCkgPyBwYXJzZWQgOiB7fTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fY29uZmlnJyk7XG4gIH1cbn07XG5cbmNvbnN0IGdldEFwcE1vbml0b3IgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGFuYWx5dGljc0lkOiBzdHJpbmdcbik6IFByb21pc2U8UmVzb2x2ZWRSdW1Nb25pdG9yPiA9PiB7XG4gIGNvbnN0IGNvbmZpZ3VyZWRNb25pdG9ycyA9IGNvbnRleHQuY29uZmlnPy5hd3M/LnJ1bT8uYXBwTW9uaXRvcnMgfHxcbiAgICBDb25maWcuZ2V0PFJ1bUFwcE1vbml0b3JNYXA+KCdhd3MucnVtLmFwcE1vbml0b3JzJywge30pO1xuICBjb25zdCBlbnZpcm9ubWVudE1vbml0b3JzID0gcGFyc2VFbnZpcm9ubWVudEFwcE1vbml0b3JzKCk7XG4gIGNvbnN0IGNvbmZpZ3VyZWRNb25pdG9yID0gZW52aXJvbm1lbnRNb25pdG9yc1thbmFseXRpY3NJZF0gfHwgY29uZmlndXJlZE1vbml0b3JzW2FuYWx5dGljc0lkXTtcbiAgY29uc3QgYW5hbHl0aWNzID0gYXdhaXQgZ2V0QW5hbHl0aWNzQnlJZChjb250ZXh0LCBhbmFseXRpY3NJZCk7XG4gIGNvbnN0IGFwcElkID0gbm9ybWFsaXplVGV4dChhbmFseXRpY3M/LmFwcElkIHx8IGFuYWx5dGljc0lkLCAxMjgpO1xuXG4gIGlmKCFjb25maWd1cmVkTW9uaXRvcikge1xuICAgIGlmKCFhbmFseXRpY3MgfHwgIWFwcElkKSB7XG4gICAgICB0aHJvdyBuZXcgVXNlckVycm9yKCdpbnZhbGlkX3J1bV9hcHAnKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXBwSWQsXG4gICAgICBtb25pdG9yOiB7XG4gICAgICAgIGRvbWFpbjogYW5hbHl0aWNzLmRvbWFpbixcbiAgICAgICAgaWQ6IGFuYWx5dGljcy5tb25pdG9ySWQsXG4gICAgICAgIG5hbWU6IGFuYWx5dGljcy5tb25pdG9yTmFtZSxcbiAgICAgICAgdmVyc2lvbjogbm9ybWFsaXplVGV4dChcbiAgICAgICAgICBjb250ZXh0LmNvbmZpZz8uZGV0YWlscz8udmVyc2lvbiB8fCBDb25maWcuZ2V0KCdkZXRhaWxzLnZlcnNpb24nKSB8fCAnMS4wLjAnLFxuICAgICAgICAgIDI1NVxuICAgICAgICApXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IG1vbml0b3IgPSB0eXBlb2YgY29uZmlndXJlZE1vbml0b3IgPT09ICdzdHJpbmcnID8ge2lkOiBjb25maWd1cmVkTW9uaXRvcn0gOiBjb25maWd1cmVkTW9uaXRvcjtcbiAgY29uc3QgbW9uaXRvcklkID0gbm9ybWFsaXplVGV4dChtb25pdG9yPy5pZCwgMzYpO1xuXG4gIGlmKCFtb25pdG9ySWQgfHwgIVVVSURfUEFUVEVSTi50ZXN0KG1vbml0b3JJZCkpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKCdpbnZhbGlkX3J1bV9hcHAnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYXBwSWQsXG4gICAgbW9uaXRvcjoge1xuICAgICAgLi4ubW9uaXRvcixcbiAgICAgIGRvbWFpbjogbm9ybWFsaXplRG9tYWluKFxuICAgICAgICBtb25pdG9yLmRvbWFpbiB8fCBjb250ZXh0LmNvbmZpZz8uZGV0YWlscz8udXJsIHx8IENvbmZpZy5nZXQoJ2RldGFpbHMudXJsJykgfHwgYW5hbHl0aWNzSWRcbiAgICAgICksXG4gICAgICBpZDogbW9uaXRvcklkLFxuICAgICAgbmFtZTogbm9ybWFsaXplVGV4dChtb25pdG9yLm5hbWUgfHwgYW5hbHl0aWNzSWQsIDI1NSksXG4gICAgICB2ZXJzaW9uOiBub3JtYWxpemVUZXh0KFxuICAgICAgICBtb25pdG9yLnZlcnNpb24gfHwgY29udGV4dC5jb25maWc/LmRldGFpbHM/LnZlcnNpb24gfHwgQ29uZmlnLmdldCgnZGV0YWlscy52ZXJzaW9uJykgfHwgJzEuMC4wJyxcbiAgICAgICAgMjU1XG4gICAgICApXG4gICAgfVxuICB9O1xufTtcblxuY29uc3QgZ2V0UnVtQ2xpZW50ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBSVU1DbGllbnQgPT4ge1xuICBjb25zdCBhd3NDb25maWc6IEF3c0NvbmZpZyA9IGNvbnRleHQuY29uZmlnPy5hd3MgfHwgQ29uZmlnLmdldDxBd3NDb25maWc+KCdhd3MnLCB7fSk7XG4gIGNvbnN0IHthY2Nlc3NLZXlJZCwgc2VjcmV0QWNjZXNzS2V5LCBzZXNzaW9uVG9rZW59ID0gYXdzQ29uZmlnLmNyZWRlbnRpYWxzIHx8IHt9O1xuICBjb25zdCB1c2VzUnVudGltZUNyZWRlbnRpYWxzID0gQm9vbGVhbihcbiAgICBwcm9jZXNzLmVudi5BV1NfU0VTU0lPTl9UT0tFTiAmJlxuICAgIGFjY2Vzc0tleUlkID09PSBwcm9jZXNzLmVudi5BV1NfQUNDRVNTX0tFWV9JRCAmJlxuICAgIHNlY3JldEFjY2Vzc0tleSA9PT0gcHJvY2Vzcy5lbnYuQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZXG4gICk7XG4gIGNvbnN0IGNyZWRlbnRpYWxzID0gYWNjZXNzS2V5SWQgJiYgc2VjcmV0QWNjZXNzS2V5ICYmICF1c2VzUnVudGltZUNyZWRlbnRpYWxzID8ge1xuICAgIGFjY2Vzc0tleUlkLFxuICAgIHNlY3JldEFjY2Vzc0tleSxcbiAgICAuLi4oc2Vzc2lvblRva2VuID8ge3Nlc3Npb25Ub2tlbn0gOiB7fSlcbiAgfSA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4gbmV3IFJVTUNsaWVudCh7XG4gICAgLi4uKGNyZWRlbnRpYWxzID8ge2NyZWRlbnRpYWxzfSA6IHt9KSxcbiAgICAuLi4oYXdzQ29uZmlnLnJlZ2lvbiA/IHtyZWdpb246IGF3c0NvbmZpZy5yZWdpb259IDoge30pXG4gIH0pO1xufTtcblxuY29uc3Qgc2FuaXRpemVUaW1lc3RhbXAgPSAodmFsdWU6IHVua25vd24sIG5vdzogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgY29uc3QgdGltZXN0YW1wID0gTnVtYmVyKHZhbHVlKTtcblxuICBpZihcbiAgICAhTnVtYmVyLmlzRmluaXRlKHRpbWVzdGFtcCkgfHxcbiAgICB0aW1lc3RhbXAgPCBub3cgLSBNQVhfVElNRVNUQU1QX0FHRV9NUyB8fFxuICAgIHRpbWVzdGFtcCA+IG5vdyArIE1BWF9USU1FU1RBTVBfRlVUVVJFX01TXG4gICkge1xuICAgIHJldHVybiBub3c7XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcih0aW1lc3RhbXApO1xufTtcblxuY29uc3Qgc2FuaXRpemVQcm9wZXJ0aWVzID0gKFxuICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBSdW1Qcm9wZXJ0eT4gPSB7fVxuKTogUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+ID0+IE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpXG4gIC5zbGljZSgwLCBNQVhfUFJPUEVSVElFUylcbiAgLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBSdW1Qcm9wZXJ0eT4+KChyZXN1bHQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5S2V5ID0gbm9ybWFsaXplVGV4dChrZXksIDY0KTtcbiAgICBjb25zdCBub3JtYWxpemVkUHJvcGVydHlLZXkgPSBub3JtYWxpemVQcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG5cbiAgICBpZihcbiAgICAgIHByb3BlcnR5S2V5ICYmXG4gICAgICAhQkxPQ0tFRF9QUk9QRVJUWV9LRVlTLmhhcyhub3JtYWxpemVkUHJvcGVydHlLZXkpICYmXG4gICAgICBbJ2Jvb2xlYW4nLCAnbnVtYmVyJywgJ3N0cmluZyddLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSlcbiAgICApIHtcbiAgICAgIGlmKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgdGV4dFZhbHVlID0gbm9ybWFsaXplVGV4dCh2YWx1ZSwgMjU2KTtcblxuICAgICAgICBpZih0ZXh0VmFsdWUgJiYgIUVNQUlMX1BBVFRFUk4udGVzdCh0ZXh0VmFsdWUpKSB7XG4gICAgICAgICAgcmVzdWx0W3Byb3BlcnR5S2V5XSA9IHRleHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0W3Byb3BlcnR5S2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIHt9KTtcblxuY29uc3QgZ2V0UnVtTWV0YWRhdGEgPSAoXG4gIGFwcElkOiBzdHJpbmcsXG4gIGRvbWFpbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBSdW1Qcm9wZXJ0eT5cbik6IFJ1bU1ldGFkYXRhID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFByb3BlcnRpZXMgPSBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5yZWR1Y2U8UmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+PihcbiAgICAocmVzdWx0LCBba2V5LCB2YWx1ZV0pID0+ICh7Li4ucmVzdWx0LCBbbm9ybWFsaXplUHJvcGVydHlLZXkoa2V5KV06IHZhbHVlfSksXG4gICAge31cbiAgKTtcblxuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoUlVNX01FVEFEQVRBX1BST1BFUlRZX0tFWVMpLnJlZHVjZTxSdW1NZXRhZGF0YT4oKG1ldGFkYXRhLCBba2V5LCBhbGlhc2VzXSkgPT4ge1xuICAgIGNvbnN0IGFsaWFzID0gYWxpYXNlcy5maW5kKChjYW5kaWRhdGUpID0+IG5vcm1hbGl6ZWRQcm9wZXJ0aWVzW2NhbmRpZGF0ZV0gIT09IHVuZGVmaW5lZCk7XG5cbiAgICBpZihhbGlhcykge1xuICAgICAgbWV0YWRhdGFba2V5XSA9IG5vcm1hbGl6ZWRQcm9wZXJ0aWVzW2FsaWFzXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH0sIHtcbiAgICBhcHBsaWNhdGlvbklkOiBhcHBJZCxcbiAgICAuLi4oZG9tYWluID8ge2RvbWFpbn0gOiB7fSksXG4gICAgcGxhdGZvcm1UeXBlOiAnd2ViJyxcbiAgICB2ZXJzaW9uOiAnMS4wLjAnXG4gIH0pO1xufTtcblxuY29uc3Qgc2FuaXRpemVFdmVudCA9IChldmVudDogUnVtRXZlbnRJbnB1dFR5cGUsIG5vdzogbnVtYmVyKTogUnVtRXZlbnRJbnB1dFR5cGUgPT4ge1xuICBjb25zdCBpbnB1dEV2ZW50SWQgPSBub3JtYWxpemVUZXh0KGV2ZW50LmV2ZW50SWQsIDEyOCk7XG4gIGNvbnN0IGpvdXJuZXlJZCA9IG5vcm1hbGl6ZVRleHQoZXZlbnQuam91cm5leUlkLCAxMjgpO1xuICBjb25zdCBuYW1lID0gbm9ybWFsaXplVGV4dChldmVudC5uYW1lLCAxMjgpO1xuICBjb25zdCBwYXRoID0gbm9ybWFsaXplVGV4dChldmVudC5wYXRoLCAyNTYpLnNwbGl0KCc/JylbMF0uc3BsaXQoJyMnKVswXTtcbiAgY29uc3QgdHlwZSA9IG5vcm1hbGl6ZVRleHQoZXZlbnQudHlwZSwgMjU2KS5yZXBsYWNlKC9bXmEtekEtWjAtOV8uLV0vZywgJ18nKTtcblxuICBpZighaW5wdXRFdmVudElkIHx8ICFqb3VybmV5SWQgfHwgIW5hbWUgfHwgIXR5cGUpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKCdpbnZhbGlkX3J1bV9ldmVudCcpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBldmVudElkOiBnZXRBd3NVdWlkKGlucHV0RXZlbnRJZCksXG4gICAgam91cm5leUlkOiBnZXRBd3NVdWlkKGpvdXJuZXlJZCksXG4gICAgbmFtZSxcbiAgICAuLi4ocGF0aCA/IHtwYXRofSA6IHt9KSxcbiAgICBwcm9wZXJ0aWVzOiBzYW5pdGl6ZVByb3BlcnRpZXMoZXZlbnQucHJvcGVydGllcyksXG4gICAgc2VxdWVuY2U6IE1hdGgubWluKE1BWF9TRVFVRU5DRSwgTWF0aC5tYXgoMSwgTWF0aC5mbG9vcihOdW1iZXIoZXZlbnQuc2VxdWVuY2UpIHx8IDEpKSksXG4gICAgdGltZXN0YW1wOiBzYW5pdGl6ZVRpbWVzdGFtcChldmVudC50aW1lc3RhbXAsIG5vdyksXG4gICAgdHlwZVxuICB9O1xufTtcblxuY29uc3QgZ3JvdXBFdmVudHNCeUpvdXJuZXkgPSAoZXZlbnRzOiBSdW1FdmVudElucHV0VHlwZVtdKTogTWFwPHN0cmluZywgUnVtRXZlbnRJbnB1dFR5cGVbXT4gPT5cbiAgZXZlbnRzLnJlZHVjZTxNYXA8c3RyaW5nLCBSdW1FdmVudElucHV0VHlwZVtdPj4oKGdyb3VwcywgZXZlbnQpID0+IHtcbiAgICBjb25zdCBqb3VybmV5RXZlbnRzID0gZ3JvdXBzLmdldChldmVudC5qb3VybmV5SWQpIHx8IFtdO1xuICAgIGpvdXJuZXlFdmVudHMucHVzaChldmVudCk7XG4gICAgZ3JvdXBzLnNldChldmVudC5qb3VybmV5SWQsIGpvdXJuZXlFdmVudHMpO1xuICAgIHJldHVybiBncm91cHM7XG4gIH0sIG5ldyBNYXAoKSk7XG5cbmNvbnN0IGluaXRpYWxpemVMb2dDb2xsZWN0aW9uID0gYXN5bmMgKGRhdGFiYXNlTmFtZT86IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBjYWNoZUtleSA9IGRhdGFiYXNlTmFtZSB8fCAncmVha3Rvcic7XG4gIGNvbnN0IGV4aXN0aW5nSW5pdGlhbGl6YXRpb24gPSBsb2dDb2xsZWN0aW9uSW5pdGlhbGl6YXRpb24uZ2V0KGNhY2hlS2V5KTtcblxuICBpZihleGlzdGluZ0luaXRpYWxpemF0aW9uKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nSW5pdGlhbGl6YXRpb247XG4gIH1cblxuICBjb25zdCBpbml0aWFsaXphdGlvbiA9IChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZU5hbWUpO1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBkYXRhYmFzZS5jb2xsZWN0aW9uKENPTExFQ1RJT05TLkxPR1MpO1xuXG4gICAgaWYoIWF3YWl0IGNvbGxlY3Rpb24uZXhpc3RzKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGRhdGFiYXNlLmNyZWF0ZUNvbGxlY3Rpb24oQ09MTEVDVElPTlMuTE9HUyk7XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIGlmKCFhd2FpdCBjb2xsZWN0aW9uLmV4aXN0cygpKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBjb2xsZWN0aW9uLmVuc3VyZUluZGV4KHtcbiAgICAgICAgZmllbGRzOiBbJ2FwcElkJywgJ2V2ZW50SWQnXSxcbiAgICAgICAgbmFtZTogJ2xvZ3NfYXBwX2V2ZW50JyxcbiAgICAgICAgdHlwZTogJ3BlcnNpc3RlbnQnLFxuICAgICAgICB1bmlxdWU6IHRydWVcbiAgICAgIH0pLFxuICAgICAgY29sbGVjdGlvbi5lbnN1cmVJbmRleCh7XG4gICAgICAgIGV4cGlyZUFmdGVyOiAwLFxuICAgICAgICBmaWVsZHM6IFsnZXhwaXJlc0F0J10sXG4gICAgICAgIG5hbWU6ICdsb2dzX2V4cGlyeScsXG4gICAgICAgIHR5cGU6ICd0dGwnXG4gICAgICB9KVxuICAgIF0pO1xuICB9KSgpO1xuXG4gIGxvZ0NvbGxlY3Rpb25Jbml0aWFsaXphdGlvbi5zZXQoY2FjaGVLZXksIGluaXRpYWxpemF0aW9uKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGluaXRpYWxpemF0aW9uO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nQ29sbGVjdGlvbkluaXRpYWxpemF0aW9uLmRlbGV0ZShjYWNoZUtleSk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmNvbnN0IHBlcnNpc3RSdW1FdmVudHMgPSBhc3luYyAoXG4gIGRhdGFiYXNlTmFtZTogc3RyaW5nLFxuICBhbmFseXRpY3NJZDogc3RyaW5nLFxuICBhcHBJZDogc3RyaW5nLFxuICBldmVudHM6IFJ1bUV2ZW50SW5wdXRUeXBlW10sXG4gIG5vdzogbnVtYmVyXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgYXdhaXQgaW5pdGlhbGl6ZUxvZ0NvbGxlY3Rpb24oZGF0YWJhc2VOYW1lKTtcbiAgY29uc3QgY29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbihDT0xMRUNUSU9OUy5MT0dTKTtcbiAgY29uc3QgZXhwaXJlc0F0ID0gTWF0aC5mbG9vcigobm93ICsgTE9HX1JFVEVOVElPTl9NUykgLyAxMDAwKTtcblxuICBhd2FpdCBQcm9taXNlLmFsbChldmVudHMubWFwKChldmVudCkgPT4gY29sbGVjdGlvbi5zYXZlKHtcbiAgICBfa2V5OiBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoYCR7YXBwSWR9OiR7ZXZlbnQuZXZlbnRJZH1gKS5kaWdlc3QoJ2hleCcpLFxuICAgIGFkZGVkOiBub3csXG4gICAgYW5hbHl0aWNzSWQsXG4gICAgYXBwSWQsXG4gICAgZXZlbnRJZDogZXZlbnQuZXZlbnRJZCxcbiAgICBleHBpcmVzQXQsXG4gICAgam91cm5leUlkOiBldmVudC5qb3VybmV5SWQsXG4gICAgbmFtZTogZXZlbnQubmFtZSxcbiAgICAuLi4oZXZlbnQucGF0aCA/IHtwYXRoOiBldmVudC5wYXRofSA6IHt9KSxcbiAgICBwcm9wZXJ0aWVzOiBldmVudC5wcm9wZXJ0aWVzLFxuICAgIHNlcXVlbmNlOiBldmVudC5zZXF1ZW5jZSxcbiAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCxcbiAgICB0eXBlOiBldmVudC50eXBlXG4gIH0sIHtvdmVyd3JpdGVNb2RlOiAnaWdub3JlJywgc2lsZW50OiB0cnVlfSkpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFja1J1bSA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgYmF0Y2g6IFJ1bUJhdGNoSW5wdXRUeXBlXG4pOiBQcm9taXNlPFJ1bVRyYWNrUmVzdWx0VHlwZT4gPT4ge1xuICBjb25zdCBhbmFseXRpY3NJZCA9IG5vcm1hbGl6ZVRleHQoYmF0Y2g/LmFuYWx5dGljc0lkLCAxMjgpO1xuICBjb25zdCBpbnB1dEV2ZW50cyA9IEFycmF5LmlzQXJyYXkoYmF0Y2g/LmV2ZW50cykgPyBiYXRjaC5ldmVudHMgOiBbXTtcblxuICBpZighYW5hbHl0aWNzSWQgfHwgaW5wdXRFdmVudHMubGVuZ3RoID09PSAwIHx8IGlucHV0RXZlbnRzLmxlbmd0aCA+IE1BWF9CQVRDSF9TSVpFKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fYmF0Y2gnKTtcbiAgfVxuXG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IHthcHBJZCwgbW9uaXRvcn0gPSBhd2FpdCBnZXRBcHBNb25pdG9yKGNvbnRleHQsIGFuYWx5dGljc0lkKTtcbiAgaWYoIWNvbnRleHQucmVzb2x2ZUFwcERhdGFiYXNlTmFtZSkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2FwcF9kYXRhYmFzZV9yZXNvbHZlcl91bmF2YWlsYWJsZScpO1xuICB9XG4gIGNvbnN0IGRhdGFiYXNlTmFtZSA9IGF3YWl0IGNvbnRleHQucmVzb2x2ZUFwcERhdGFiYXNlTmFtZShjb250ZXh0LCBhcHBJZCk7XG4gIGNvbnN0IGV2ZW50cyA9IGlucHV0RXZlbnRzLm1hcCgoZXZlbnQpID0+IHNhbml0aXplRXZlbnQoZXZlbnQsIG5vdykpO1xuICBjb25zdCBldmVudHNCeUpvdXJuZXkgPSBncm91cEV2ZW50c0J5Sm91cm5leShldmVudHMpO1xuICBjb25zdCBjbGllbnQgPSBnZXRSdW1DbGllbnQoY29udGV4dCk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIHBlcnNpc3RSdW1FdmVudHMoZGF0YWJhc2VOYW1lLCBhbmFseXRpY3NJZCwgYXBwSWQsIGV2ZW50cywgbm93KSxcbiAgICAuLi5BcnJheS5mcm9tKGV2ZW50c0J5Sm91cm5leS5lbnRyaWVzKCkpLm1hcCgoW2pvdXJuZXlJZCwgam91cm5leUV2ZW50c10pID0+XG4gICAgICBjbGllbnQuc2VuZChuZXcgUHV0UnVtRXZlbnRzQ29tbWFuZCh7XG4gICAgICAuLi4obW9uaXRvci5hbGlhcyA/IHtBbGlhczogbW9uaXRvci5hbGlhc30gOiB7fSksXG4gICAgICBBcHBNb25pdG9yRGV0YWlsczoge1xuICAgICAgICBpZDogbW9uaXRvci5pZCxcbiAgICAgICAgbmFtZTogbW9uaXRvci5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBtb25pdG9yLnZlcnNpb25cbiAgICAgIH0sXG4gICAgICBCYXRjaElkOiByYW5kb21VVUlEKCksXG4gICAgICBJZDogbW9uaXRvci5pZCxcbiAgICAgIFJ1bUV2ZW50czogam91cm5leUV2ZW50cy5tYXAoKGV2ZW50KSA9PiAoe1xuICAgICAgICBkZXRhaWxzOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgYXBwSWQsXG4gICAgICAgICAgbmFtZTogZXZlbnQubmFtZSxcbiAgICAgICAgICAuLi4oZXZlbnQucGF0aCA/IHtwYXRoOiBldmVudC5wYXRofSA6IHt9KSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBldmVudC5wcm9wZXJ0aWVzLFxuICAgICAgICAgIHNlcXVlbmNlOiBldmVudC5zZXF1ZW5jZVxuICAgICAgICB9KSxcbiAgICAgICAgaWQ6IGV2ZW50LmV2ZW50SWQsXG4gICAgICAgIG1ldGFkYXRhOiBKU09OLnN0cmluZ2lmeShnZXRSdW1NZXRhZGF0YShcbiAgICAgICAgICBhcHBJZCxcbiAgICAgICAgICBtb25pdG9yLmRvbWFpbixcbiAgICAgICAgICBldmVudC5wcm9wZXJ0aWVzIGFzIFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5PlxuICAgICAgICApKSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZShldmVudC50aW1lc3RhbXApLFxuICAgICAgICB0eXBlOiBldmVudC50eXBlXG4gICAgICB9KSksXG4gICAgICBVc2VyRGV0YWlsczoge1xuICAgICAgICBzZXNzaW9uSWQ6IGpvdXJuZXlJZCxcbiAgICAgICAgdXNlcklkOiBqb3VybmV5SWRcbiAgICAgIH1cbiAgICAgIH0pKVxuICAgIClcbiAgXSk7XG5cbiAgcmV0dXJuIHthY2NlcHRlZDogZXZlbnRzLmxlbmd0aCwgYW5hbHl0aWNzSWR9O1xufTtcbiJdLCJuYW1lcyI6WyJQdXRSdW1FdmVudHNDb21tYW5kIiwiUlVNQ2xpZW50IiwiY3JlYXRlSGFzaCIsInJhbmRvbVVVSUQiLCJDb25maWciLCJDT0xMRUNUSU9OUyIsIlVzZXJFcnJvciIsInVzZURiIiwiZ2V0QW5hbHl0aWNzQnlJZCIsIk1BWF9CQVRDSF9TSVpFIiwiTUFYX1BST1BFUlRJRVMiLCJNQVhfU0VRVUVOQ0UiLCJNQVhfVElNRVNUQU1QX0FHRV9NUyIsIk1BWF9USU1FU1RBTVBfRlVUVVJFX01TIiwiTE9HX1JFVEVOVElPTl9NUyIsIlVVSURfUEFUVEVSTiIsIkJMT0NLRURfUFJPUEVSVFlfS0VZUyIsIlNldCIsIkVNQUlMX1BBVFRFUk4iLCJsb2dDb2xsZWN0aW9uSW5pdGlhbGl6YXRpb24iLCJNYXAiLCJSVU1fTUVUQURBVEFfUFJPUEVSVFlfS0VZUyIsImJyb3dzZXJMYW5ndWFnZSIsImJyb3dzZXJOYW1lIiwiYnJvd3NlclZlcnNpb24iLCJkZXZpY2VUeXBlIiwiaW50ZXJhY3Rpb24iLCJvc05hbWUiLCJvc1ZlcnNpb24iLCJwYWdlSWQiLCJwYXJlbnRQYWdlSWQiLCJub3JtYWxpemVUZXh0IiwidmFsdWUiLCJtYXhMZW5ndGgiLCJTdHJpbmciLCJ0cmltIiwic2xpY2UiLCJub3JtYWxpemVQcm9wZXJ0eUtleSIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsIm5vcm1hbGl6ZURvbWFpbiIsInNwbGl0IiwiZ2V0QXdzVXVpZCIsInRlc3QiLCJoYXNoIiwidXBkYXRlIiwiZGlnZXN0IiwicGFyc2VFbnZpcm9ubWVudEFwcE1vbml0b3JzIiwicHJvY2VzcyIsImVudiIsIkFXU19SVU1fQVBQX01PTklUT1JTIiwicGFyc2VkIiwiSlNPTiIsInBhcnNlIiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0QXBwTW9uaXRvciIsImNvbnRleHQiLCJhbmFseXRpY3NJZCIsImNvbmZpZ3VyZWRNb25pdG9ycyIsImNvbmZpZyIsImF3cyIsInJ1bSIsImFwcE1vbml0b3JzIiwiZ2V0IiwiZW52aXJvbm1lbnRNb25pdG9ycyIsImNvbmZpZ3VyZWRNb25pdG9yIiwiYW5hbHl0aWNzIiwiYXBwSWQiLCJtb25pdG9yIiwiZG9tYWluIiwiaWQiLCJtb25pdG9ySWQiLCJuYW1lIiwibW9uaXRvck5hbWUiLCJ2ZXJzaW9uIiwiZGV0YWlscyIsInVybCIsImdldFJ1bUNsaWVudCIsImF3c0NvbmZpZyIsImFjY2Vzc0tleUlkIiwic2VjcmV0QWNjZXNzS2V5Iiwic2Vzc2lvblRva2VuIiwiY3JlZGVudGlhbHMiLCJ1c2VzUnVudGltZUNyZWRlbnRpYWxzIiwiQm9vbGVhbiIsIkFXU19TRVNTSU9OX1RPS0VOIiwiQVdTX0FDQ0VTU19LRVlfSUQiLCJBV1NfU0VDUkVUX0FDQ0VTU19LRVkiLCJ1bmRlZmluZWQiLCJyZWdpb24iLCJzYW5pdGl6ZVRpbWVzdGFtcCIsIm5vdyIsInRpbWVzdGFtcCIsIk51bWJlciIsImlzRmluaXRlIiwiTWF0aCIsImZsb29yIiwic2FuaXRpemVQcm9wZXJ0aWVzIiwicHJvcGVydGllcyIsIk9iamVjdCIsImVudHJpZXMiLCJyZWR1Y2UiLCJyZXN1bHQiLCJrZXkiLCJwcm9wZXJ0eUtleSIsIm5vcm1hbGl6ZWRQcm9wZXJ0eUtleSIsImhhcyIsImluY2x1ZGVzIiwidGV4dFZhbHVlIiwiZ2V0UnVtTWV0YWRhdGEiLCJub3JtYWxpemVkUHJvcGVydGllcyIsIm1ldGFkYXRhIiwiYWxpYXNlcyIsImFsaWFzIiwiZmluZCIsImNhbmRpZGF0ZSIsImFwcGxpY2F0aW9uSWQiLCJwbGF0Zm9ybVR5cGUiLCJzYW5pdGl6ZUV2ZW50IiwiZXZlbnQiLCJpbnB1dEV2ZW50SWQiLCJldmVudElkIiwiam91cm5leUlkIiwicGF0aCIsInR5cGUiLCJzZXF1ZW5jZSIsIm1pbiIsIm1heCIsImdyb3VwRXZlbnRzQnlKb3VybmV5IiwiZXZlbnRzIiwiZ3JvdXBzIiwiam91cm5leUV2ZW50cyIsInB1c2giLCJzZXQiLCJpbml0aWFsaXplTG9nQ29sbGVjdGlvbiIsImRhdGFiYXNlTmFtZSIsImNhY2hlS2V5IiwiZXhpc3RpbmdJbml0aWFsaXphdGlvbiIsImluaXRpYWxpemF0aW9uIiwiZGF0YWJhc2UiLCJjb2xsZWN0aW9uIiwiTE9HUyIsImV4aXN0cyIsImNyZWF0ZUNvbGxlY3Rpb24iLCJlcnJvciIsIlByb21pc2UiLCJhbGwiLCJlbnN1cmVJbmRleCIsImZpZWxkcyIsInVuaXF1ZSIsImV4cGlyZUFmdGVyIiwiZGVsZXRlIiwicGVyc2lzdFJ1bUV2ZW50cyIsImV4cGlyZXNBdCIsIm1hcCIsInNhdmUiLCJfa2V5IiwiYWRkZWQiLCJvdmVyd3JpdGVNb2RlIiwic2lsZW50IiwidHJhY2tSdW0iLCJiYXRjaCIsImlucHV0RXZlbnRzIiwibGVuZ3RoIiwiRGF0ZSIsInJlc29sdmVBcHBEYXRhYmFzZU5hbWUiLCJldmVudHNCeUpvdXJuZXkiLCJjbGllbnQiLCJmcm9tIiwic2VuZCIsIkFsaWFzIiwiQXBwTW9uaXRvckRldGFpbHMiLCJCYXRjaElkIiwiSWQiLCJSdW1FdmVudHMiLCJzdHJpbmdpZnkiLCJVc2VyRGV0YWlscyIsInNlc3Npb25JZCIsInVzZXJJZCIsImFjY2VwdGVkIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxtQkFBbUIsRUFBRUMsU0FBUyxRQUFPLHNCQUFzQjtBQUNuRSxTQUFRQyxVQUFVLEVBQUVDLFVBQVUsUUFBTyxTQUFTO0FBRTlDLFNBQVFDLE1BQU0sUUFBTyxlQUFlO0FBQ3BDLFNBQVFDLFdBQVcsUUFBTyw4QkFBOEI7QUFDeEQsU0FBUUMsU0FBUyxRQUFPLDZCQUE2QjtBQUNyRCxTQUFRQyxLQUFLLFFBQU8sNEJBQTRCO0FBQ2hELFNBQVFDLGdCQUFnQixRQUFPLGlCQUFpQjtBQU1oRCxNQUFNQyxpQkFBaUI7QUFDdkIsTUFBTUMsaUJBQWlCO0FBQ3ZCLE1BQU1DLGVBQWU7QUFDckIsTUFBTUMsdUJBQXVCLEtBQUssS0FBSyxLQUFLO0FBQzVDLE1BQU1DLDBCQUEwQixJQUFJLEtBQUs7QUFDekMsTUFBTUMsbUJBQW1CLEtBQUssS0FBSyxLQUFLLEtBQUs7QUFDN0MsTUFBTUMsZUFBZTtBQUNyQixNQUFNQyx3QkFBd0IsSUFBSUMsSUFBSTtJQUNwQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFDRCxNQUFNQyxnQkFBZ0I7QUFDdEIsTUFBTUMsOEJBQThCLElBQUlDO0FBU3hDLE1BQU1DLDZCQUF1RDtJQUMzREMsaUJBQWlCO1FBQUM7S0FBa0I7SUFDcENDLGFBQWE7UUFBQztLQUFjO0lBQzVCQyxnQkFBZ0I7UUFBQztLQUFpQjtJQUNsQ0MsWUFBWTtRQUFDO0tBQWE7SUFDMUJDLGFBQWE7UUFBQztLQUFjO0lBQzVCQyxRQUFRO1FBQUM7S0FBUztJQUNsQkMsV0FBVztRQUFDO0tBQVk7SUFDeEJDLFFB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
|
package/lib/actions/s3.js
CHANGED
|
@@ -120,4 +120,4 @@ export const s3AbortMultipartUpload = async (params)=>{
|
|
|
120
120
|
return await s3.send(new AbortMultipartUploadCommand(params));
|
|
121
121
|
};
|
|
122
122
|
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC9ubGFicy1yZWFrdG9yLXJlbGVhc2UuZU1RNVNoL2NoZWNrb3V0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvczMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCB7XG4gIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCxcbiAgQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXQsXG4gIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dCxcbiAgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kLFxuICBDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRJbnB1dCxcbiAgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kLFxuICBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXQsXG4gIENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZU9iamVjdENvbW1hbmRJbnB1dCxcbiAgRGVsZXRlT2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQsXG4gIEdldE9iamVjdENvbW1hbmQsXG4gIEdldE9iamVjdENvbW1hbmRJbnB1dCxcbiAgR2V0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgSGVhZE9iamVjdENvbW1hbmRJbnB1dCxcbiAgSGVhZE9iamVjdENvbW1hbmRPdXRwdXQsXG4gIFB1dE9iamVjdENvbW1hbmRJbnB1dCxcbiAgUHV0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgUzMsXG4gIFVwbG9hZFBhcnRDb21tYW5kLFxuICBVcGxvYWRQYXJ0Q29tbWFuZElucHV0XG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zMyc7XG5pbXBvcnQge2dldFNpZ25lZFVybH0gZnJvbSAnQGF3cy1zZGsvczMtcmVxdWVzdC1wcmVzaWduZXInO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7Z2V0QXdzQ3JlZGVudGlhbHN9IGZyb20gJy4uL3V0aWxzL2F3c1V0aWxzLmpzJztcblxuY29uc3QgZ2V0UzNCdWNrZXQgPSAoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+XG4gIENvbmZpZy5nZXQoJ2F3cy5zMy5CdWNrZXQnKSB8fCBDb25maWcuZ2V0KCdhd3MuczMuYnVja2V0Jyk7XG5cbmNvbnN0IGNyZWF0ZVMzQ2xpZW50ID0gKCk6IFMzID0+IG5ldyBTMyh7XG4gIGNyZWRlbnRpYWxzOiBnZXRBd3NDcmVkZW50aWFscygpLFxuICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxufSk7XG5cbmV4cG9ydCBjb25zdCBzM0dldEJ1Y2tldCA9ICgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4gZ2V0UzNCdWNrZXQoKTtcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdzMyc7XG5leHBvcnQgY29uc3QgczNHZXQgPSAocGFyYW1zOiBHZXRPYmplY3RDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldE9iamVjdENvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBnZXRTM0J1Y2tldCgpO1xuICAgIH1cblxuICAgIHMzLmdldE9iamVjdChwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dD86IEdldE9iamVjdENvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQgYXMgR2V0T2JqZWN0Q29tbWFuZE91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgczNIZWFkID0gKHBhcmFtczogSGVhZE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8SGVhZE9iamVjdENvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBnZXRTM0J1Y2tldCgpO1xuICAgIH1cblxuICAgIHMzLmhlYWRPYmplY3QocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ/OiBIZWFkT2JqZWN0Q29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQgYXMgSGVhZE9iamVjdENvbW1hbmRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzUHV0ID0gKHBhcmFtczogUHV0T2JqZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxQdXRPYmplY3RDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgczMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBnZXRTM0J1Y2tldCgpO1xuICAgIH1cblxuICAgIGlmKCFwYXJhbXMuU3RvcmFnZUNsYXNzKSB7XG4gICAgICBwYXJhbXMuU3RvcmFnZUNsYXNzID0gJ1JFRFVDRURfUkVEVU5EQU5DWSc7XG4gICAgfVxuXG4gICAgczMucHV0T2JqZWN0KHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0PzogUHV0T2JqZWN0Q29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCBhcyBQdXRPYmplY3RDb21tYW5kT3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzM0RlbGV0ZSA9IChwYXJhbXM6IERlbGV0ZU9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlT2JqZWN0Q29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHMzOiBTMyA9IGNyZWF0ZVMzQ2xpZW50KCk7XG5cbiAgICBpZighcGFyYW1zLkJ1Y2tldCkge1xuICAgICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gICAgfVxuXG4gICAgczMuZGVsZXRlT2JqZWN0KHBhcmFtcywgKGVycm9yLCBvdXRwdXQ/OiBEZWxldGVPYmplY3RDb21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0IGFzIERlbGV0ZU9iamVjdENvbW1hbmRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzRGVsZXRlTGlzdCA9IChwYXJhbXM6IERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgczM6IFMzID0gY3JlYXRlUzNDbGllbnQoKTtcblxuICAgIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgICB9XG5cbiAgICBzMy5kZWxldGVPYmplY3RzKHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0PzogRGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQgYXMgRGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzR2V0U2lnbmVkVXJsID0gYXN5bmMgKHBhcmFtczogYW55ID0ge30pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gIGlmKCFwYXJhbXMuRXhwaXJlcykge1xuICAgIHBhcmFtcy5FeHBpcmVzID0gMTIgKiA2MCAqIDYwO1xuICB9XG5cbiAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBnZXRTaWduZWRVcmwoczMsIG5ldyBHZXRPYmplY3RDb21tYW5kKHBhcmFtcyksIHtcbiAgICBleHBpcmVzSW46IHBhcmFtcy5FeHBpcmVzXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHMzQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRJbnB1dFxuKTogUHJvbWlzZTxDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0PiA9PiB7XG4gIGNvbnN0IHMzOiBTMyA9IGNyZWF0ZVMzQ2xpZW50KCk7XG5cbiAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBzMy5zZW5kKG5ldyBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kKHBhcmFtcykpO1xufTtcblxuZXhwb3J0IGNvbnN0IHMzR2V0VXBsb2FkUGFydFNpZ25lZFVybCA9IGFzeW5jIChwYXJhbXM6IFVwbG9hZFBhcnRDb21tYW5kSW5wdXQgJiB7RXhwaXJlcz86IG51bWJlcn0pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gIH1cblxuICBjb25zdCBleHBpcmVzSW4gPSBwYXJhbXMuRXhwaXJlcyB8fCA2MCAqIDYwO1xuICBkZWxldGUgcGFyYW1zLkV4cGlyZXM7XG5cbiAgcmV0dXJuIGF3YWl0IGdldFNpZ25lZFVybChzMywgbmV3IFVwbG9hZFBhcnRDb21tYW5kKHBhcmFtcyksIHtleHBpcmVzSW59KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzM0NvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkID0gYXN5bmMgKFxuICBwYXJhbXM6IENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0XG4pOiBQcm9taXNlPENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dD4gPT4ge1xuICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgczMuc2VuZChuZXcgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kKHBhcmFtcykpO1xufTtcblxuZXhwb3J0IGNvbnN0IHMzQWJvcnRNdWx0aXBhcnRVcGxvYWQgPSBhc3luYyAoXG4gIHBhcmFtczogQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXRcbik6IFByb21pc2U8QWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0PiA9PiB7XG4gIGNvbnN0IHMzOiBTMyA9IGNyZWF0ZVMzQ2xpZW50KCk7XG5cbiAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBzMy5zZW5kKG5ldyBBYm9ydE11bHRpcGFydFVwbG9hZENvbW1hbmQocGFyYW1zKSk7XG59O1xuIl0sIm5hbWVzIjpbIkFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCIsIkNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCIsIkNyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmQiLCJHZXRPYmplY3RDb21tYW5kIiwiUzMiLCJVcGxvYWRQYXJ0Q29tbWFuZCIsImdldFNpZ25lZFVybCIsIkNvbmZpZyIsImdldEF3c0NyZWRlbnRpYWxzIiwiZ2V0UzNCdWNrZXQiLCJnZXQiLCJjcmVhdGVTM0NsaWVudCIsImNyZWRlbnRpYWxzIiwicmVnaW9uIiwiczNHZXRCdWNrZXQiLCJzM0dldCIsInBhcmFtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiczMiLCJCdWNrZXQiLCJnZXRPYmplY3QiLCJlcnJvciIsIm91dHB1dCIsInMzSGVhZCIsImhlYWRPYmplY3QiLCJzM1B1dCIsIlN0b3JhZ2VDbGFzcyIsInB1dE9iamVjdCIsInMzRGVsZXRlIiwiZGVsZXRlT2JqZWN0IiwiczNEZWxldGVMaXN0IiwiZGVsZXRlT2JqZWN0cyIsInMzR2V0U2lnbmVkVXJsIiwiRXhwaXJlcyIsImV4cGlyZXNJbiIsInMzQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkIiwic2VuZCIsInMzR2V0VXBsb2FkUGFydFNpZ25lZFVybCIsInMzQ29tcGxldGVNdWx0aXBhcnRVcGxvYWQiLCJzM0Fib3J0TXVsdGlwYXJ0VXBsb2FkIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUNFQSwyQkFBMkIsRUFHM0JDLDhCQUE4QixFQUc5QkMsNEJBQTRCLEVBTzVCQyxnQkFBZ0IsRUFPaEJDLEVBQUUsRUFDRkMsaUJBQWlCLFFBRVoscUJBQXFCO0FBQzVCLFNBQVFDLFlBQVksUUFBTyxnQ0FBZ0M7QUFFM0QsU0FBUUMsTUFBTSxRQUFPLGVBQWU7QUFDcEMsU0FBUUMsaUJBQWlCLFFBQU8sdUJBQXVCO0FBRXZELE1BQU1DLGNBQWMsSUFDbEJGLE9BQU9HLEdBQUcsQ0FBQyxvQkFBb0JILE9BQU9HLEdBQUcsQ0FBQztBQUU1QyxNQUFNQyxpQkFBaUIsSUFBVSxJQUFJUCxHQUFHO1FBQ3RDUSxhQUFhSjtRQUNiSyxRQUFRTixPQUFPRyxHQUFHLENBQUM7SUFDckI7QUFFQSxPQUFPLE1BQU1JLGNBQWMsSUFBMEJMLGNBQWM7QUFFbkUsOEJBQThCO0FBQzlCLE9BQU8sTUFBTU0sUUFBUSxDQUFDQyxTQUNwQixJQUFJQyxRQUFRLENBQUNDLFNBQVNDO1FBQ3BCLE1BQU1DLEtBQVNUO1FBRWYsSUFBRyxDQUFDSyxPQUFPSyxNQUFNLEVBQUU7WUFDakJMLE9BQU9LLE1BQU0sR0FBR1o7UUFDbEI7UUFFQVcsR0FBR0UsU0FBUyxDQUFDTixRQUFRLENBQUNPLE9BQWNDO1lBQ2xDLElBQUdELE9BQU87Z0JBQ1IsT0FBT0osT0FBT0k7WUFDaEI7WUFFQSxPQUFPTCxRQUFRTTtRQUNqQjtJQUNGLEdBQUc7QUFFTCxPQUFPLE1BQU1DLFNBQVMsQ0FBQ1QsU0FDckIsSUFBSUMsUUFBUSxDQUFDQyxTQUFTQztRQUNwQixNQUFNQyxLQUFTVDtRQUVmLElBQUcsQ0FBQ0ssT0FBT0ssTUFBTSxFQUFFO1lBQ2pCTCxPQUFPSyxNQUFNLEdBQUdaO1FBQ2xCO1FBRUFXLEdBQUdNLFVBQVUsQ0FBQ1YsUUFBUSxDQUFDTyxPQUFjQztZQUNuQyxJQUFHRCxPQUFPO2dCQUNSLE9BQU9KLE9BQU9JO1lBQ2hCO1lBQ0EsT0FBT0wsUUFBUU07UUFDakI7SUFDRixHQUFHO0FBRUwsT0FBTyxNQUFNRyxRQUFRLENBQUNYLFNBQ3BCLElBQUlDLFFBQVEsQ0FBQ0MsU0FBU0M7UUFDcEIsTUFBTUMsS0FBS1Q7UUFFWCxJQUFHLENBQUNLLE9BQU9LLE1BQU0sRUFBRTtZQUNqQkwsT0FBT0ssTUFBTSxHQUFHWjtRQUNsQjtRQUVBLElBQUcsQ0FBQ08sT0FBT1ksWUFBWSxFQUFFO1lBQ3ZCWixPQUFPWSxZQUFZLEdBQUc7UUFDeEI7UUFFQVIsR0FBR1MsU0FBUyxDQUFDYixRQUFRLENBQUNPLE9BQWNDO1lBQ2xDLElBQUdELE9BQU87Z0JBQ1IsT0FBT0osT0FBT0k7WUFDaEI7WUFFQSxPQUFPTCxRQUFRTTtRQUNqQjtJQUNGLEdBQUc7QUFFTCxPQUFPLE1BQU1NLFdBQVcsQ0FBQ2QsU0FDdkIsSUFBSUMsUUFBUSxDQUFDQyxTQUFTQztRQUNwQixNQUFNQyxLQUFTVDtRQUVmLElBQUcsQ0FBQ0ssT0FBT0ssTUFBTSxFQUFFO1lBQ2pCTCxPQUFPSyxNQUFNLEdBQUdaO1FBQ2xCO1FBRUFXLEdBQUdXLFlBQVksQ0FBQ2YsUUFBUSxDQUFDTyxPQUFPQztZQUM5QixJQUFHRCxPQUFPO2dCQUNSLE9BQU9KLE9BQU9JO1lBQ2hCO1lBRUEsT0FBT0wsUUFBUU07UUFDakI7SUFDRixHQUFHO0FBRUwsT0FBTyxNQUFNUSxlQUFlLENBQUNoQixTQUMzQixJQUFJQyxRQUFRLENBQUNDLFNBQVNDO1FBQ3BCLE1BQU1DLEtBQVNUO1FBRWYsSUFBRyxDQUFDSyxPQUFPSyxNQUFNLEVBQUU7WUFDakJMLE9BQU9LLE1BQU0sR0FBR1o7UUFDbEI7UUFFQVcsR0FBR2EsYUFBYSxDQUFDakIsUUFBUSxDQUFDTyxPQUFjQztZQUN0QyxJQUFHRCxPQUFPO2dCQUNSLE9BQU9KLE9BQU9JO1lBQ2hCO1lBRUEsT0FBT0wsUUFBUU07UUFDakI7SUFDRixHQUFHO0FBRUwsT0FBTyxNQUFNVSxpQkFBaUIsT0FBT2xCLFNBQWMsQ0FBQyxDQUFDO0lBQ25ELE1BQU1JLEtBQVNUO0lBRWYsSUFBRyxDQUFDSyxPQUFPbUIsT0FBTyxFQUFFO1FBQ2xCbkIsT0FBT21CLE9BQU8sR0FBRyxLQUFLLEtBQUs7SUFDN0I7SUFFQSxJQUFHLENBQUNuQixPQUFPSyxNQUFNLEVBQUU7UUFDakJMLE9BQU9LLE1BQU0sR0FBR1o7SUFDbEI7SUFFQSxPQUFPLE1BQU1ILGFBQWFjLElBQUksSUFBSWpCLGlCQUFpQmEsU0FBUztRQUMxRG9CLFdBQVdwQixPQUFPbUIsT0FBTztJQUMzQjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1FLDBCQUEwQixPQUNyQ3JCO0lBRUEsTUFBTUksS0FBU1Q7SUFFZixJQUFHLENBQUNLLE9BQU9LLE1BQU0sRUFBRTtRQUNqQkwsT0FBT0ssTUFBTSxHQUFHWjtJQUNsQjtJQUVBLE9BQU8sTUFBTVcsR0FBR2tCLElBQUksQ0FBQyxJQUFJcEMsNkJBQTZCYztBQUN4RCxFQUFFO0FBRUYsT0FBTyxNQUFNdUIsMkJBQTJCLE9BQU92QjtJQUM3QyxNQUFNSSxLQUFTVDtJQUVmLElBQUcsQ0FBQ0ssT0FBT0ssTUFBTSxFQUFFO1FBQ2pCTCxPQUFPSyxNQUFNLEdBQUdaO0lBQ2xCO0lBRUEsTUFBTTJCLFlBQVlwQixPQUFPbUIsT0FBTyxJQUFJLEtBQUs7SUFDekMsT0FBT25CLE9BQU9tQixPQUFPO0lBRXJCLE9BQU8sTUFBTTdCLGFBQWFjLElBQUksSUFBSWYsa0JBQWtCVyxTQUFTO1FBQUNvQjtJQUFTO0FBQ3pFLEVBQUU7QUFFRixPQUFPLE1BQU1JLDRCQUE0QixPQUN2Q3hCO0lBRUEsTUFBTUksS0FBU1Q7SUFFZixJQUFHLENBQUNLLE9BQU9LLE1BQU0sRUFBRTtRQUNqQkwsT0FBT0ssTUFBTSxHQUFHWjtJQUNsQjtJQUVBLE9BQU8sTUFBTVcsR0FBR2tCLElBQUksQ0FBQyxJQUFJckMsK0JBQStCZTtBQUMxRCxFQUFFO0FBRUYsT0FBTyxNQUFNeUIseUJBQXlCLE9BQ3BDekI7SUFFQSxNQUFNSSxLQUFTVDtJQUVmLElBQUcsQ0FBQ0ssT0FBT0ssTUFBTSxFQUFFO1FBQ2pCTCxPQUFPSyxNQUFNLEdBQUdaO0lBQ2xCO0lBRUEsT0FBTyxNQUFNVyxHQUFHa0IsSUFBSSxDQUFDLElBQUl0Qyw0QkFBNEJnQjtBQUN2RCxFQUFFIn0=
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvczMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCB7XG4gIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCxcbiAgQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXQsXG4gIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dCxcbiAgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kLFxuICBDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRJbnB1dCxcbiAgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kLFxuICBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXQsXG4gIENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZU9iamVjdENvbW1hbmRJbnB1dCxcbiAgRGVsZXRlT2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQsXG4gIEdldE9iamVjdENvbW1hbmQsXG4gIEdldE9iamVjdENvbW1hbmRJbnB1dCxcbiAgR2V0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgSGVhZE9iamVjdENvbW1hbmRJbnB1dCxcbiAgSGVhZE9iamVjdENvbW1hbmRPdXRwdXQsXG4gIFB1dE9iamVjdENvbW1hbmRJbnB1dCxcbiAgUHV0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgUzMsXG4gIFVwbG9hZFBhcnRDb21tYW5kLFxuICBVcGxvYWRQYXJ0Q29tbWFuZElucHV0XG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zMyc7XG5pbXBvcnQge2dldFNpZ25lZFVybH0gZnJvbSAnQGF3cy1zZGsvczMtcmVxdWVzdC1wcmVzaWduZXInO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7Z2V0QXdzQ3JlZGVudGlhbHN9IGZyb20gJy4uL3V0aWxzL2F3c1V0aWxzLmpzJztcblxuY29uc3QgZ2V0UzNCdWNrZXQgPSAoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+XG4gIENvbmZpZy5nZXQoJ2F3cy5zMy5CdWNrZXQnKSB8fCBDb25maWcuZ2V0KCdhd3MuczMuYnVja2V0Jyk7XG5cbmNvbnN0IGNyZWF0ZVMzQ2xpZW50ID0gKCk6IFMzID0+IG5ldyBTMyh7XG4gIGNyZWRlbnRpYWxzOiBnZXRBd3NDcmVkZW50aWFscygpLFxuICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxufSk7XG5cbmV4cG9ydCBjb25zdCBzM0dldEJ1Y2tldCA9ICgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4gZ2V0UzNCdWNrZXQoKTtcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdzMyc7XG5leHBvcnQgY29uc3QgczNHZXQgPSAocGFyYW1zOiBHZXRPYmplY3RDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldE9iamVjdENvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBnZXRTM0J1Y2tldCgpO1xuICAgIH1cblxuICAgIHMzLmdldE9iamVjdChwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dD86IEdldE9iamVjdENvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQgYXMgR2V0T2JqZWN0Q29tbWFuZE91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgczNIZWFkID0gKHBhcmFtczogSGVhZE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8SGVhZE9iamVjdENvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBnZXRTM0J1Y2tldCgpO1xuICAgIH1cblxuICAgIHMzLmhlYWRPYmplY3QocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ/OiBIZWFkT2JqZWN0Q29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQgYXMgSGVhZE9iamVjdENvbW1hbmRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzUHV0ID0gKHBhcmFtczogUHV0T2JqZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxQdXRPYmplY3RDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgczMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBnZXRTM0J1Y2tldCgpO1xuICAgIH1cblxuICAgIGlmKCFwYXJhbXMuU3RvcmFnZUNsYXNzKSB7XG4gICAgICBwYXJhbXMuU3RvcmFnZUNsYXNzID0gJ1JFRFVDRURfUkVEVU5EQU5DWSc7XG4gICAgfVxuXG4gICAgczMucHV0T2JqZWN0KHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0PzogUHV0T2JqZWN0Q29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCBhcyBQdXRPYmplY3RDb21tYW5kT3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzM0RlbGV0ZSA9IChwYXJhbXM6IERlbGV0ZU9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlT2JqZWN0Q29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHMzOiBTMyA9IGNyZWF0ZVMzQ2xpZW50KCk7XG5cbiAgICBpZighcGFyYW1zLkJ1Y2tldCkge1xuICAgICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gICAgfVxuXG4gICAgczMuZGVsZXRlT2JqZWN0KHBhcmFtcywgKGVycm9yLCBvdXRwdXQ/OiBEZWxldGVPYmplY3RDb21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0IGFzIERlbGV0ZU9iamVjdENvbW1hbmRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzRGVsZXRlTGlzdCA9IChwYXJhbXM6IERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgczM6IFMzID0gY3JlYXRlUzNDbGllbnQoKTtcblxuICAgIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgICB9XG5cbiAgICBzMy5kZWxldGVPYmplY3RzKHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0PzogRGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQgYXMgRGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzR2V0U2lnbmVkVXJsID0gYXN5bmMgKHBhcmFtczogYW55ID0ge30pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gIGlmKCFwYXJhbXMuRXhwaXJlcykge1xuICAgIHBhcmFtcy5FeHBpcmVzID0gMTIgKiA2MCAqIDYwO1xuICB9XG5cbiAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBnZXRTaWduZWRVcmwoczMsIG5ldyBHZXRPYmplY3RDb21tYW5kKHBhcmFtcyksIHtcbiAgICBleHBpcmVzSW46IHBhcmFtcy5FeHBpcmVzXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHMzQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRJbnB1dFxuKTogUHJvbWlzZTxDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0PiA9PiB7XG4gIGNvbnN0IHMzOiBTMyA9IGNyZWF0ZVMzQ2xpZW50KCk7XG5cbiAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBzMy5zZW5kKG5ldyBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kKHBhcmFtcykpO1xufTtcblxuZXhwb3J0IGNvbnN0IHMzR2V0VXBsb2FkUGFydFNpZ25lZFVybCA9IGFzeW5jIChwYXJhbXM6IFVwbG9hZFBhcnRDb21tYW5kSW5wdXQgJiB7RXhwaXJlcz86IG51bWJlcn0pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gIH1cblxuICBjb25zdCBleHBpcmVzSW4gPSBwYXJhbXMuRXhwaXJlcyB8fCA2MCAqIDYwO1xuICBkZWxldGUgcGFyYW1zLkV4cGlyZXM7XG5cbiAgcmV0dXJuIGF3YWl0IGdldFNpZ25lZFVybChzMywgbmV3IFVwbG9hZFBhcnRDb21tYW5kKHBhcmFtcyksIHtleHBpcmVzSW59KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzM0NvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkID0gYXN5bmMgKFxuICBwYXJhbXM6IENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0XG4pOiBQcm9taXNlPENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dD4gPT4ge1xuICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgczMuc2VuZChuZXcgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kKHBhcmFtcykpO1xufTtcblxuZXhwb3J0IGNvbnN0IHMzQWJvcnRNdWx0aXBhcnRVcGxvYWQgPSBhc3luYyAoXG4gIHBhcmFtczogQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXRcbik6IFByb21pc2U8QWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0PiA9PiB7XG4gIGNvbnN0IHMzOiBTMyA9IGNyZWF0ZVMzQ2xpZW50KCk7XG5cbiAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBzMy5zZW5kKG5ldyBBYm9ydE11bHRpcGFydFVwbG9hZENvbW1hbmQocGFyYW1zKSk7XG59O1xuIl0sIm5hbWVzIjpbIkFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCIsIkNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCIsIkNyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmQiLCJHZXRPYmplY3RDb21tYW5kIiwiUzMiLCJVcGxvYWRQYXJ0Q29tbWFuZCIsImdldFNpZ25lZFVybCIsIkNvbmZpZyIsImdldEF3c0NyZWRlbnRpYWxzIiwiZ2V0UzNCdWNrZXQiLCJnZXQiLCJjcmVhdGVTM0NsaWVudCIsImNyZWRlbnRpYWxzIiwicmVnaW9uIiwiczNHZXRCdWNrZXQiLCJzM0dldCIsInBhcmFtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiczMiLCJCdWNrZXQiLCJnZXRPYmplY3QiLCJlcnJvciIsIm91dHB1dCIsInMzSGVhZCIsImhlYWRPYmplY3QiLCJzM1B1dCIsIlN0b3JhZ2VDbGFzcyIsInB1dE9iamVjdCIsInMzRGVsZXRlIiwiZGVsZXRlT2JqZWN0IiwiczNEZWxldGVMaXN0IiwiZGVsZXRlT2JqZWN0cyIsInMzR2V0U2lnbmVkVXJsIiwiRXhwaXJlcyIsImV4cGlyZXNJbiIsInMzQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkIiwic2VuZCIsInMzR2V0VXBsb2FkUGFydFNpZ25lZFVybCIsInMzQ29tcGxldGVNdWx0aXBhcnRVcGxvYWQiLCJzM0Fib3J0TXVsdGlwYXJ0VXBsb2FkIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FD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
|