@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/images.js
CHANGED
|
@@ -870,4 +870,4 @@ export const deleteImage = async (context, imageId)=>{
|
|
|
870
870
|
}
|
|
871
871
|
};
|
|
872
872
|
|
|
873
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC9ubGFicy1yZWFrdG9yLXJlbGVhc2UuZU1RNVNoL2NoZWNrb3V0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvaW1hZ2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge0RlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQsIFB1dE9iamVjdENvbW1hbmRJbnB1dH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7Z2V0IGFzIGh0dHBHZXR9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcbmltcG9ydCB7cGFyc2VOdW19IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL251bWJlcnMnO1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUFyYW5nb0lkLCBwYXJzZUNoYXIsIHBhcnNlSWQsIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5LCBsaXRlcmFsfSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuaW1wb3J0IGV4aWZSZWFkZXIgZnJvbSAnZXhpZi1yZWFkZXInO1xuaW1wb3J0IHNoYXJwIGZyb20gJ3NoYXJwJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge0NPTExFQ1RJT05TLCBFREdFU30gZnJvbSAnLi4vY29uc3RhbnRzL2NvbGxlY3Rpb25zLmpzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvciwgbG9nRXhjZXB0aW9ufSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge2dldERvY0lkLCBnZXRMaW1pdCwgc2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZSwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuaW1wb3J0IHtnZXRJbWFnZUV4dGVuc2lvbn0gZnJvbSAnLi4vdXRpbHMvaW1hZ2VVdGlscy5qcyc7XG5pbXBvcnQge2FkZEl0ZW0sIGRlbGV0ZUl0ZW0sIGdldEl0ZW1CeSwgZ2V0TGlzdEJ5LCB1cGRhdGVJdGVtfSBmcm9tICcuL2NydWQuanMnO1xuaW1wb3J0IHtnZXRHcm91cERldGFpbHMsIGlzR3JvdXBlZH0gZnJvbSAnLi9ncm91cHMuanMnO1xuaW1wb3J0IHtnZXRQZXJzb25hUmVsYXRpb25zaGlwU3RhdGV9IGZyb20gJy4vcGVyc29uYXMuanMnO1xuaW1wb3J0IHtzM0RlbGV0ZUxpc3QsIHMzR2V0U2lnbmVkVXJsLCBzM1B1dH0gZnJvbSAnLi9zMy5qcyc7XG5pbXBvcnQge2hhc1N1YnNjcmlwdGlvblRvSXRlbX0gZnJvbSAnLi9zdWJzY3JpcHRpb25zLmpzJztcblxuaW1wb3J0IHR5cGUge1F1ZXJ5RmlsdGVyfSBmcm9tICcuLi90eXBlcy9hcHBzLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtBcmFuZ29EYkNvbGxlY3Rpb24sIEFyYW5nb0RiTGltaXR9IGZyb20gJy4uL3R5cGVzL2FyYW5nb2RiLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtHcm91cFR5cGUsIEdyb3VwVXNlcn0gZnJvbSAnLi4vdHlwZXMvZ3JvdXBzLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtJbWFnZUVkZ2VUeXBlLCBJbWFnZU9wdGlvbnMsIEltYWdlVHlwZSwgSW1hZ2VVcmxEYXRhfSBmcm9tICcuLi90eXBlcy9pbWFnZXMudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0ZpbHRlckdyb3VwfSBmcm9tICcuLi91dGlscy9hcWxIZWxwZXJzLmpzJztcblxuLy8gRGVmaW5lIGludGVyZmFjZSBmb3IgSFRUUCByZXNwb25zZSB3aXRoIGJ1ZmZlciBtZXRob2RcbmludGVyZmFjZSBIdHRwUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG4gIGJ1ZmZlcigpOiBQcm9taXNlPEJ1ZmZlcj47XG59XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAnaW1hZ2VzJztcbmNvbnN0IGhhc1JlYWN0aW9uQ29sbGVjdGlvbiA9IGxpdGVyYWwoRURHRVMuSEFTX1JFQUNUSU9OKTtcbmNvbnN0IGhhc01lZGlhQ29sbGVjdGlvbiA9IGxpdGVyYWwoRURHRVMuSEFTX01FRElBKTtcbmNvbnN0IHBlcnNvbmFzQ29sbGVjdGlvbiA9IGxpdGVyYWwoQ09MTEVDVElPTlMuUEVSU09OQVMpO1xuY29uc3QgTUVESUFfSVRFTV9DT0xMRUNUSU9OUzogcmVhZG9ubHkgQXJhbmdvRGJDb2xsZWN0aW9uW10gPSBbXG4gIENPTExFQ1RJT05TLlBFUlNPTkFTLFxuICBDT0xMRUNUSU9OUy5VU0VSUyxcbiAgQ09MTEVDVElPTlMuUE9TVFMsXG4gIENPTExFQ1RJT05TLkdST1VQU1xuXTtcblxudHlwZSBTaGFycEZvcm1hdCA9IEV4dHJhY3Q8UGFyYW1ldGVyczxSZXR1cm5UeXBlPHR5cGVvZiBzaGFycD5bJ3RvRm9ybWF0J10+WzBdLCBzdHJpbmc+O1xuXG5jb25zdCBnZXRNZWRpYUl0ZW1Eb2NJZHMgPSAoaXRlbUlkOiBzdHJpbmcsIGl0ZW1UeXBlPzogQXJhbmdvRGJDb2xsZWN0aW9uKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBkb2NJZCA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcblxuICBpZihkb2NJZCkge1xuICAgIHJldHVybiBbZG9jSWRdO1xuICB9XG5cbiAgY29uc3QgaXRlbUtleSA9IHBhcnNlSWQoaXRlbUlkKTtcblxuICBpZighaXRlbUtleSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmKGl0ZW1UeXBlICYmIE1FRElBX0lURU1fQ09MTEVDVElPTlMuaW5jbHVkZXMoaXRlbVR5cGUpKSB7XG4gICAgcmV0dXJuIFtgJHtpdGVtVHlwZX0vJHtpdGVtS2V5fWBdO1xuICB9XG5cbiAgcmV0dXJuIE1FRElBX0lURU1fQ09MTEVDVElPTlMubWFwKChjb2xsZWN0aW9uKSA9PiBgJHtjb2xsZWN0aW9ufS8ke2l0ZW1LZXl9YCk7XG59O1xuXG5jb25zdCBub3JtYWxpemVJbWFnZUZvcm1hdCA9IChmb3JtYXQ6IHN0cmluZyk6IFNoYXJwRm9ybWF0ID0+XG4gIChmb3JtYXQgPT09ICdqcGcnID8gJ2pwZWcnIDogZm9ybWF0KSBhcyBTaGFycEZvcm1hdDtcblxuY29uc3QgaW1hZ2VFeGlmTWV0YWRhdGEgPSAoZXhpZj86IEJ1ZmZlcikgPT4ge1xuICBpZighZXhpZikgcmV0dXJuIHt9O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBleGlmUmVhZGVyKGV4aWYpO1xuICAgIGNvbnN0IHRha2VuID0gbWV0YWRhdGEuUGhvdG8/LkRhdGVUaW1lT3JpZ2luYWw7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1ha2U6IG1ldGFkYXRhLkltYWdlPy5NYWtlLFxuICAgICAgbW9kZWw6IG1ldGFkYXRhLkltYWdlPy5Nb2RlbCxcbiAgICAgIHRha2VuOiB0YWtlbiBpbnN0YW5jZW9mIERhdGUgPyB0YWtlbi5nZXRUaW1lKCkgOiB1bmRlZmluZWRcbiAgICB9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IG5vcm1hbGl6ZUltYWdlUHJpdmFjeSA9IChwcml2YWN5OiB1bmtub3duKTogJ2ZyaWVuZHMnIHwgJ3ByaXZhdGUnIHwgJ3B1YmxpYycgfCAndmlwJyA9PiB7XG4gIHN3aXRjaChTdHJpbmcocHJpdmFjeSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdmcmllbmRzJzpcbiAgICAgIHJldHVybiAnZnJpZW5kcyc7XG4gICAgY2FzZSAncHJpdmF0ZSc6XG4gICAgICByZXR1cm4gJ3ByaXZhdGUnO1xuICAgIGNhc2UgJ3ZpcCc6XG4gICAgICByZXR1cm4gJ3ZpcCc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAncHVibGljJztcbiAgfVxufTtcblxuY29uc3QgY2FuVmlld0ltYWdlID0gKFxuICBpbWFnZTogSW1hZ2VUeXBlLFxuICB2aWV3ZXJVc2VySWQ6IHN0cmluZyxcbiAgYWNjZXNzOiB7XG4gICAgcmVhZG9ubHkgY2FuVmlld0ZyaWVuZHM6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgY2FuVmlld1ZpcDogYm9vbGVhbjtcbiAgICByZWFkb25seSBpc093bmVyOiBib29sZWFuO1xuICB9XG4pID0+IHtcbiAgY29uc3QgcHJpdmFjeSA9IG5vcm1hbGl6ZUltYWdlUHJpdmFjeShpbWFnZT8ucHJpdmFjeSk7XG5cbiAgaWYoYWNjZXNzLmlzT3duZXIgfHwgU3RyaW5nKGltYWdlPy51c2VySWQgfHwgJycpID09PSB2aWV3ZXJVc2VySWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHN3aXRjaChwcml2YWN5KSB7XG4gICAgY2FzZSAncHJpdmF0ZSc6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSAnZnJpZW5kcyc6XG4gICAgICByZXR1cm4gYWNjZXNzLmNhblZpZXdGcmllbmRzO1xuICAgIGNhc2UgJ3ZpcCc6XG4gICAgICByZXR1cm4gYWNjZXNzLmNhblZpZXdWaXA7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VJbWFnZU9wdGlvbnMgPSAob3B0aW9uczogSW1hZ2VPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGZyb20gPSAwLFxuICAgIHRvID0gMzAsXG4gICAgdHlwZSA9ICdkZWZhdWx0J1xuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4ge1xuICAgIGxpbWl0OiBnZXRMaW1pdChmcm9tLCB0bykgYXMgQXJhbmdvRGJMaW1pdCxcbiAgICB0eXBlOiBwYXJzZUNoYXIodHlwZSwgMzIpXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW1hZ2VPcHRpb25hbEZpZWxkcyA9IChmaWVsZHM6IHN0cmluZ1tdID0gW10pID0+XG4gIGZpZWxkcy5yZWR1Y2UoKHNlbGVjdHMsIGZpZWxkOiBzdHJpbmcpID0+IHtcbiAgICBpZihmaWVsZC5pbmNsdWRlcygnQ291bnQnKSkge1xuICAgICAgcmV0dXJuIHNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGUoJ2ltYWdlcycsICdpJywgZmllbGQsIHNlbGVjdHMpO1xuICAgIH1cblxuICAgIHN3aXRjaChmaWVsZCkge1xuICAgICAgY2FzZSAncmVhY3Rpb25zJzoge1xuICAgICAgICBzZWxlY3RzLnF1ZXJpZXMucHVzaChgTEVUIHJlYWN0aW9ucyA9IChcbiAgICAgICAgICBGT1IgaW1hZ2UsIHIgSU4gSU5CT1VORCBpLl9pZCByZWFjdGlvbnNcbiAgICAgICAgICBDT0xMRUNUIHJlYWN0aW9uTmFtZSA9IHIudmFsdWUgSU5UTyByZWFjdGlvbkl0ZW1zXG4gICAgICAgICAgUkVUVVJOIHtuYW1lOiByZWFjdGlvbk5hbWUsIGNvdW50OiBMRU5HVEgocmVhY3Rpb25JdGVtc1sqXS5yLnZhbHVlKX1cbiAgICAgICAgKWApO1xuICAgICAgICBzZWxlY3RzLm9iamVjdHMucHVzaCgncmVhY3Rpb25zOnJlYWN0aW9ucycpO1xuICAgICAgICByZXR1cm4gc2VsZWN0cztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RhZ3MnOiB7XG4gICAgICAgIHNlbGVjdHMucXVlcmllcy5wdXNoKGBMRVQgdGFncyA9IChcbiAgICAgICAgICBGT1IgdCwgcGwgSU4gSU5CT1VORCBpLl9pZCBpc1RhZ2dlZFxuICAgICAgICAgIFJFVFVSTiB0XG4gICAgICAgIClgKTtcbiAgICAgICAgc2VsZWN0cy5vYmplY3RzLnB1c2goJ3RhZ3M6dGFncycpO1xuICAgICAgICByZXR1cm4gc2VsZWN0cztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3VzZXJzJzoge1xuICAgICAgICBzZWxlY3RzLnF1ZXJpZXMucHVzaChgTEVUIHVzZXJzID0gRklSU1QoXG4gICAgICAgICAgRk9SIHUgSU4gdXNlcnNcbiAgICAgICAgICBGSUxURVIgaS51c2VySWQgPT0gdS5fa2V5XG4gICAgICAgICAgTElNSVQgMVxuICAgICAgICAgIFJFVFVSTiB1XG4gICAgICAgIClgKTtcbiAgICAgICAgc2VsZWN0cy5vYmplY3RzLnB1c2goJ3VzZXJzOnVzZXJzJyk7XG4gICAgICAgIHJldHVybiBzZWxlY3RzO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gc2VsZWN0cztcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtvYmplY3RzOiBbXSwgcXVlcmllczogW119KTtcblxuZXhwb3J0IGNvbnN0IGdldEltYWdlTGlzdEJ5VXNlciA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgdXNlcklkOiBzdHJpbmcsXG4gIGZyb206IG51bWJlciA9IDAsXG4gIHRvOiBudW1iZXIgPSAzMFxuKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0SW1hZ2VzQnlVc2VyJztcbiAgY29uc3QgZm9ybWF0VXNlcklkID0gcGFyc2VJZCh1c2VySWQpO1xuXG4gIHJldHVybiBnZXRMaXN0Qnk8SW1hZ2VUeXBlPihjb250ZXh0LCAnaW1hZ2VzJywge3VzZXJJZDogZm9ybWF0VXNlcklkfSwge1xuICAgIHNvcnQ6IFt7ZmllbGQ6ICdhZGRlZCcsIGRpcmVjdGlvbjogJ0RFU0MnfV0sXG4gICAgbGltaXQ6IHtmcm9tLCB0b30sXG4gICAgY3VzdG9tUXVlcmllczogW1xuICAgICAgYExFVCB1c2VyID0gRklSU1QoRk9SIHUgSU4gdXNlcnMgRklMVEVSIHUuX2tleSA9PSBkb2MudXNlcklkIExJTUlUIDEgUkVUVVJOIHUpYFxuICAgIF0sXG4gICAgY3VzdG9tT2JqZWN0czogWyd1c2VyOnVzZXInXVxuICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHBhcmFtczoge2Zyb20sIHRvLCB1c2VySWR9LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gW107XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW1hZ2VDb3VudEJ5SXRlbSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtSWQ6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRJbWFnZUNvdW50QnlJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBpdGVtRG9jSWRzID0gZ2V0TWVkaWFJdGVtRG9jSWRzKGl0ZW1JZCk7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgTEVUIG1lZGlhID0gKFxuICAgICAgRk9SIGkgSU4gJHtoYXNNZWRpYUNvbGxlY3Rpb259XG4gICAgICAgIEZJTFRFUiBpLl9mcm9tIElOICR7aXRlbURvY0lkc31cbiAgICAgICAgRklMVEVSIGkudHlwZSA9PSBcImltYWdlXCJcbiAgICAgICAgUkVUVVJOIDFcbiAgICApXG4gICAgUkVUVVJOIHtjb3VudDogTEVOR1RIKG1lZGlhKX1cbiAgYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoe2NvdW50fSkgPT4gY291bnQpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7aXRlbUlkfSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJbWFnZUxpc3RCeUl0ZW0gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICBvcHRpb25zOiBJbWFnZU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0SW1hZ2VzQnlJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgZmllbGRzID0gW10sIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25Vc2VySWQgPSAnJ30gPSB7fX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJdGVtVHlwZSA9IG9wdGlvbnM/Lml0ZW1UeXBlID8gcGFyc2VDaGFyKFN0cmluZyhvcHRpb25zLml0ZW1UeXBlIHx8ICcnKSwgMzIpLnRvTG93ZXJDYXNlKCkgYXMgQXJhbmdvRGJDb2xsZWN0aW9uIDogdW5kZWZpbmVkO1xuICBjb25zdCBpdGVtRG9jSWRzID0gZ2V0TWVkaWFJdGVtRG9jSWRzKGl0ZW1JZCwgZm9ybWF0SXRlbVR5cGUpO1xuICBjb25zdCB7bGltaXR9ID0gcGFyc2VJbWFnZU9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldEltYWdlT3B0aW9uYWxGaWVsZHMoZmllbGRzKTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBGT1IgbCBJTiAke2hhc01lZGlhQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiBsLl9mcm9tIElOICR7aXRlbURvY0lkc31cbiAgICAgIEZJTFRFUiBsLnR5cGUgPT0gXCJpbWFnZVwiXG4gICAgICBMRVQgaSA9IERPQ1VNRU5UKGwuX3RvKVxuICAgICAgRklMVEVSIE5PVCBJU19OVUxMKGkpXG4gICAgICBMRVQgb3duZXJQZXJzb25hID0gbC5pdGVtVHlwZSA9PSBcInBlcnNvbmFzXCIgPyBET0NVTUVOVCgke2xpdGVyYWwoQ09MTEVDVElPTlMuUEVSU09OQVMpfSwgUEFSU0VfSURFTlRJRklFUihsLl9mcm9tKS5rZXkpIDogbnVsbFxuICAgICAgJHtsaXRlcmFsKHNlbGVjdFF1ZXJpZXMuam9pbignXFxuJykpfVxuICAgICAgU09SVCBpLmFkZGVkIERFU0NcbiAgICAgICR7bGl0ZXJhbChsaW1pdC5hcWwpfVxuICAgICAgUkVUVVJOIE1FUkdFKFxuICAgICAgICAke3NlbGVjdE9iamVjdHMubGVuZ3RoID4gMCA/IGxpdGVyYWwoYE1FUkdFKGksIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWApIDogbGl0ZXJhbCgnaScpfSxcbiAgICAgICAge1xuICAgICAgICAgIF9tZWRpYUl0ZW1LZXk6IFBBUlNFX0lERU5USUZJRVIobC5fZnJvbSkua2V5LFxuICAgICAgICAgIF9tZWRpYUl0ZW1UeXBlOiBsLml0ZW1UeXBlIHx8IFBBUlNFX0lERU5USUZJRVIobC5fZnJvbSkuY29sbGVjdGlvbixcbiAgICAgICAgICBvd25lclBlcnNvbmFJZDogb3duZXJQZXJzb25hID8gb3duZXJQZXJzb25hLl9rZXkgOiBudWxsLFxuICAgICAgICAgIG93bmVyUGVyc29uYUltYWdlSWQ6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS5pbWFnZUlkIDogbnVsbCxcbiAgICAgICAgICBvd25lclBlcnNvbmFJbWFnZVVybDogb3duZXJQZXJzb25hID8gb3duZXJQZXJzb25hLmltYWdlVXJsIDogbnVsbCxcbiAgICAgICAgICBvd25lclBlcnNvbmFOYW1lOiBvd25lclBlcnNvbmEgPyBvd25lclBlcnNvbmEubmFtZSA6IG51bGwsXG4gICAgICAgICAgb3duZXJQZXJzb25hVGh1bWJVcmw6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS50aHVtYlVybCA6IG51bGwsXG4gICAgICAgICAgb3duZXJQZXJzb25hVXNlcklkOiBvd25lclBlcnNvbmEgPyBvd25lclBlcnNvbmEudXNlcklkIDogbnVsbFxuICAgICAgICB9XG4gICAgICApXG4gIGA7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBsaXN0ID0gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBJbWFnZVR5cGVbXSk7XG5cbiAgICBjb25zdCBvd25lclVzZXJJZCA9IFN0cmluZyhsaXN0WzBdPy51c2VySWQgfHwgJycpO1xuICAgIGNvbnN0IGlzT3duZXIgPSAhIXNlc3Npb25Vc2VySWQgJiYgISFvd25lclVzZXJJZCAmJiBzZXNzaW9uVXNlcklkID09PSBvd25lclVzZXJJZDtcblxuICAgIGlmKGlzT3duZXIpIHtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIGlmKCFzZXNzaW9uVXNlcklkKSB7XG4gICAgICByZXR1cm4gbGlzdC5maWx0ZXIoKGltYWdlKSA9PiBub3JtYWxpemVJbWFnZVByaXZhY3koaW1hZ2U/LnByaXZhY3kpID09PSAncHVibGljJyk7XG4gICAgfVxuXG4gICAgbGV0IGNhblZpZXdGcmllbmRzID0gZmFsc2U7XG4gICAgbGV0IGNhblZpZXdWaXAgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1lZGlhSXRlbUtleSA9IFN0cmluZygobGlzdFswXSBhcyBJbWFnZVR5cGUgJiB7X21lZGlhSXRlbUtleT86IHN0cmluZ30pPy5fbWVkaWFJdGVtS2V5IHx8ICcnKTtcbiAgICBjb25zdCBtZWRpYUl0ZW1UeXBlID0gU3RyaW5nKChsaXN0WzBdIGFzIEltYWdlVHlwZSAmIHtfbWVkaWFJdGVtVHlwZT86IHN0cmluZ30pPy5fbWVkaWFJdGVtVHlwZSB8fCAnJyk7XG5cbiAgICBpZihtZWRpYUl0ZW1UeXBlID09PSBDT0xMRUNUSU9OUy5QRVJTT05BUyAmJiBtZWRpYUl0ZW1LZXkpIHtcbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcCA9IGF3YWl0IGdldFBlcnNvbmFSZWxhdGlvbnNoaXBTdGF0ZShjb250ZXh0LCBtZWRpYUl0ZW1LZXkpO1xuICAgICAgY2FuVmlld0ZyaWVuZHMgPSAhIXJlbGF0aW9uc2hpcD8uaXNGcmllbmQ7XG4gICAgICBjYW5WaWV3VmlwID0gYXdhaXQgaGFzU3Vic2NyaXB0aW9uVG9JdGVtKGNvbnRleHQsIG1lZGlhSXRlbUtleSwgQ09MTEVDVElPTlMuUEVSU09OQVMpO1xuICAgIH1cblxuICAgIHJldHVybiBsaXN0LmZpbHRlcigoaW1hZ2UpID0+IGNhblZpZXdJbWFnZShpbWFnZSwgc2Vzc2lvblVzZXJJZCwge2NhblZpZXdGcmllbmRzLCBjYW5WaWV3VmlwLCBpc093bmVyfSkpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHBhcmFtczoge2l0ZW1JZCwgb3B0aW9uczogey4uLm9wdGlvbnMsIGl0ZW1UeXBlOiBmb3JtYXRJdGVtVHlwZX19LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIFtdO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW1hZ2VMaXN0QnlHcm91cCA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgcGFyYW1zOiB7ZmlsdGVyczogUXVlcnlGaWx0ZXJbXSwgZ3JvdXBJZDogc3RyaW5nLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXJ9XG4pOiBQcm9taXNlPEltYWdlVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRJbWFnZXNCeUdyb3VwJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7ZmlsdGVycywgZ3JvdXBJZCwgZnJvbSwgdG99ID0gcGFyYW1zO1xuICBjb25zdCBmb3JtYXRHcm91cElkID0gcGFyc2VJZChncm91cElkKTtcbiAgY29uc3QgbGltaXQ6IEFyYW5nb0RiTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG5cbiAgZmlsdGVyc1xuICAgIC5tYXAoKGZpbHRlcjogUXVlcnlGaWx0ZXIpID0+IHtcbiAgICAgIGNvbnN0IHtjb25kaXRpb25hbCwgbmFtZSwgdmFsdWV9ID0gZmlsdGVyO1xuICAgICAgbGV0IGZvcm1hdENvbmQgPSBjb25kaXRpb25hbDtcblxuICAgICAgaWYoY29uZGl0aW9uYWwgIT09ICc+PScgJiYgY29uZGl0aW9uYWwgIT09ICc8PScgJiYgY29uZGl0aW9uYWwgIT09ICc+JyAmJiBjb25kaXRpb25hbCAhPT0gJzwnKSB7XG4gICAgICAgIGZvcm1hdENvbmQgPSAnPT0nO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2gobmFtZSkge1xuICAgICAgICBjYXNlICdhZGRlZCc6XG4gICAgICAgICAgcmV0dXJuIGBwLmFkZGVkICR7Zm9ybWF0Q29uZH0gJHtwYXJzZU51bSh2YWx1ZSl9YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgcmV0dXJuIGdldEdyb3VwRGV0YWlscyhjb250ZXh0LCBmb3JtYXRHcm91cElkKVxuICAgIC50aGVuKChncm91cDogR3JvdXBUeXBlKSA9PiB7XG4gICAgICBpZihncm91cC5wcml2YWN5ID09PSAncHVibGljJykge1xuICAgICAgICBmaWx0ZXJzLnB1c2goe2NvbmRpdGlvbmFsOiAnPT0nLCBuYW1lOiAnZ3JvdXBJZCcsIHZhbHVlOiBmb3JtYXRHcm91cElkfSk7XG4gICAgICAgIGNvbnN0IGZpbHRlclN0ciA9IGZpbHRlcnMuam9pbignICYmICcpO1xuICAgICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgICAgICAgIEZPUiBpIElOIEZMQVRURU4oXG4gICAgICAgICAgICBGT1IgcCBJTiBwb3N0c1xuICAgICAgICAgICAgICBGSUxURVIgJHtsaXRlcmFsKGZpbHRlclN0cil9XG4gICAgICAgICAgICAgIExFVCBpbWFnZXMgPSAoXG4gICAgICAgICAgICAgICAgRk9SIGksIGUgSU4gT1VUQk9VTkQgcC5faWQgJHtoYXNNZWRpYUNvbGxlY3Rpb259XG4gICAgICAgICAgICAgICAgICBGSUxURVIgZS50eXBlID09IFwiaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgUkVUVVJOIGlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBTT1JUIHAuYWRkZWQgREVTQ1xuICAgICAgICAgICAgICBSRVRVUk4gaW1hZ2VzXG4gICAgICAgICAgKVxuICAgICAgICAgICAgU09SVCBpLmFkZGVkIERFU0NcbiAgICAgICAgICAgICR7bGl0ZXJhbChsaW1pdC5hcWwpfVxuICAgICAgICAgICAgUkVUVVJOIGlcbiAgICAgICAgYDtcblxuICAgICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpIGFzIHVua25vd24gYXMgSW1hZ2VUeXBlW10pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgICAgICAgcGFyYW1zOiB7ZmlsdGVycywgZnJvbSwgZ3JvdXBJZCwgdG99LFxuICAgICAgICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzR3JvdXBlZChjb250ZXh0LCBzZXNzaW9uSWQsIGdyb3VwSWQpXG4gICAgICAgIC50aGVuKChncm91cGVkOiBHcm91cFVzZXIpID0+IHtcbiAgICAgICAgICBpZihncm91cGVkLmlzVmFsaWQpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7Y29uZGl0aW9uYWw6ICc9PScsIG5hbWU6ICdncm91cElkJywgdmFsdWU6IGdyb3VwZWQuZ3JvdXBJZH0pO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyTGlzdCA9IGZpbHRlcnMuam9pbignICYmICcpO1xuICAgICAgICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICAgICAgICAgICAgRk9SIHAgSU4gcG9zdFxuICAgICAgICAgICAgICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyTGlzdCl9XG4gICAgICAgICAgICAgICAgRk9SIGYgSU4gcC5maWxlc1xuICAgICAgICAgICAgICAgICAgRklMVEVSIGYudHlwZSA9PSBcImltYWdlL2pwZWdcIiB8fCBmLnR5cGUgPT0gXCJpbWFnZS9wbmdcIlxuICAgICAgICAgICAgICAgICAgJHtsaXRlcmFsKGxpbWl0LmFxbCl9XG4gICAgICAgICAgICAgICAgICBTT1JUIHAuYWRkZWQgREVTQ1xuICAgICAgICAgICAgICAgICAgUkVUVVJOIGZcbiAgICAgICAgICAgIGA7XG5cbiAgICAgICAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpIGFzIHVua25vd24gYXMgSW1hZ2VUeXBlW10pXG4gICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICBwYXJhbXM6IHtmaWx0ZXJzLCBmcm9tLCBncm91cElkLCB0b30sXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgICAgICAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEltYWdlTGlzdEJ5UmVhY3Rpb25zID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICByZWFjdGlvbnM6IHN0cmluZ1tdID0gW10sXG4gIG9wdGlvbnM/OiBJbWFnZU9wdGlvbnNcbik6IFByb21pc2U8SW1hZ2VUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldEltYWdlTGlzdEJ5UmVhY3Rpb25zJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgZmllbGRzID0gW10sIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge2xpbWl0fSA9IHBhcnNlSW1hZ2VPcHRpb25zKG9wdGlvbnMpO1xuICBjb25zdCB7b2JqZWN0czogc2VsZWN0T2JqZWN0cywgcXVlcmllczogc2VsZWN0UXVlcmllc30gPSBnZXRJbWFnZU9wdGlvbmFsRmllbGRzKGZpZWxkcyk7XG4gIGNvbnN0IGZvcm1hdFNlc3Npb25JZCA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbnM6IHN0cmluZ1tdID0gcmVhY3Rpb25zLm1hcCgocmVhY3Rpb25OYW1lKSA9PiBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMikpO1xuICBjb25zdCBmaWx0ZXJCeTogc3RyaW5nW10gPSBbXG4gICAgJ3IudHlwZSA9PSBcImltYWdlc1wiJyxcbiAgICBgUE9TSVRJT04oJHtKU09OLnN0cmluZ2lmeShmb3JtYXRSZWFjdGlvbnMpfSwgTE9XRVIoci5uYW1lKSlgXTtcblxuICAvLyBHZXQgZGF0YSBmcm9tIGRhdGFiYXNlXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgRk9SIGksIHIgSU4gT1VUQk9VTkQgJHtmb3JtYXRTZXNzaW9uSWR9IGhhc1JlYWN0aW9uXG4gICAgICBPUFRJT05TIHt2ZXJ0ZXhDb2xsZWN0aW9uczogXCJpbWFnZXNcIn1cbiAgICAgIExFVCBtZWRpYSA9IEZJUlNUKFxuICAgICAgICBGT1Igb3duZXIsIGwgSU4gSU5CT1VORCBpLl9pZCAke2hhc01lZGlhQ29sbGVjdGlvbn1cbiAgICAgICAgICBGSUxURVIgbC50eXBlID09IFwiaW1hZ2VcIlxuICAgICAgICAgIExJTUlUIDFcbiAgICAgICAgICBSRVRVUk4ge1xuICAgICAgICAgICAgaXRlbUtleTogUEFSU0VfSURFTlRJRklFUihsLl9mcm9tKS5rZXksXG4gICAgICAgICAgICBpdGVtVHlwZTogbC5pdGVtVHlwZSB8fCBQQVJTRV9JREVOVElGSUVSKGwuX2Zyb20pLmNvbGxlY3Rpb25cbiAgICAgICAgICB9XG4gICAgICApXG4gICAgICBMRVQgb3duZXJQZXJzb25hID0gbWVkaWEgJiYgbWVkaWEuaXRlbVR5cGUgPT0gXCJwZXJzb25hc1wiID8gRE9DVU1FTlQoJHtsaXRlcmFsKENPTExFQ1RJT05TLlBFUlNPTkFTKX0sIG1lZGlhLml0ZW1LZXkpIDogbnVsbFxuICAgICAgJHtsaXRlcmFsKHNlbGVjdFF1ZXJpZXMuam9pbignXFxuJykpfVxuICAgICAgRklMVEVSICR7bGl0ZXJhbChmaWx0ZXJCeS5qb2luKCcgJiYgJykpfVxuICAgICAgJHtsaXRlcmFsKGxpbWl0LmFxbCl9XG4gICAgICBSRVRVUk4gTUVSR0UoXG4gICAgICAgICR7c2VsZWN0T2JqZWN0cy5sZW5ndGggPiAwID8gbGl0ZXJhbChgTUVSR0UoaSwgeyR7c2VsZWN0T2JqZWN0cy5qb2luKCcsICcpfX0pYCkgOiBsaXRlcmFsKCdpJyl9LFxuICAgICAgICB7XG4gICAgICAgICAgb3duZXJQZXJzb25hSWQ6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS5fa2V5IDogbnVsbCxcbiAgICAgICAgICBvd25lclBlcnNvbmFJbWFnZUlkOiBvd25lclBlcnNvbmEgPyBvd25lclBlcnNvbmEuaW1hZ2VJZCA6IG51bGwsXG4gICAgICAgICAgb3duZXJQZXJzb25hSW1hZ2VVcmw6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS5pbWFnZVVybCA6IG51bGwsXG4gICAgICAgICAgb3duZXJQZXJzb25hTmFtZTogb3duZXJQZXJzb25hID8gb3duZXJQZXJzb25hLm5hbWUgOiBudWxsLFxuICAgICAgICAgIG93bmVyUGVyc29uYVRodW1iVXJsOiBvd25lclBlcnNvbmEgPyBvd25lclBlcnNvbmEudGh1bWJVcmwgOiBudWxsLFxuICAgICAgICAgIG93bmVyUGVyc29uYVVzZXJJZDogb3duZXJQZXJzb25hID8gb3duZXJQZXJzb25hLnVzZXJJZCA6IG51bGxcbiAgICAgICAgfVxuICAgICAgKVxuICBgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBJbWFnZVR5cGVbXSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBwYXJhbXM6IHtvcHRpb25zLCByZWFjdGlvbnN9LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pO1xufTtcblxuY29uc3QgZ2V0UGVyc29uYURvY0lkID0gKHBlcnNvbmFJZDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgcGVyc29uYURvY0lkID0gcGFyc2VBcmFuZ29JZChwZXJzb25hSWQpO1xuXG4gIGlmKHBlcnNvbmFEb2NJZCkge1xuICAgIHJldHVybiBwZXJzb25hRG9jSWQ7XG4gIH1cblxuICBjb25zdCBwZXJzb25hS2V5ID0gcGFyc2VJZChwZXJzb25hSWQpO1xuICByZXR1cm4gcGVyc29uYUtleSA/IGAke0NPTExFQ1RJT05TLlBFUlNPTkFTfS8ke3BlcnNvbmFLZXl9YCA6ICcnO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEltYWdlTGlzdEJ5UGVyc29uYVJlYWN0aW9ucyA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgcGVyc29uYUlkOiBzdHJpbmcgPSAnJyxcbiAgcmVhY3Rpb25zOiBzdHJpbmdbXSA9IFtdLFxuICBvcHRpb25zPzogSW1hZ2VPcHRpb25zXG4pOiBQcm9taXNlPEltYWdlVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRJbWFnZUxpc3RCeVBlcnNvbmFSZWFjdGlvbnMnO1xuICBjb25zdCBzZXNzaW9uUGVyc29uYUlkID0gU3RyaW5nKGNvbnRleHQ/LnNlc3Npb24/LnBlcnNvbmFJZCB8fCAnJyk7XG4gIGNvbnN0IHBlcnNvbmFEb2NJZCA9IGdldFBlcnNvbmFEb2NJZChwZXJzb25hSWQgfHwgc2Vzc2lvblBlcnNvbmFJZCk7XG4gIGNvbnN0IHJlYWN0aW9uTmFtZXMgPSBBcnJheS5pc0FycmF5KHJlYWN0aW9ucylcbiAgICA/IHJlYWN0aW9ucy5tYXAoKHJlYWN0aW9uTmFtZSkgPT4gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpLnRvTG93ZXJDYXNlKCkpLmZpbHRlcihCb29sZWFuKVxuICAgIDogW107XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZUltYWdlT3B0aW9ucyhvcHRpb25zKTtcblxuICBpZighcGVyc29uYURvY0lkIHx8ICFyZWFjdGlvbk5hbWVzLmxlbmd0aCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgRk9SIGltYWdlLCByZWFjdGlvbiBJTiBPVVRCT1VORCAke3BlcnNvbmFEb2NJZH0gJHtoYXNSZWFjdGlvbkNvbGxlY3Rpb259XG4gICAgICBPUFRJT05TIHt2ZXJ0ZXhDb2xsZWN0aW9uczogXCJpbWFnZXNcIn1cbiAgICAgIExFVCBtZWRpYSA9IEZJUlNUKFxuICAgICAgICBGT1Igb3duZXIsIGxpbmsgSU4gSU5CT1VORCBpbWFnZS5faWQgJHtoYXNNZWRpYUNvbGxlY3Rpb259XG4gICAgICAgICAgRklMVEVSIGxpbmsudHlwZSA9PSBcImltYWdlXCJcbiAgICAgICAgICBMSU1JVCAxXG4gICAgICAgICAgUkVUVVJOIHtcbiAgICAgICAgICAgIGl0ZW1LZXk6IFBBUlNFX0lERU5USUZJRVIobGluay5fZnJvbSkua2V5LFxuICAgICAgICAgICAgaXRlbVR5cGU6IGxpbmsuaXRlbVR5cGUgfHwgUEFSU0VfSURFTlRJRklFUihsaW5rLl9mcm9tKS5jb2xsZWN0aW9uXG4gICAgICAgICAgfVxuICAgICAgKVxuICAgICAgTEVUIG93bmVyUGVyc29uYSA9IG1lZGlhICYmIG1lZGlhLml0ZW1UeXBlID09IFwicGVyc29uYXNcIiA/IERPQ1VNRU5UKCR7cGVyc29uYXNDb2xsZWN0aW9ufSwgbWVkaWEuaXRlbUtleSkgOiBudWxsXG4gICAgICBGSUxURVIgTE9XRVIocmVhY3Rpb24udHlwZSB8fCBcIlwiKSBJTiBbXCJpbWFnZVwiLCBcImltYWdlc1wiXVxuICAgICAgRklMVEVSIFBPU0lUSU9OKCR7cmVhY3Rpb25OYW1lc30sIExPV0VSKHJlYWN0aW9uLm5hbWUgfHwgcmVhY3Rpb24udmFsdWUgfHwgXCJcIikpXG4gICAgICBTT1JUIHJlYWN0aW9uLmFkZGVkIERFU0NcbiAgICAgICR7bGl0ZXJhbChsaW1pdC5hcWwpfVxuICAgICAgUkVUVVJOIE1FUkdFKGltYWdlLCB7XG4gICAgICAgIG93bmVyUGVyc29uYUlkOiBvd25lclBlcnNvbmEgPyBvd25lclBlcnNvbmEuX2tleSA6IG51bGwsXG4gICAgICAgIG93bmVyUGVyc29uYUltYWdlSWQ6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS5pbWFnZUlkIDogbnVsbCxcbiAgICAgICAgb3duZXJQZXJzb25hSW1hZ2VVcmw6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS5pbWFnZVVybCA6IG51bGwsXG4gICAgICAgIG93bmVyUGVyc29uYU5hbWU6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS5uYW1lIDogbnVsbCxcbiAgICAgICAgb3duZXJQZXJzb25hVGh1bWJVcmw6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS50aHVtYlVybCA6IG51bGwsXG4gICAgICAgIG93bmVyUGVyc29uYVVzZXJJZDogb3duZXJQZXJzb25hID8gb3duZXJQZXJzb25hLnVzZXJJZCA6IG51bGxcbiAgICAgIH0pXG4gIGA7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdXNlRGIoY29udGV4dC5kYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSBhcyB1bmtub3duIGFzIEltYWdlVHlwZVtdKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7b3B0aW9ucywgcGVyc29uYUlkLCByZWFjdGlvbnN9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gW107XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJbWFnZUJ5SWQgPSAoY29udGV4dDogQXBpQ29udGV4dCwgaW1hZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgY29uc3QgZm9ybWF0SW1hZ2VJZCA9IHBhcnNlSWQoaW1hZ2VJZCk7XG4gIGNvbnN0IGZpbHRlcnM6IEZpbHRlckdyb3VwID0ge1xuICAgIG9wZXJhdG9yOiAnQU5EJyxcbiAgICBmaWx0ZXJzOiBbe2ZpZWxkOiAnX2tleScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0SW1hZ2VJZH1dXG4gIH0gYXMgYW55O1xuXG4gIHJldHVybiBnZXRJdGVtQnk8SW1hZ2VUeXBlPihjb250ZXh0LCAnaW1hZ2VzJywgZmlsdGVycyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlckltYWdlUGF0aCA9ICh1c2VySWQ6IHN0cmluZywgaW1hZ2VJZDogc3RyaW5nLCBpbWFnZVR5cGU6IHN0cmluZywgZGlyOiBzdHJpbmcgPSAnaW1hZ2VzJyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGZpbGVuYW1lID0gYCR7aW1hZ2VJZH0uJHtnZXRJbWFnZUV4dGVuc2lvbihpbWFnZVR5cGUpfWA7XG5cbiAgcmV0dXJuIGB1c2Vycy8ke3VzZXJJZH0vJHtkaXJ9LyR7ZmlsZW5hbWV9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcHBJbWFnZVVybCA9ICh7XG4gIGJ1Y2tldCxcbiAgZGlyZWN0b3J5ID0gJ2ltYWdlcycsXG4gIGltYWdlSWQsXG4gIGltYWdlVHlwZSA9ICdqcGcnLFxuICBpc1RodW1iID0gZmFsc2UsXG4gIHR5cGUsXG4gIHR5cGVJZFxufTogSW1hZ2VVcmxEYXRhKTogc3RyaW5nID0+IHtcbiAgaWYoIXR5cGUpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZighaW1hZ2VJZCkge1xuICAgIGlmKGltYWdlVHlwZSA9PT0gJ3BlcnNvbmEnKSB7XG4gICAgICByZXR1cm4gYCR7Q29uZmlnLmdldCgnaW1hZ2UuZGVmYXVsdFVybCcpfS91c2Vyc19iay5qcGdgO1xuICAgIH1cbiAgICByZXR1cm4gYCR7Q29uZmlnLmdldCgnaW1hZ2UuZGVmYXVsdFVybCcpfS91c2Vyc193aC5qcGdgO1xuICB9XG5cbiAgY29uc3QgYnVja2V0TmFtZSA9IGJ1Y2tldCB8fCBDb25maWcuZ2V0KCdpbWFnZS5idWNrZXQnKSB8fCAnZGV2LnJlYWt0b3IuaW8nO1xuICBjb25zdCBpbWFnZU5hbWUgPSBpc1RodW1iID8gYCR7aW1hZ2VJZH0tdGguJHtpbWFnZVR5cGV9YCA6IGAke2ltYWdlSWR9LiR7aW1hZ2VUeXBlID09PSAncGVyc29uYScgfHwgaW1hZ2VUeXBlID09PSAnb3RoZXInID8gJ2pwZycgOiBpbWFnZVR5cGV9YDtcbiAgY29uc3QgaW1hZ2VVcmwgPSBDb25maWcuZ2V0KCdpbWFnZS51cmwnKSB8fCBgaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tLyR7YnVja2V0TmFtZX1gO1xuXG4gIGlmKHR5cGUgPT09ICdhcHBzJykge1xuICAgIHJldHVybiBgJHtpbWFnZVVybH0vJHt0eXBlfS8ke2RpcmVjdG9yeX0vJHtpbWFnZU5hbWV9YDtcbiAgfVxuXG4gIHJldHVybiBgJHtpbWFnZVVybH0vJHt0eXBlfS8ke3R5cGVJZH0vJHtkaXJlY3Rvcnl9LyR7aW1hZ2VOYW1lfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW1hZ2VVcmwgPSBhc3luYyAoe1xuICBidWNrZXQsXG4gIGltYWdlRGlyID0gJ2ltYWdlcycsXG4gIGltYWdlSWQsXG4gIGltYWdlVHlwZSA9ICdqcGcnLFxuICBpc1RodW1iID0gZmFsc2UsXG4gIHR5cGUsXG4gIHR5cGVJZCxcbiAgdXJsVHlwZSA9ICdwdWJsaWMnXG59OiBJbWFnZVVybERhdGEpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBpZighaW1hZ2VJZCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvbnN0IGJ1Y2tldE5hbWUgPSBidWNrZXQgfHwgQ29uZmlnLmdldCgnaW1hZ2UuYnVja2V0JykgfHwgJ2Rldi5yZWFrdG9yLmlvJztcbiAgY29uc3QgY29uZmlndXJlZEltYWdlVXJsID0gU3RyaW5nKENvbmZpZy5nZXQoJ2ltYWdlLnVybCcpIHx8ICcnKTtcbiAgY29uc3QgY29uZmlndXJlZEFwcFVybCA9IFN0cmluZyhDb25maWcuZ2V0KCdhcHAudXJsJykgfHwgJycpO1xuICBjb25zdCBwdWJsaWNCYXNlVXJsID0gY29uZmlndXJlZEFwcFVybFxuICAgID8gYGh0dHBzOi8vYm94LiR7Y29uZmlndXJlZEFwcFVybH1gXG4gICAgOiAoY29uZmlndXJlZEltYWdlVXJsIHx8IGBodHRwczovL3MzLmFtYXpvbmF3cy5jb20vJHtidWNrZXROYW1lfWApO1xuICBjb25zdCBkZXZCYXNlVXJsID0gY29uZmlndXJlZEFwcFVybFxuICAgID8gYGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9kZXYuJHtjb25maWd1cmVkQXBwVXJsfWBcbiAgICA6IChjb25maWd1cmVkSW1hZ2VVcmwgfHwgYGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS8ke2J1Y2tldE5hbWV9YCk7XG5cbiAgLy8gQWx3YXlzIHVzZSBzaWduZWQgVVJMcyBmb3IgdGh1bWJuYWlsc1xuICBpZihpc1RodW1iKSB7XG4gICAgdXJsVHlwZSA9ICdzaWduZWQnO1xuICB9XG5cbiAgY29uc3QgdGh1bWJTdWZmaXggPSBpc1RodW1iID8gJy10aCcgOiAnJztcbiAgY29uc3QgaW1hZ2VLZXkgPSBgJHt0eXBlfS8ke3R5cGVJZH0vJHtpbWFnZURpcn0vJHtpbWFnZUlkfSR7dGh1bWJTdWZmaXh9LiR7aW1hZ2VUeXBlfWA7XG5cbiAgc3dpdGNoKHVybFR5cGUpIHtcbiAgICBjYXNlICdzaWduZWQnOiB7XG4gICAgICByZXR1cm4gYXdhaXQgczNHZXRTaWduZWRVcmwoe0J1Y2tldDogYnVja2V0TmFtZSwgRXhwaXJlczogNjAgKiA2MCwgS2V5OiBpbWFnZUtleX0pO1xuICAgIH1cbiAgICBjYXNlICdwdWJsaWMnOiB7XG4gICAgICByZXR1cm4gYCR7cHVibGljQmFzZVVybH0vJHtpbWFnZUtleX1gO1xuICAgIH1cbiAgICBjYXNlICdkZXYnOiB7XG4gICAgICByZXR1cm4gYCR7ZGV2QmFzZVVybH0vJHtpbWFnZUtleX1gO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVzaXplQW5kU2F2ZUltYWdlID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpbWFnZUlkOiBzdHJpbmcsXG4gIGJ1ZmZlcjogQnVmZmVyLFxuICBmaWxlVHlwZTogc3RyaW5nID0gJ2ltYWdlL2pwZWcnLCBzM09wdGlvbnM/OiBQdXRPYmplY3RDb21tYW5kSW5wdXRcbik6IFByb21pc2U8SW1hZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdyZXNpemVTYXZlSW1hZ2UnO1xuICBjb25zdCB7c2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBpbWdXID0gQ29uZmlnLmdldCgnaW1hZ2UuaW1nU2l6ZScpO1xuICBjb25zdCBpbWdRID0gQ29uZmlnLmdldCgnaW1hZ2UuaW1nUXVhbGl0eScpO1xuICBjb25zdCBmb3JtYXQgPSAoZmlsZVR5cGUuc3BsaXQoJy8nKSlbMV0gfHwgJ2pwZWcnO1xuICBjb25zdCBzaGFycEZvcm1hdCA9IG5vcm1hbGl6ZUltYWdlRm9ybWF0KGZvcm1hdCk7XG4gIGxldCBpbWFnZU9wdGltaXplZEJ1ZmZlcjogQnVmZmVyID0gYnVmZmVyO1xuICBsZXQgdGh1bWJPcHRpbWl6ZWRCdWZmZXI6IEJ1ZmZlciA9IGJ1ZmZlcjtcbiAgbGV0IGltYWdlSWRlbnRpdHk6IEltYWdlVHlwZSA9IHtcbiAgICBmaWxlU2l6ZTogYnVmZmVyLmxlbmd0aCxcbiAgICBmaWxlVHlwZTogZm9ybWF0LFxuICAgIGltYWdlSWRcbiAgfTtcblxuICB0cnkge1xuICAgIGltYWdlT3B0aW1pemVkQnVmZmVyID0gYXdhaXQgc2hhcnAoYnVmZmVyKVxuICAgICAgLnJvdGF0ZSgpXG4gICAgICAucmVzaXplKHtcbiAgICAgICAgZml0OiAnaW5zaWRlJyxcbiAgICAgICAgaGVpZ2h0OiBpbWdXLFxuICAgICAgICB3aWR0aDogaW1nVyxcbiAgICAgICAgd2l0aG91dEVubGFyZ2VtZW50OiB0cnVlXG4gICAgICB9KVxuICAgICAgLnRvRm9ybWF0KHNoYXJwRm9ybWF0LCB7cXVhbGl0eTogaW1nUX0pXG4gICAgICAudG9CdWZmZXIoKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHJldHVybiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHBhcmFtczoge2ZpbGVUeXBlLCBpbWFnZUlkfSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklNQUdFX1NBVkVcbiAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGltYWdlT2JqOiBQdXRPYmplY3RDb21tYW5kSW5wdXQgPSB7XG4gICAgICBCb2R5OiBpbWFnZU9wdGltaXplZEJ1ZmZlcixcbiAgICAgIEJ1Y2tldDogbnVsbCxcbiAgICAgIENvbnRlbnRUeXBlOiBmaWxlVHlwZSxcbiAgICAgIC4uLihzM09wdGlvbnMgfHwge30pLFxuICAgICAgS2V5OiBnZXRVc2VySW1hZ2VQYXRoKHNlc3Npb25JZCwgaW1hZ2VJZCwgZmlsZVR5cGUsICdpbWFnZXMnKVxuICAgIH07XG4gICAgYXdhaXQgczNQdXQoaW1hZ2VPYmopO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7ZmlsZVR5cGUsIGltYWdlSWR9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuSU1BR0VfU0FWRVxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgW2ltYWdlTWV0YWRhdGEsIGltYWdlU3RhdHMsIHNvdXJjZU1ldGFkYXRhXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHNoYXJwKGltYWdlT3B0aW1pemVkQnVmZmVyKS5tZXRhZGF0YSgpLFxuICAgICAgc2hhcnAoaW1hZ2VPcHRpbWl6ZWRCdWZmZXIpLnN0YXRzKCksXG4gICAgICBzaGFycChidWZmZXIpLm1ldGFkYXRhKClcbiAgICBdKTtcbiAgICBjb25zdCB7YiwgZywgcn0gPSBpbWFnZVN0YXRzLmRvbWluYW50O1xuICAgIGNvbnN0IGNvbG9yID0gW3IsIGcsIGJdLm1hcCgodmFsdWUpID0+IHZhbHVlLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKTtcbiAgICBjb25zdCBleGlmTWV0YWRhdGEgPSBpbWFnZUV4aWZNZXRhZGF0YShzb3VyY2VNZXRhZGF0YS5leGlmKTtcblxuICAgIGltYWdlSWRlbnRpdHkgPSB7XG4gICAgICBjb2xvcixcbiAgICAgIGZpbGVTaXplOiBpbWFnZU9wdGltaXplZEJ1ZmZlci5sZW5ndGgsXG4gICAgICBmaWxlVHlwZTogZm9ybWF0LFxuICAgICAgaGVpZ2h0OiBpbWFnZU1ldGFkYXRhLmhlaWdodCB8fCAwLFxuICAgICAgaW1hZ2VJZCxcbiAgICAgIC4uLmV4aWZNZXRhZGF0YSxcbiAgICAgIG9yaWVudGF0aW9uOiBpbWFnZU1ldGFkYXRhLm9yaWVudGF0aW9uID8gU3RyaW5nKGltYWdlTWV0YWRhdGEub3JpZW50YXRpb24pIDogdW5kZWZpbmVkLFxuICAgICAgcXVhbGl0eTogaW1nUSxcbiAgICAgIHJlc29sdXRpb246IGltYWdlTWV0YWRhdGEuZGVuc2l0eSA/IGAke2ltYWdlTWV0YWRhdGEuZGVuc2l0eX0gcHBpYCA6IHVuZGVmaW5lZCxcbiAgICAgIHdpZHRoOiBpbWFnZU1ldGFkYXRhLndpZHRoIHx8IDBcbiAgICB9O1xuXG4gICAgY29uc3QgdGhtVyA9IENvbmZpZy5nZXQoJ2ltYWdlLnRobVNpemUnKTtcbiAgICBjb25zdCB0aG1RID0gQ29uZmlnLmdldCgnaW1hZ2UudGhtUXVhbGl0eScpO1xuICAgIHRodW1iT3B0aW1pemVkQnVmZmVyID0gYXdhaXQgc2hhcnAoaW1hZ2VPcHRpbWl6ZWRCdWZmZXIpXG4gICAgICAucmVzaXplKHtcbiAgICAgICAgZml0OiAnY292ZXInLFxuICAgICAgICBoZWlnaHQ6IHRobVcsXG4gICAgICAgIHBvc2l0aW9uOiAnY2VudHJlJyxcbiAgICAgICAgd2lkdGg6IHRobVdcbiAgICAgIH0pXG4gICAgICAudG9Gb3JtYXQoc2hhcnBGb3JtYXQsIHtxdWFsaXR5OiB0aG1RfSlcbiAgICAgIC50b0J1ZmZlcigpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7ZmlsZVR5cGUsIGltYWdlSWR9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuSU1BR0VfU0FWRVxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgdGh1bWJPYmo6IFB1dE9iamVjdENvbW1hbmRJbnB1dCA9IHtcbiAgICAgIEJvZHk6IHRodW1iT3B0aW1pemVkQnVmZmVyLFxuICAgICAgQnVja2V0OiBudWxsLFxuICAgICAgQ29udGVudFR5cGU6IGZpbGVUeXBlLFxuICAgICAgLi4uKHMzT3B0aW9ucyB8fCB7fSksXG4gICAgICBLZXk6IGdldFVzZXJJbWFnZVBhdGgoc2Vzc2lvbklkLCBpbWFnZUlkLCBmaWxlVHlwZSwgJ3RodW1icycpXG4gICAgfTtcbiAgICBhd2FpdCBzM1B1dCh0aHVtYk9iaik7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTUFHRV9TQVZFXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGltYWdlSWRlbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkSW1hZ2UgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGltYWdlOiBJbWFnZVR5cGUsXG4gIHMzT3B0aW9ucz86IFB1dE9iamVjdENvbW1hbmRJbnB1dFxuKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZEltYWdlJztcbiAgY29uc3Qge3Nlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge2ltYWdlSWQsIGRlc2NyaXB0aW9uLCBidWZmZXIsIGZpbGVUeXBlLCBpdGVtSWQsIGl0ZW1UeXBlLCBwcml2YWN5ID0gJ3B1YmxpYyd9ID0gaW1hZ2U7XG5cbiAgcmV0dXJuIHJlc2l6ZUFuZFNhdmVJbWFnZShjb250ZXh0LCBpbWFnZUlkLCBidWZmZXIsIGZpbGVUeXBlLCBzM09wdGlvbnMpXG4gICAgLnRoZW4oKHJlc2l6ZWRJbWFnZTogSW1hZ2VUeXBlKSA9PiB7XG4gICAgICBjb25zdCBpbnNlcnQ6IEltYWdlVHlwZSA9IHtcbiAgICAgICAgLi4ucmVzaXplZEltYWdlLFxuICAgICAgICBfa2V5OiBpbWFnZUlkLFxuICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgZmlsZVR5cGUsXG4gICAgICAgIHByaXZhY3k6IG5vcm1hbGl6ZUltYWdlUHJpdmFjeShwcml2YWN5KSxcbiAgICAgICAgdXNlcklkOiBzZXNzaW9uSWRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhZGRJdGVtPEltYWdlVHlwZT4oY29udGV4dCwgJ2ltYWdlcycsIGluc2VydClcbiAgICAgICAgLnRoZW4oKHNhdmVkSW1hZ2U6IEltYWdlVHlwZSkgPT4gYWRkSW1hZ2VFZGdlKGNvbnRleHQsIHtcbiAgICAgICAgICBpbWFnZUlkLFxuICAgICAgICAgIGl0ZW1JZDogaXRlbUlkIHx8IHNlc3Npb25JZCxcbiAgICAgICAgICBpdGVtVHlwZTogcGFyc2VTdHJpbmcoaXRlbVR5cGUgfHwgJ3VzZXJzJywgMzIpLnRvTG93ZXJDYXNlKCkgYXMgQXJhbmdvRGJDb2xsZWN0aW9uLFxuICAgICAgICAgIHR5cGU6ICdpbWFnZSdcbiAgICAgICAgfSkudGhlbigoKSA9PiBzYXZlZEltYWdlKSk7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTUFHRV9SRVNJWkVcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZEltYWdlRWRnZSA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBpbWFnZUVkZ2U6IEltYWdlRWRnZVR5cGUpOiBQcm9taXNlPG9iamVjdD4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkSW1hZ2VFZGdlJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7aW1hZ2VJZCwgaXRlbUlkLCBpdGVtVHlwZX0gPSBpbWFnZUVkZ2U7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IGVkZ2VJZCA9IGNyZWF0ZUhhc2goYGhhc01lZGlhLWltYWdlLSR7aW1hZ2VJZH0tJHtpdGVtSWR9LSR7c2Vzc2lvbklkfWApO1xuICBjb25zdCBmb3JtYXRJdGVtVHlwZTogQXJhbmdvRGJDb2xsZWN0aW9uID0gcGFyc2VDaGFyKGl0ZW1UeXBlKS50b0xvd2VyQ2FzZSgpIGFzIEFyYW5nb0RiQ29sbGVjdGlvbjtcbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VJZChpdGVtSWQpO1xuICBjb25zdCBpdGVtRG9jSWQgPSBnZXREb2NJZChmb3JtYXRJdGVtVHlwZSwge19rZXk6IGZvcm1hdEl0ZW1JZH0pO1xuICBjb25zdCBmb3JtYXRJbWFnZUlkID0gcGFyc2VJZChpbWFnZUlkKTtcbiAgY29uc3QgZmlsZURvY0lkID0gYGltYWdlcy8ke2Zvcm1hdEltYWdlSWR9YDtcblxuICBjb25zdCBlZGdlOiBJbWFnZUVkZ2VUeXBlID0ge1xuICAgIF9mcm9tOiBpdGVtRG9jSWQsXG4gICAgX2tleTogZWRnZUlkLFxuICAgIF90bzogZmlsZURvY0lkLFxuICAgIGFkZGVkOiBub3csXG4gICAgaXRlbVR5cGUsXG4gICAgdHlwZTogJ2ltYWdlJ1xuICB9O1xuXG4gIGlmKGl0ZW1Eb2NJZCkge1xuICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLmNvbGxlY3Rpb24oRURHRVMuSEFTX01FRElBKS5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KVxuICAgICAgLnRoZW4oKGZpbGVFZGdlKSA9PiB1c2VEYihkYXRhYmFzZU5hbWUpLmNvbGxlY3Rpb24oRURHRVMuSEFTX01FRElBKS5kb2N1bWVudChmaWxlRWRnZSkpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBlZGdlLFxuICAgICAgICAgIGZpbGVEb2NJZCxcbiAgICAgICAgICBpbWFnZUlkLFxuICAgICAgICAgIGl0ZW1Eb2NJZCxcbiAgICAgICAgICBpdGVtSWQsXG4gICAgICAgICAgaXRlbVR5cGVcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVJbWFnZSA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaW1hZ2U6IEltYWdlVHlwZSxcbiAgczNPcHRpb25zPzogUHV0T2JqZWN0Q29tbWFuZElucHV0XG4pOiBQcm9taXNlPEltYWdlVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAndXBkYXRlSW1hZ2UnO1xuICBjb25zdCB7c2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgYmFzZTY0ID0gJycsXG4gICAgYnVmZmVyOiBpbWFnZUJ1ZmZlcixcbiAgICBkZXNjcmlwdGlvbixcbiAgICBpbWFnZUlkLFxuICAgIGl0ZW1JZCxcbiAgICBpdGVtVHlwZSxcbiAgICBmaWxlVHlwZSxcbiAgICBwcml2YWN5LFxuICAgIHVybCA9ICcnXG4gIH0gPSBpbWFnZTtcblxuICBjb25zdCBmb3JtYXRJbWFnZUlkID0gaW1hZ2VJZCB8fCBjcmVhdGVIYXNoKGBpbWFnZS0ke3Nlc3Npb25JZH1gKTtcbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VJZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRJdGVtVHlwZTogQXJhbmdvRGJDb2xsZWN0aW9uID0gcGFyc2VDaGFyKGl0ZW1UeXBlLCAxNikudG9Mb3dlckNhc2UoKSBhcyBBcmFuZ29EYkNvbGxlY3Rpb247XG4gIGNvbnN0IGN1c3RvbVBhcmFtczogSW1hZ2VUeXBlID0ge1xuICAgIGRlc2NyaXB0aW9uLFxuICAgIGltYWdlSWQ6IGZvcm1hdEltYWdlSWQsXG4gICAgcHJpdmFjeTogbm9ybWFsaXplSW1hZ2VQcml2YWN5KHByaXZhY3kpLFxuICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gIH07XG5cbiAgaWYoYmFzZTY0IHx8IGltYWdlQnVmZmVyKSB7XG4gICAgbGV0IGJ1ZmZlcjogQnVmZmVyID0gaW1hZ2VCdWZmZXI7XG5cbiAgICBpZihiYXNlNjQpIHtcbiAgICAgIGNvbnN0IGZvcm1hdEJhc2U2NCA9IGJhc2U2NC5zdWJzdHIoYmFzZTY0LmluZGV4T2YoJywnKSArIDEpO1xuICAgICAgYnVmZmVyID0gQnVmZmVyLmZyb20oZm9ybWF0QmFzZTY0LCAnYmFzZTY0Jyk7XG4gICAgfVxuXG4gICAgbGV0IHVwZGF0ZWRGaWxlVHlwZSA9IGZpbGVUeXBlO1xuXG4gICAgaWYoIWZpbGVUeXBlKSB7XG4gICAgICBjb25zdCB7ZmlsZVR5cGVGcm9tQnVmZmVyfSA9IGF3YWl0IGltcG9ydCgnZmlsZS10eXBlJyk7XG4gICAgICBjb25zdCB7bWltZX0gPSBhd2FpdCBmaWxlVHlwZUZyb21CdWZmZXIoYnVmZmVyKTtcbiAgICAgIHVwZGF0ZWRGaWxlVHlwZSA9IG1pbWU7XG4gICAgfVxuXG4gICAgY29uc3QgaW1nUGFyYW1zOiBJbWFnZVR5cGUgPSB7XG4gICAgICAuLi5jdXN0b21QYXJhbXMsXG4gICAgICBidWZmZXIsXG4gICAgICBmaWxlVHlwZTogdXBkYXRlZEZpbGVUeXBlXG4gICAgfTtcblxuICAgIHJldHVybiBhZGRJbWFnZShjb250ZXh0LCBpbWdQYXJhbXMsIHMzT3B0aW9ucylcbiAgICAgIC50aGVuKChpbWFnZTogSW1hZ2VUeXBlKSA9PiB7XG4gICAgICAgIGlmKGZvcm1hdEl0ZW1JZCAmJiBmb3JtYXRJdGVtVHlwZSkge1xuICAgICAgICAgIGNvbnN0IGltYWdlRWRnZTogSW1hZ2VFZGdlVHlwZSA9IHtcbiAgICAgICAgICAgIGltYWdlSWQ6IGZvcm1hdEltYWdlSWQsXG4gICAgICAgICAgICBpdGVtSWQ6IGZvcm1hdEl0ZW1JZCxcbiAgICAgICAgICAgIGl0ZW1UeXBlOiBmb3JtYXRJdGVtVHlwZSxcbiAgICAgICAgICAgIHR5cGU6ICdpbWFnZSdcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBhZGRJbWFnZUVkZ2UoY29udGV4dCwgaW1hZ2VFZGdlKS50aGVuKCgpID0+IGltYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbWFnZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklNQUdFX1NBVkVcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG4gIH0gZWxzZSBpZih1cmwgIT09ICcnKSB7XG4gICAgbGV0IGNvbnRlbnRUeXBlO1xuXG4gICAgcmV0dXJuIGh0dHBHZXQodXJsKVxuICAgICAgLnRoZW4oKHJlczogSHR0cFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmKHJlcy5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTUFHRV9SRVFVRVNUXG4gICAgICAgICAgfSwgY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZW50VHlwZSA9IHJlcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJyk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pXG4gICAgICAudGhlbigocmVzKSA9PiAocmVzIGFzIEh0dHBSZXNwb25zZSkuYnVmZmVyKCkpXG4gICAgICAudGhlbigoYnVmZmVyOiBCdWZmZXIpID0+IHtcbiAgICAgICAgY29uc3QgaW1nUGFyYW1zOiBJbWFnZVR5cGUgPSB7XG4gICAgICAgICAgLi4uY3VzdG9tUGFyYW1zLFxuICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICBmaWxlVHlwZTogY29udGVudFR5cGVcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gYWRkSW1hZ2UoY29udGV4dCwgaW1nUGFyYW1zLCBzM09wdGlvbnMpXG4gICAgICAgICAgLnRoZW4oKGltYWdlOiBJbWFnZVR5cGUpID0+IHtcbiAgICAgICAgICAgIGlmKGZvcm1hdEl0ZW1JZCAmJiBmb3JtYXRJdGVtVHlwZSkge1xuICAgICAgICAgICAgICBjb25zdCBpbWFnZUVkZ2U6IEltYWdlRWRnZVR5cGUgPSB7aW1hZ2VJZDogZm9ybWF0SW1hZ2VJZCwgaXRlbUlkOiBmb3JtYXRJdGVtSWQsIGl0ZW1UeXBlOiBmb3JtYXRJdGVtVHlwZSwgdHlwZTogJ2ltYWdlJ307XG4gICAgICAgICAgICAgIHJldHVybiBhZGRJbWFnZUVkZ2UoY29udGV4dCwgaW1hZ2VFZGdlKS50aGVuKCgpID0+IGltYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGltYWdlO1xuICAgICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHZhbHVlOiAnZmV0Y2hfZXJyb3InXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuICB9IGVsc2UgaWYoaW1hZ2VJZCkge1xuICAgIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICAgIC4uLihkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkID8ge2Rlc2NyaXB0aW9ufSA6IHt9KSxcbiAgICAgIC4uLihwcml2YWN5ICE9PSB1bmRlZmluZWQgPyB7cHJpdmFjeTogbm9ybWFsaXplSW1hZ2VQcml2YWN5KHByaXZhY3kpfSA6IHt9KVxuICAgIH07XG5cbiAgICByZXR1cm4gdXBkYXRlSXRlbTxJbWFnZVR5cGU+KGNvbnRleHQsICdpbWFnZXMnLCBmb3JtYXRJbWFnZUlkLCB1cGRhdGUpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlSW1hZ2UgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgaW1hZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2RlbGV0ZSc7XG4gIGNvbnN0IHtzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEltYWdlSWQgPSBwYXJzZUlkKGltYWdlSWQpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgaW1hZ2UgPSBhd2FpdCBkZWxldGVJdGVtPEltYWdlVHlwZT4oY29udGV4dCwgJ2ltYWdlcycsIGZvcm1hdEltYWdlSWQsIHtcbiAgICAgIGNhc2NhZGU6IFtFREdFUy5IQVNfTUVESUFdLFxuICAgICAgb3duZXJzaGlwOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZighaW1hZ2UpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIERlbGV0ZSBTMyBmaWxlc1xuICAgIGNvbnN0IHtfa2V5OiBpbWFnZUtleX0gPSBpbWFnZTtcbiAgICBjb25zdCBwYXJhbXM6IERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQgPSB7XG4gICAgICBCdWNrZXQ6IG51bGwsXG4gICAgICBEZWxldGU6IHtcbiAgICAgICAgT2JqZWN0czogW1xuICAgICAgICAgIHtLZXk6IGB1c2Vycy8ke3Nlc3Npb25JZH0vaW1hZ2VzLyR7aW1hZ2VLZXl9LmpwZ2B9LFxuICAgICAgICAgIHtLZXk6IGB1c2Vycy8ke3Nlc3Npb25JZH0vdGh1bWJzLyR7aW1hZ2VLZXl9LmpwZ2B9XG4gICAgICAgIF0sXG4gICAgICAgIFF1aWV0OiB0cnVlXG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBzM0RlbGV0ZUxpc3QocGFyYW1zKS50aGVuKCgpID0+IGltYWdlKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHJldHVybiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHBhcmFtczoge2ltYWdlSWR9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiZ2V0IiwiaHR0cEdldCIsInBhcnNlTnVtIiwiY3JlYXRlSGFzaCIsInBhcnNlQXJhbmdvSWQiLCJwYXJzZUNoYXIiLCJwYXJzZUlkIiwicGFyc2VTdHJpbmciLCJhcWwiLCJsaXRlcmFsIiwiZXhpZlJlYWRlciIsInNoYXJwIiwiQ29uZmlnIiwiQ09MTEVDVElPTlMiLCJFREdFUyIsIkVycm9yVHlwZXMiLCJsb2dFcnJvciIsImxvZ0V4Y2VwdGlvbiIsImdldERvY0lkIiwiZ2V0TGltaXQiLCJzZWxlY3RSZWFjdGlvbkNvdW50QnlUeXBlIiwidXNlRGIiLCJnZXRJbWFnZUV4dGVuc2lvbiIsImFkZEl0ZW0iLCJkZWxldGVJdGVtIiwiZ2V0SXRlbUJ5IiwiZ2V0TGlzdEJ5IiwidXBkYXRlSXRlbSIsImdldEdyb3VwRGV0YWlscyIsImlzR3JvdXBlZCIsImdldFBlcnNvbmFSZWxhdGlvbnNoaXBTdGF0ZSIsInMzRGVsZXRlTGlzdCIsInMzR2V0U2lnbmVkVXJsIiwiczNQdXQiLCJoYXNTdWJzY3JpcHRpb25Ub0l0ZW0iLCJldmVudENhdGVnb3J5IiwiaGFzUmVhY3Rpb25Db2xsZWN0aW9uIiwiSEFTX1JFQUNUSU9OIiwiaGFzTWVkaWFDb2xsZWN0aW9uIiwiSEFTX01FRElBIiwicGVyc29uYXNDb2xsZWN0aW9uIiwiUEVSU09OQVMiLCJNRURJQV9JVEVNX0NPTExFQ1RJT05TIiwiVVNFUlMiLCJQT1NUUyIsIkdST1VQUyIsImdldE1lZGlhSXRlbURvY0lkcyIsIml0ZW1JZCIsIml0ZW1UeXBlIiwiZG9jSWQiLCJpdGVtS2V5IiwiaW5jbHVkZXMiLCJtYXAiLCJjb2xsZWN0aW9uIiwibm9ybWFsaXplSW1hZ2VGb3JtYXQiLCJmb3JtYXQiLCJpbWFnZUV4aWZNZXRhZGF0YSIsImV4aWYiLCJtZXRhZGF0YSIsInRha2VuIiwiUGhvdG8iLCJEYXRlVGltZU9yaWdpbmFsIiwibWFrZSIsIkltYWdlIiwiTWFrZSIsIm1vZGVsIiwiTW9kZWwiLCJEYXRlIiwiZ2V0VGltZSIsInVuZGVmaW5lZCIsIm5vcm1hbGl6ZUltYWdlUHJpdmFjeSIsInByaXZhY3kiLCJTdHJpbmciLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJjYW5WaWV3SW1hZ2UiLCJpbWFnZSIsInZpZXdlclVzZXJJZCIsImFjY2VzcyIsImlzT3duZXIiLCJ1c2VySWQiLCJjYW5WaWV3RnJpZW5kcyIsImNhblZpZXdWaXAiLCJwYXJzZUltYWdlT3B0aW9ucyIsIm9wdGlvbnMiLCJmcm9tIiwidG8iLCJ0eXBlIiwibGltaXQiLCJnZXRJbWFnZU9wdGlvbmFsRmllbGRzIiwiZmllbGRzIiwicmVkdWNlIiwic2VsZWN0cyIsImZpZWxkIiwicXVlcmllcyIsInB1c2giLCJvYmplY3RzIiwiZ2V0SW1hZ2VMaXN0QnlVc2VyIiwiY29udGV4dCIsImFjdGlvbiIsImZvcm1hdFVzZXJJZCIsInNvcnQiLCJkaXJlY3Rpb24iLCJjdXN0b21RdWVyaWVzIiwiY3VzdG9tT2JqZWN0cyIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsInBhcmFtcyIsInZhbHVlIiwiREFUQUJBU0VfRVJST1IiLCJnZXRJbWFnZUNvdW50QnlJdGVtIiwiZGF0YWJhc2VOYW1lIiwiaXRlbURvY0lkcyIsImFxbFFyeSIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsIm5leHQiLCJjb3VudCIsImdldEltYWdlTGlzdEJ5SXRlbSIsInNlc3Npb24iLCJzZXNzaW9uVXNlcklkIiwiZm9ybWF0SXRlbVR5cGUiLCJzZWxlY3RPYmplY3RzIiwic2VsZWN0UXVlcmllcyIsImpvaW4iLCJsZW5ndGgiLCJsaXN0IiwiYWxsIiwib3duZXJVc2VySWQiLCJmaWx0ZXIiLCJtZWRpYUl0ZW1LZXkiLCJfbWVkaWFJdGVtS2V5IiwibWVkaWFJdGVtVHlwZSIsIl9tZWRpYUl0ZW1UeXBlIiwicmVsYXRpb25zaGlwIiwiaXNGcmllbmQiLCJnZXRJbWFnZUxpc3RCeUdyb3VwIiwic2Vzc2lvbklkIiwiZmlsdGVycyIsImdyb3VwSWQiLCJmb3JtYXRHcm91cElkIiwiY29uZGl0aW9uYWwiLCJuYW1lIiwiZm9ybWF0Q29uZCIsImdyb3VwIiwiZmlsdGVyU3RyIiwiZ3JvdXBlZCIsImlzVmFsaWQiLCJmaWx0ZXJMaXN0IiwiZ2V0SW1hZ2VMaXN0QnlSZWFjdGlvbnMiLCJyZWFjdGlvbnMiLCJmb3JtYXRTZXNzaW9uSWQiLCJmb3JtYXRSZWFjdGlvbnMiLCJyZWFjdGlvbk5hbWUiLCJmaWx0ZXJCeSIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRQZXJzb25hRG9jSWQiLCJwZXJzb25hSWQiLCJwZXJzb25hRG9jSWQiLCJwZXJzb25hS2V5IiwiZ2V0SW1hZ2VMaXN0QnlQZXJzb25hUmVhY3Rpb25zIiwic2Vzc2lvblBlcnNvbmFJZCIsInJlYWN0aW9uTmFtZXMiLCJBcnJheSIsImlzQXJyYXkiLCJCb29sZWFuIiwiZ2V0SW1hZ2VCeUlkIiwiaW1hZ2VJZCIsImZvcm1hdEltYWdlSWQiLCJvcGVyYXRvciIsImdldFVzZXJJbWFnZVBhdGgiLCJpbWFnZVR5cGUiLCJkaXIiLCJmaWxlbmFtZSIsImdldEFwcEltYWdlVXJsIiwiYnVja2V0IiwiZGlyZWN0b3J5IiwiaXNUaHVtYiIsInR5cGVJZCIsImJ1Y2tldE5hbWUiLCJpbWFnZU5hbWUiLCJpbWFnZVVybCIsImdldEltYWdlVXJsIiwiaW1hZ2VEaXIiLCJ1cmxUeXBlIiwiY29uZmlndXJlZEltYWdlVXJsIiwiY29uZmlndXJlZEFwcFVybCIsInB1YmxpY0Jhc2VVcmwiLCJkZXZCYXNlVXJsIiwidGh1bWJTdWZmaXgiLCJpbWFnZUtleSIsIkJ1Y2tldCIsIkV4cGlyZXMiLCJLZXkiLCJyZXNpemVBbmRTYXZlSW1hZ2UiLCJidWZmZXIiLCJmaWxlVHlwZSIsInMzT3B0aW9ucyIsImltZ1ciLCJpbWdRIiwic3BsaXQiLCJzaGFycEZvcm1hdCIsImltYWdlT3B0aW1pemVkQnVmZmVyIiwidGh1bWJPcHRpbWl6ZWRCdWZmZXIiLCJpbWFnZUlkZW50aXR5IiwiZmlsZVNpemUiLCJyb3RhdGUiLCJyZXNpemUiLCJmaXQiLCJoZWlnaHQiLCJ3aWR0aCIsIndpdGhvdXRFbmxhcmdlbWVudCIsInRvRm9ybWF0IiwicXVhbGl0eSIsInRvQnVmZmVyIiwiSU1BR0VfU0FWRSIsImltYWdlT2JqIiwiQm9keSIsIkNvbnRlbnRUeXBlIiwiaW1hZ2VNZXRhZGF0YSIsImltYWdlU3RhdHMiLCJzb3VyY2VNZXRhZGF0YSIsIlByb21pc2UiLCJzdGF0cyIsImIiLCJnIiwiciIsImRvbWluYW50IiwiY29sb3IiLCJ0b1N0cmluZyIsInBhZFN0YXJ0IiwiZXhpZk1ldGFkYXRhIiwib3JpZW50YXRpb24iLCJyZXNvbHV0aW9uIiwiZGVuc2l0eSIsInRobVciLCJ0aG1RIiwicG9zaXRpb24iLCJ0aHVtYk9iaiIsImFkZEltYWdlIiwiZGVzY3JpcHRpb24iLCJyZXNpemVkSW1hZ2UiLCJpbnNlcnQiLCJfa2V5Iiwic2F2ZWRJbWFnZSIsImFkZEltYWdlRWRnZSIsIklNQUdFX1JFU0laRSIsImltYWdlRWRnZSIsIm5vdyIsImVkZ2VJZCIsImZvcm1hdEl0ZW1JZCIsIml0ZW1Eb2NJZCIsImZpbGVEb2NJZCIsImVkZ2UiLCJfZnJvbSIsIl90byIsImFkZGVkIiwic2F2ZSIsInJldHVybk5ldyIsImZpbGVFZGdlIiwiZG9jdW1lbnQiLCJ1cGRhdGVJbWFnZSIsImJhc2U2NCIsImltYWdlQnVmZmVyIiwidXJsIiwiY3VzdG9tUGFyYW1zIiwiZm9ybWF0QmFzZTY0Iiwic3Vic3RyIiwiaW5kZXhPZiIsIkJ1ZmZlciIsInVwZGF0ZWRGaWxlVHlwZSIsImZpbGVUeXBlRnJvbUJ1ZmZlciIsIm1pbWUiLCJpbWdQYXJhbXMiLCJjb250ZW50VHlwZSIsInJlcyIsInN0YXR1cyIsIklNQUdFX1JFUVVFU1QiLCJoZWFkZXJzIiwidXBkYXRlIiwiZGVsZXRlSW1hZ2UiLCJjYXNjYWRlIiwib3duZXJzaGlwIiwiRGVsZXRlIiwiT2JqZWN0cyIsIlF1aWV0Il0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FFRCxTQUFRQSxPQUFPQyxPQUFPLFFBQU8sb0JBQW9CO0FBQ2pELFNBQVFDLFFBQVEsUUFBTywrQkFBK0I7QUFDdEQsU0FBUUMsVUFBVSxFQUFFQyxhQUFhLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxXQUFXLFFBQU8sK0JBQStCO0FBQ3hHLFNBQVFDLEdBQUcsUUFBTyxXQUFXO0FBQzdCLFNBQWtCQyxPQUFPLFFBQU8sZUFBZTtBQUMvQyxPQUFPQyxnQkFBZ0IsY0FBYztBQUNyQyxPQUFPQyxXQUFXLFFBQVE7QUFFMUIsU0FBUUMsTUFBTSxRQUFPLGVBQWU7QUFDcEMsU0FBUUMsV0FBVyxFQUFFQyxLQUFLLFFBQU8sOEJBQThCO0FBQy9ELFNBQVFDLFVBQVUsUUFBTywwQkFBMEI7QUFDbkQsU0FBUUMsUUFBUSxFQUFFQyxZQUFZLFFBQU8sNkJBQTZCO0FB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
|
|
873
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvaW1hZ2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge0RlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQsIFB1dE9iamVjdENvbW1hbmRJbnB1dH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7Z2V0IGFzIGh0dHBHZXR9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcbmltcG9ydCB7cGFyc2VOdW19IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL251bWJlcnMnO1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUFyYW5nb0lkLCBwYXJzZUNoYXIsIHBhcnNlSWQsIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5LCBsaXRlcmFsfSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuaW1wb3J0IGV4aWZSZWFkZXIgZnJvbSAnZXhpZi1yZWFkZXInO1xuaW1wb3J0IHNoYXJwIGZyb20gJ3NoYXJwJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge0NPTExFQ1RJT05TLCBFREdFU30gZnJvbSAnLi4vY29uc3RhbnRzL2NvbGxlY3Rpb25zLmpzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvciwgbG9nRXhjZXB0aW9ufSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge2dldERvY0lkLCBnZXRMaW1pdCwgc2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZSwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuaW1wb3J0IHtnZXRJbWFnZUV4dGVuc2lvbn0gZnJvbSAnLi4vdXRpbHMvaW1hZ2VVdGlscy5qcyc7XG5pbXBvcnQge2FkZEl0ZW0sIGRlbGV0ZUl0ZW0sIGdldEl0ZW1CeSwgZ2V0TGlzdEJ5LCB1cGRhdGVJdGVtfSBmcm9tICcuL2NydWQuanMnO1xuaW1wb3J0IHtnZXRHcm91cERldGFpbHMsIGlzR3JvdXBlZH0gZnJvbSAnLi9ncm91cHMuanMnO1xuaW1wb3J0IHtnZXRQZXJzb25hUmVsYXRpb25zaGlwU3RhdGV9IGZyb20gJy4vcGVyc29uYXMuanMnO1xuaW1wb3J0IHtzM0RlbGV0ZUxpc3QsIHMzR2V0U2lnbmVkVXJsLCBzM1B1dH0gZnJvbSAnLi9zMy5qcyc7XG5pbXBvcnQge2hhc1N1YnNjcmlwdGlvblRvSXRlbX0gZnJvbSAnLi9zdWJzY3JpcHRpb25zLmpzJztcblxuaW1wb3J0IHR5cGUge1F1ZXJ5RmlsdGVyfSBmcm9tICcuLi90eXBlcy9hcHBzLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtBcmFuZ29EYkNvbGxlY3Rpb24sIEFyYW5nb0RiTGltaXR9IGZyb20gJy4uL3R5cGVzL2FyYW5nb2RiLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtHcm91cFR5cGUsIEdyb3VwVXNlcn0gZnJvbSAnLi4vdHlwZXMvZ3JvdXBzLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtJbWFnZUVkZ2VUeXBlLCBJbWFnZU9wdGlvbnMsIEltYWdlVHlwZSwgSW1hZ2VVcmxEYXRhfSBmcm9tICcuLi90eXBlcy9pbWFnZXMudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0ZpbHRlckdyb3VwfSBmcm9tICcuLi91dGlscy9hcWxIZWxwZXJzLmpzJztcblxuLy8gRGVmaW5lIGludGVyZmFjZSBmb3IgSFRUUCByZXNwb25zZSB3aXRoIGJ1ZmZlciBtZXRob2RcbmludGVyZmFjZSBIdHRwUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG4gIGJ1ZmZlcigpOiBQcm9taXNlPEJ1ZmZlcj47XG59XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAnaW1hZ2VzJztcbmNvbnN0IGhhc1JlYWN0aW9uQ29sbGVjdGlvbiA9IGxpdGVyYWwoRURHRVMuSEFTX1JFQUNUSU9OKTtcbmNvbnN0IGhhc01lZGlhQ29sbGVjdGlvbiA9IGxpdGVyYWwoRURHRVMuSEFTX01FRElBKTtcbmNvbnN0IHBlcnNvbmFzQ29sbGVjdGlvbiA9IGxpdGVyYWwoQ09MTEVDVElPTlMuUEVSU09OQVMpO1xuY29uc3QgTUVESUFfSVRFTV9DT0xMRUNUSU9OUzogcmVhZG9ubHkgQXJhbmdvRGJDb2xsZWN0aW9uW10gPSBbXG4gIENPTExFQ1RJT05TLlBFUlNPTkFTLFxuICBDT0xMRUNUSU9OUy5VU0VSUyxcbiAgQ09MTEVDVElPTlMuUE9TVFMsXG4gIENPTExFQ1RJT05TLkdST1VQU1xuXTtcblxudHlwZSBTaGFycEZvcm1hdCA9IEV4dHJhY3Q8UGFyYW1ldGVyczxSZXR1cm5UeXBlPHR5cGVvZiBzaGFycD5bJ3RvRm9ybWF0J10+WzBdLCBzdHJpbmc+O1xuXG5jb25zdCBnZXRNZWRpYUl0ZW1Eb2NJZHMgPSAoaXRlbUlkOiBzdHJpbmcsIGl0ZW1UeXBlPzogQXJhbmdvRGJDb2xsZWN0aW9uKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBkb2NJZCA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcblxuICBpZihkb2NJZCkge1xuICAgIHJldHVybiBbZG9jSWRdO1xuICB9XG5cbiAgY29uc3QgaXRlbUtleSA9IHBhcnNlSWQoaXRlbUlkKTtcblxuICBpZighaXRlbUtleSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmKGl0ZW1UeXBlICYmIE1FRElBX0lURU1fQ09MTEVDVElPTlMuaW5jbHVkZXMoaXRlbVR5cGUpKSB7XG4gICAgcmV0dXJuIFtgJHtpdGVtVHlwZX0vJHtpdGVtS2V5fWBdO1xuICB9XG5cbiAgcmV0dXJuIE1FRElBX0lURU1fQ09MTEVDVElPTlMubWFwKChjb2xsZWN0aW9uKSA9PiBgJHtjb2xsZWN0aW9ufS8ke2l0ZW1LZXl9YCk7XG59O1xuXG5jb25zdCBub3JtYWxpemVJbWFnZUZvcm1hdCA9IChmb3JtYXQ6IHN0cmluZyk6IFNoYXJwRm9ybWF0ID0+XG4gIChmb3JtYXQgPT09ICdqcGcnID8gJ2pwZWcnIDogZm9ybWF0KSBhcyBTaGFycEZvcm1hdDtcblxuY29uc3QgaW1hZ2VFeGlmTWV0YWRhdGEgPSAoZXhpZj86IEJ1ZmZlcikgPT4ge1xuICBpZighZXhpZikgcmV0dXJuIHt9O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBleGlmUmVhZGVyKGV4aWYpO1xuICAgIGNvbnN0IHRha2VuID0gbWV0YWRhdGEuUGhvdG8/LkRhdGVUaW1lT3JpZ2luYWw7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1ha2U6IG1ldGFkYXRhLkltYWdlPy5NYWtlLFxuICAgICAgbW9kZWw6IG1ldGFkYXRhLkltYWdlPy5Nb2RlbCxcbiAgICAgIHRha2VuOiB0YWtlbiBpbnN0YW5jZW9mIERhdGUgPyB0YWtlbi5nZXRUaW1lKCkgOiB1bmRlZmluZWRcbiAgICB9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IG5vcm1hbGl6ZUltYWdlUHJpdmFjeSA9IChwcml2YWN5OiB1bmtub3duKTogJ2ZyaWVuZHMnIHwgJ3ByaXZhdGUnIHwgJ3B1YmxpYycgfCAndmlwJyA9PiB7XG4gIHN3aXRjaChTdHJpbmcocHJpdmFjeSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdmcmllbmRzJzpcbiAgICAgIHJldHVybiAnZnJpZW5kcyc7XG4gICAgY2FzZSAncHJpdmF0ZSc6XG4gICAgICByZXR1cm4gJ3ByaXZhdGUnO1xuICAgIGNhc2UgJ3ZpcCc6XG4gICAgICByZXR1cm4gJ3ZpcCc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAncHVibGljJztcbiAgfVxufTtcblxuY29uc3QgY2FuVmlld0ltYWdlID0gKFxuICBpbWFnZTogSW1hZ2VUeXBlLFxuICB2aWV3ZXJVc2VySWQ6IHN0cmluZyxcbiAgYWNjZXNzOiB7XG4gICAgcmVhZG9ubHkgY2FuVmlld0ZyaWVuZHM6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgY2FuVmlld1ZpcDogYm9vbGVhbjtcbiAgICByZWFkb25seSBpc093bmVyOiBib29sZWFuO1xuICB9XG4pID0+IHtcbiAgY29uc3QgcHJpdmFjeSA9IG5vcm1hbGl6ZUltYWdlUHJpdmFjeShpbWFnZT8ucHJpdmFjeSk7XG5cbiAgaWYoYWNjZXNzLmlzT3duZXIgfHwgU3RyaW5nKGltYWdlPy51c2VySWQgfHwgJycpID09PSB2aWV3ZXJVc2VySWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHN3aXRjaChwcml2YWN5KSB7XG4gICAgY2FzZSAncHJpdmF0ZSc6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSAnZnJpZW5kcyc6XG4gICAgICByZXR1cm4gYWNjZXNzLmNhblZpZXdGcmllbmRzO1xuICAgIGNhc2UgJ3ZpcCc6XG4gICAgICByZXR1cm4gYWNjZXNzLmNhblZpZXdWaXA7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VJbWFnZU9wdGlvbnMgPSAob3B0aW9uczogSW1hZ2VPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGZyb20gPSAwLFxuICAgIHRvID0gMzAsXG4gICAgdHlwZSA9ICdkZWZhdWx0J1xuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4ge1xuICAgIGxpbWl0OiBnZXRMaW1pdChmcm9tLCB0bykgYXMgQXJhbmdvRGJMaW1pdCxcbiAgICB0eXBlOiBwYXJzZUNoYXIodHlwZSwgMzIpXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW1hZ2VPcHRpb25hbEZpZWxkcyA9IChmaWVsZHM6IHN0cmluZ1tdID0gW10pID0+XG4gIGZpZWxkcy5yZWR1Y2UoKHNlbGVjdHMsIGZpZWxkOiBzdHJpbmcpID0+IHtcbiAgICBpZihmaWVsZC5pbmNsdWRlcygnQ291bnQnKSkge1xuICAgICAgcmV0dXJuIHNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGUoJ2ltYWdlcycsICdpJywgZmllbGQsIHNlbGVjdHMpO1xuICAgIH1cblxuICAgIHN3aXRjaChmaWVsZCkge1xuICAgICAgY2FzZSAncmVhY3Rpb25zJzoge1xuICAgICAgICBzZWxlY3RzLnF1ZXJpZXMucHVzaChgTEVUIHJlYWN0aW9ucyA9IChcbiAgICAgICAgICBGT1IgaW1hZ2UsIHIgSU4gSU5CT1VORCBpLl9pZCByZWFjdGlvbnNcbiAgICAgICAgICBDT0xMRUNUIHJlYWN0aW9uTmFtZSA9IHIudmFsdWUgSU5UTyByZWFjdGlvbkl0ZW1zXG4gICAgICAgICAgUkVUVVJOIHtuYW1lOiByZWFjdGlvbk5hbWUsIGNvdW50OiBMRU5HVEgocmVhY3Rpb25JdGVtc1sqXS5yLnZhbHVlKX1cbiAgICAgICAgKWApO1xuICAgICAgICBzZWxlY3RzLm9iamVjdHMucHVzaCgncmVhY3Rpb25zOnJlYWN0aW9ucycpO1xuICAgICAgICByZXR1cm4gc2VsZWN0cztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RhZ3MnOiB7XG4gICAgICAgIHNlbGVjdHMucXVlcmllcy5wdXNoKGBMRVQgdGFncyA9IChcbiAgICAgICAgICBGT1IgdCwgcGwgSU4gSU5CT1VORCBpLl9pZCBpc1RhZ2dlZFxuICAgICAgICAgIFJFVFVSTiB0XG4gICAgICAgIClgKTtcbiAgICAgICAgc2VsZWN0cy5vYmplY3RzLnB1c2goJ3RhZ3M6dGFncycpO1xuICAgICAgICByZXR1cm4gc2VsZWN0cztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3VzZXJzJzoge1xuICAgICAgICBzZWxlY3RzLnF1ZXJpZXMucHVzaChgTEVUIHVzZXJzID0gRklSU1QoXG4gICAgICAgICAgRk9SIHUgSU4gdXNlcnNcbiAgICAgICAgICBGSUxURVIgaS51c2VySWQgPT0gdS5fa2V5XG4gICAgICAgICAgTElNSVQgMVxuICAgICAgICAgIFJFVFVSTiB1XG4gICAgICAgIClgKTtcbiAgICAgICAgc2VsZWN0cy5vYmplY3RzLnB1c2goJ3VzZXJzOnVzZXJzJyk7XG4gICAgICAgIHJldHVybiBzZWxlY3RzO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gc2VsZWN0cztcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtvYmplY3RzOiBbXSwgcXVlcmllczogW119KTtcblxuZXhwb3J0IGNvbnN0IGdldEltYWdlTGlzdEJ5VXNlciA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgdXNlcklkOiBzdHJpbmcsXG4gIGZyb206IG51bWJlciA9IDAsXG4gIHRvOiBudW1iZXIgPSAzMFxuKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0SW1hZ2VzQnlVc2VyJztcbiAgY29uc3QgZm9ybWF0VXNlcklkID0gcGFyc2VJZCh1c2VySWQpO1xuXG4gIHJldHVybiBnZXRMaXN0Qnk8SW1hZ2VUeXBlPihjb250ZXh0LCAnaW1hZ2VzJywge3VzZXJJZDogZm9ybWF0VXNlcklkfSwge1xuICAgIHNvcnQ6IFt7ZmllbGQ6ICdhZGRlZCcsIGRpcmVjdGlvbjogJ0RFU0MnfV0sXG4gICAgbGltaXQ6IHtmcm9tLCB0b30sXG4gICAgY3VzdG9tUXVlcmllczogW1xuICAgICAgYExFVCB1c2VyID0gRklSU1QoRk9SIHUgSU4gdXNlcnMgRklMVEVSIHUuX2tleSA9PSBkb2MudXNlcklkIExJTUlUIDEgUkVUVVJOIHUpYFxuICAgIF0sXG4gICAgY3VzdG9tT2JqZWN0czogWyd1c2VyOnVzZXInXVxuICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHBhcmFtczoge2Zyb20sIHRvLCB1c2VySWR9LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gW107XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW1hZ2VDb3VudEJ5SXRlbSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtSWQ6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRJbWFnZUNvdW50QnlJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBpdGVtRG9jSWRzID0gZ2V0TWVkaWFJdGVtRG9jSWRzKGl0ZW1JZCk7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgTEVUIG1lZGlhID0gKFxuICAgICAgRk9SIGkgSU4gJHtoYXNNZWRpYUNvbGxlY3Rpb259XG4gICAgICAgIEZJTFRFUiBpLl9mcm9tIElOICR7aXRlbURvY0lkc31cbiAgICAgICAgRklMVEVSIGkudHlwZSA9PSBcImltYWdlXCJcbiAgICAgICAgUkVUVVJOIDFcbiAgICApXG4gICAgUkVUVVJOIHtjb3VudDogTEVOR1RIKG1lZGlhKX1cbiAgYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoe2NvdW50fSkgPT4gY291bnQpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7aXRlbUlkfSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJbWFnZUxpc3RCeUl0ZW0gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICBvcHRpb25zOiBJbWFnZU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0SW1hZ2VzQnlJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgZmllbGRzID0gW10sIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25Vc2VySWQgPSAnJ30gPSB7fX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJdGVtVHlwZSA9IG9wdGlvbnM/Lml0ZW1UeXBlID8gcGFyc2VDaGFyKFN0cmluZyhvcHRpb25zLml0ZW1UeXBlIHx8ICcnKSwgMzIpLnRvTG93ZXJDYXNlKCkgYXMgQXJhbmdvRGJDb2xsZWN0aW9uIDogdW5kZWZpbmVkO1xuICBjb25zdCBpdGVtRG9jSWRzID0gZ2V0TWVkaWFJdGVtRG9jSWRzKGl0ZW1JZCwgZm9ybWF0SXRlbVR5cGUpO1xuICBjb25zdCB7bGltaXR9ID0gcGFyc2VJbWFnZU9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldEltYWdlT3B0aW9uYWxGaWVsZHMoZmllbGRzKTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBGT1IgbCBJTiAke2hhc01lZGlhQ29sbGVjdGlvbn1cbiAgICAgIEZJTFRFUiBsLl9mcm9tIElOICR7aXRlbURvY0lkc31cbiAgICAgIEZJTFRFUiBsLnR5cGUgPT0gXCJpbWFnZVwiXG4gICAgICBMRVQgaSA9IERPQ1VNRU5UKGwuX3RvKVxuICAgICAgRklMVEVSIE5PVCBJU19OVUxMKGkpXG4gICAgICBMRVQgb3duZXJQZXJzb25hID0gbC5pdGVtVHlwZSA9PSBcInBlcnNvbmFzXCIgPyBET0NVTUVOVCgke2xpdGVyYWwoQ09MTEVDVElPTlMuUEVSU09OQVMpfSwgUEFSU0VfSURFTlRJRklFUihsLl9mcm9tKS5rZXkpIDogbnVsbFxuICAgICAgJHtsaXRlcmFsKHNlbGVjdFF1ZXJpZXMuam9pbignXFxuJykpfVxuICAgICAgU09SVCBpLmFkZGVkIERFU0NcbiAgICAgICR7bGl0ZXJhbChsaW1pdC5hcWwpfVxuICAgICAgUkVUVVJOIE1FUkdFKFxuICAgICAgICAke3NlbGVjdE9iamVjdHMubGVuZ3RoID4gMCA/IGxpdGVyYWwoYE1FUkdFKGksIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWApIDogbGl0ZXJhbCgnaScpfSxcbiAgICAgICAge1xuICAgICAgICAgIF9tZWRpYUl0ZW1LZXk6IFBBUlNFX0lERU5USUZJRVIobC5fZnJvbSkua2V5LFxuICAgICAgICAgIF9tZWRpYUl0ZW1UeXBlOiBsLml0ZW1UeXBlIHx8IFBBUlNFX0lERU5USUZJRVIobC5fZnJvbSkuY29sbGVjdGlvbixcbiAgICAgICAgICBvd25lclBlcnNvbmFJZDogb3duZXJQZXJzb25hID8gb3duZXJQZXJzb25hLl9rZXkgOiBudWxsLFxuICAgICAgICAgIG93bmVyUGVyc29uYUltYWdlSWQ6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS5pbWFnZUlkIDogbnVsbCxcbiAgICAgICAgICBvd25lclBlcnNvbmFJbWFnZVVybDogb3duZXJQZXJzb25hID8gb3duZXJQZXJzb25hLmltYWdlVXJsIDogbnVsbCxcbiAgICAgICAgICBvd25lclBlcnNvbmFOYW1lOiBvd25lclBlcnNvbmEgPyBvd25lclBlcnNvbmEubmFtZSA6IG51bGwsXG4gICAgICAgICAgb3duZXJQZXJzb25hVGh1bWJVcmw6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS50aHVtYlVybCA6IG51bGwsXG4gICAgICAgICAgb3duZXJQZXJzb25hVXNlcklkOiBvd25lclBlcnNvbmEgPyBvd25lclBlcnNvbmEudXNlcklkIDogbnVsbFxuICAgICAgICB9XG4gICAgICApXG4gIGA7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBsaXN0ID0gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBJbWFnZVR5cGVbXSk7XG5cbiAgICBjb25zdCBvd25lclVzZXJJZCA9IFN0cmluZyhsaXN0WzBdPy51c2VySWQgfHwgJycpO1xuICAgIGNvbnN0IGlzT3duZXIgPSAhIXNlc3Npb25Vc2VySWQgJiYgISFvd25lclVzZXJJZCAmJiBzZXNzaW9uVXNlcklkID09PSBvd25lclVzZXJJZDtcblxuICAgIGlmKGlzT3duZXIpIHtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIGlmKCFzZXNzaW9uVXNlcklkKSB7XG4gICAgICByZXR1cm4gbGlzdC5maWx0ZXIoKGltYWdlKSA9PiBub3JtYWxpemVJbWFnZVByaXZhY3koaW1hZ2U/LnByaXZhY3kpID09PSAncHVibGljJyk7XG4gICAgfVxuXG4gICAgbGV0IGNhblZpZXdGcmllbmRzID0gZmFsc2U7XG4gICAgbGV0IGNhblZpZXdWaXAgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1lZGlhSXRlbUtleSA9IFN0cmluZygobGlzdFswXSBhcyBJbWFnZVR5cGUgJiB7X21lZGlhSXRlbUtleT86IHN0cmluZ30pPy5fbWVkaWFJdGVtS2V5IHx8ICcnKTtcbiAgICBjb25zdCBtZWRpYUl0ZW1UeXBlID0gU3RyaW5nKChsaXN0WzBdIGFzIEltYWdlVHlwZSAmIHtfbWVkaWFJdGVtVHlwZT86IHN0cmluZ30pPy5fbWVkaWFJdGVtVHlwZSB8fCAnJyk7XG5cbiAgICBpZihtZWRpYUl0ZW1UeXBlID09PSBDT0xMRUNUSU9OUy5QRVJTT05BUyAmJiBtZWRpYUl0ZW1LZXkpIHtcbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcCA9IGF3YWl0IGdldFBlcnNvbmFSZWxhdGlvbnNoaXBTdGF0ZShjb250ZXh0LCBtZWRpYUl0ZW1LZXkpO1xuICAgICAgY2FuVmlld0ZyaWVuZHMgPSAhIXJlbGF0aW9uc2hpcD8uaXNGcmllbmQ7XG4gICAgICBjYW5WaWV3VmlwID0gYXdhaXQgaGFzU3Vic2NyaXB0aW9uVG9JdGVtKGNvbnRleHQsIG1lZGlhSXRlbUtleSwgQ09MTEVDVElPTlMuUEVSU09OQVMpO1xuICAgIH1cblxuICAgIHJldHVybiBsaXN0LmZpbHRlcigoaW1hZ2UpID0+IGNhblZpZXdJbWFnZShpbWFnZSwgc2Vzc2lvblVzZXJJZCwge2NhblZpZXdGcmllbmRzLCBjYW5WaWV3VmlwLCBpc093bmVyfSkpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHBhcmFtczoge2l0ZW1JZCwgb3B0aW9uczogey4uLm9wdGlvbnMsIGl0ZW1UeXBlOiBmb3JtYXRJdGVtVHlwZX19LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIFtdO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW1hZ2VMaXN0QnlHcm91cCA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgcGFyYW1zOiB7ZmlsdGVyczogUXVlcnlGaWx0ZXJbXSwgZ3JvdXBJZDogc3RyaW5nLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXJ9XG4pOiBQcm9taXNlPEltYWdlVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRJbWFnZXNCeUdyb3VwJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7ZmlsdGVycywgZ3JvdXBJZCwgZnJvbSwgdG99ID0gcGFyYW1zO1xuICBjb25zdCBmb3JtYXRHcm91cElkID0gcGFyc2VJZChncm91cElkKTtcbiAgY29uc3QgbGltaXQ6IEFyYW5nb0RiTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG5cbiAgZmlsdGVyc1xuICAgIC5tYXAoKGZpbHRlcjogUXVlcnlGaWx0ZXIpID0+IHtcbiAgICAgIGNvbnN0IHtjb25kaXRpb25hbCwgbmFtZSwgdmFsdWV9ID0gZmlsdGVyO1xuICAgICAgbGV0IGZvcm1hdENvbmQgPSBjb25kaXRpb25hbDtcblxuICAgICAgaWYoY29uZGl0aW9uYWwgIT09ICc+PScgJiYgY29uZGl0aW9uYWwgIT09ICc8PScgJiYgY29uZGl0aW9uYWwgIT09ICc+JyAmJiBjb25kaXRpb25hbCAhPT0gJzwnKSB7XG4gICAgICAgIGZvcm1hdENvbmQgPSAnPT0nO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2gobmFtZSkge1xuICAgICAgICBjYXNlICdhZGRlZCc6XG4gICAgICAgICAgcmV0dXJuIGBwLmFkZGVkICR7Zm9ybWF0Q29uZH0gJHtwYXJzZU51bSh2YWx1ZSl9YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgcmV0dXJuIGdldEdyb3VwRGV0YWlscyhjb250ZXh0LCBmb3JtYXRHcm91cElkKVxuICAgIC50aGVuKChncm91cDogR3JvdXBUeXBlKSA9PiB7XG4gICAgICBpZihncm91cC5wcml2YWN5ID09PSAncHVibGljJykge1xuICAgICAgICBmaWx0ZXJzLnB1c2goe2NvbmRpdGlvbmFsOiAnPT0nLCBuYW1lOiAnZ3JvdXBJZCcsIHZhbHVlOiBmb3JtYXRHcm91cElkfSk7XG4gICAgICAgIGNvbnN0IGZpbHRlclN0ciA9IGZpbHRlcnMuam9pbignICYmICcpO1xuICAgICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgICAgICAgIEZPUiBpIElOIEZMQVRURU4oXG4gICAgICAgICAgICBGT1IgcCBJTiBwb3N0c1xuICAgICAgICAgICAgICBGSUxURVIgJHtsaXRlcmFsKGZpbHRlclN0cil9XG4gICAgICAgICAgICAgIExFVCBpbWFnZXMgPSAoXG4gICAgICAgICAgICAgICAgRk9SIGksIGUgSU4gT1VUQk9VTkQgcC5faWQgJHtoYXNNZWRpYUNvbGxlY3Rpb259XG4gICAgICAgICAgICAgICAgICBGSUxURVIgZS50eXBlID09IFwiaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgUkVUVVJOIGlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBTT1JUIHAuYWRkZWQgREVTQ1xuICAgICAgICAgICAgICBSRVRVUk4gaW1hZ2VzXG4gICAgICAgICAgKVxuICAgICAgICAgICAgU09SVCBpLmFkZGVkIERFU0NcbiAgICAgICAgICAgICR7bGl0ZXJhbChsaW1pdC5hcWwpfVxuICAgICAgICAgICAgUkVUVVJOIGlcbiAgICAgICAgYDtcblxuICAgICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpIGFzIHVua25vd24gYXMgSW1hZ2VUeXBlW10pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgICAgICAgcGFyYW1zOiB7ZmlsdGVycywgZnJvbSwgZ3JvdXBJZCwgdG99LFxuICAgICAgICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzR3JvdXBlZChjb250ZXh0LCBzZXNzaW9uSWQsIGdyb3VwSWQpXG4gICAgICAgIC50aGVuKChncm91cGVkOiBHcm91cFVzZXIpID0+IHtcbiAgICAgICAgICBpZihncm91cGVkLmlzVmFsaWQpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7Y29uZGl0aW9uYWw6ICc9PScsIG5hbWU6ICdncm91cElkJywgdmFsdWU6IGdyb3VwZWQuZ3JvdXBJZH0pO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyTGlzdCA9IGZpbHRlcnMuam9pbignICYmICcpO1xuICAgICAgICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICAgICAgICAgICAgRk9SIHAgSU4gcG9zdFxuICAgICAgICAgICAgICAgIEZJTFRFUiAke2xpdGVyYWwoZmlsdGVyTGlzdCl9XG4gICAgICAgICAgICAgICAgRk9SIGYgSU4gcC5maWxlc1xuICAgICAgICAgICAgICAgICAgRklMVEVSIGYudHlwZSA9PSBcImltYWdlL2pwZWdcIiB8fCBmLnR5cGUgPT0gXCJpbWFnZS9wbmdcIlxuICAgICAgICAgICAgICAgICAgJHtsaXRlcmFsKGxpbWl0LmFxbCl9XG4gICAgICAgICAgICAgICAgICBTT1JUIHAuYWRkZWQgREVTQ1xuICAgICAgICAgICAgICAgICAgUkVUVVJOIGZcbiAgICAgICAgICAgIGA7XG5cbiAgICAgICAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpIGFzIHVua25vd24gYXMgSW1hZ2VUeXBlW10pXG4gICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICBwYXJhbXM6IHtmaWx0ZXJzLCBmcm9tLCBncm91cElkLCB0b30sXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgICAgICAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEltYWdlTGlzdEJ5UmVhY3Rpb25zID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICByZWFjdGlvbnM6IHN0cmluZ1tdID0gW10sXG4gIG9wdGlvbnM/OiBJbWFnZU9wdGlvbnNcbik6IFByb21pc2U8SW1hZ2VUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldEltYWdlTGlzdEJ5UmVhY3Rpb25zJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgZmllbGRzID0gW10sIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge2xpbWl0fSA9IHBhcnNlSW1hZ2VPcHRpb25zKG9wdGlvbnMpO1xuICBjb25zdCB7b2JqZWN0czogc2VsZWN0T2JqZWN0cywgcXVlcmllczogc2VsZWN0UXVlcmllc30gPSBnZXRJbWFnZU9wdGlvbmFsRmllbGRzKGZpZWxkcyk7XG4gIGNvbnN0IGZvcm1hdFNlc3Npb25JZCA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbnM6IHN0cmluZ1tdID0gcmVhY3Rpb25zLm1hcCgocmVhY3Rpb25OYW1lKSA9PiBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMikpO1xuICBjb25zdCBmaWx0ZXJCeTogc3RyaW5nW10gPSBbXG4gICAgJ3IudHlwZSA9PSBcImltYWdlc1wiJyxcbiAgICBgUE9TSVRJT04oJHtKU09OLnN0cmluZ2lmeShmb3JtYXRSZWFjdGlvbnMpfSwgTE9XRVIoci5uYW1lKSlgXTtcblxuICAvLyBHZXQgZGF0YSBmcm9tIGRhdGFiYXNlXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgRk9SIGksIHIgSU4gT1VUQk9VTkQgJHtmb3JtYXRTZXNzaW9uSWR9IGhhc1JlYWN0aW9uXG4gICAgICBPUFRJT05TIHt2ZXJ0ZXhDb2xsZWN0aW9uczogXCJpbWFnZXNcIn1cbiAgICAgIExFVCBtZWRpYSA9IEZJUlNUKFxuICAgICAgICBGT1Igb3duZXIsIGwgSU4gSU5CT1VORCBpLl9pZCAke2hhc01lZGlhQ29sbGVjdGlvbn1cbiAgICAgICAgICBGSUxURVIgbC50eXBlID09IFwiaW1hZ2VcIlxuICAgICAgICAgIExJTUlUIDFcbiAgICAgICAgICBSRVRVUk4ge1xuICAgICAgICAgICAgaXRlbUtleTogUEFSU0VfSURFTlRJRklFUihsLl9mcm9tKS5rZXksXG4gICAgICAgICAgICBpdGVtVHlwZTogbC5pdGVtVHlwZSB8fCBQQVJTRV9JREVOVElGSUVSKGwuX2Zyb20pLmNvbGxlY3Rpb25cbiAgICAgICAgICB9XG4gICAgICApXG4gICAgICBMRVQgb3duZXJQZXJzb25hID0gbWVkaWEgJiYgbWVkaWEuaXRlbVR5cGUgPT0gXCJwZXJzb25hc1wiID8gRE9DVU1FTlQoJHtsaXRlcmFsKENPTExFQ1RJT05TLlBFUlNPTkFTKX0sIG1lZGlhLml0ZW1LZXkpIDogbnVsbFxuICAgICAgJHtsaXRlcmFsKHNlbGVjdFF1ZXJpZXMuam9pbignXFxuJykpfVxuICAgICAgRklMVEVSICR7bGl0ZXJhbChmaWx0ZXJCeS5qb2luKCcgJiYgJykpfVxuICAgICAgJHtsaXRlcmFsKGxpbWl0LmFxbCl9XG4gICAgICBSRVRVUk4gTUVSR0UoXG4gICAgICAgICR7c2VsZWN0T2JqZWN0cy5sZW5ndGggPiAwID8gbGl0ZXJhbChgTUVSR0UoaSwgeyR7c2VsZWN0T2JqZWN0cy5qb2luKCcsICcpfX0pYCkgOiBsaXRlcmFsKCdpJyl9LFxuICAgICAgICB7XG4gICAgICAgICAgb3duZXJQZXJzb25hSWQ6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS5fa2V5IDogbnVsbCxcbiAgICAgICAgICBvd25lclBlcnNvbmFJbWFnZUlkOiBvd25lclBlcnNvbmEgPyBvd25lclBlcnNvbmEuaW1hZ2VJZCA6IG51bGwsXG4gICAgICAgICAgb3duZXJQZXJzb25hSW1hZ2VVcmw6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS5pbWFnZVVybCA6IG51bGwsXG4gICAgICAgICAgb3duZXJQZXJzb25hTmFtZTogb3duZXJQZXJzb25hID8gb3duZXJQZXJzb25hLm5hbWUgOiBudWxsLFxuICAgICAgICAgIG93bmVyUGVyc29uYVRodW1iVXJsOiBvd25lclBlcnNvbmEgPyBvd25lclBlcnNvbmEudGh1bWJVcmwgOiBudWxsLFxuICAgICAgICAgIG93bmVyUGVyc29uYVVzZXJJZDogb3duZXJQZXJzb25hID8gb3duZXJQZXJzb25hLnVzZXJJZCA6IG51bGxcbiAgICAgICAgfVxuICAgICAgKVxuICBgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBJbWFnZVR5cGVbXSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBwYXJhbXM6IHtvcHRpb25zLCByZWFjdGlvbnN9LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pO1xufTtcblxuY29uc3QgZ2V0UGVyc29uYURvY0lkID0gKHBlcnNvbmFJZDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgcGVyc29uYURvY0lkID0gcGFyc2VBcmFuZ29JZChwZXJzb25hSWQpO1xuXG4gIGlmKHBlcnNvbmFEb2NJZCkge1xuICAgIHJldHVybiBwZXJzb25hRG9jSWQ7XG4gIH1cblxuICBjb25zdCBwZXJzb25hS2V5ID0gcGFyc2VJZChwZXJzb25hSWQpO1xuICByZXR1cm4gcGVyc29uYUtleSA/IGAke0NPTExFQ1RJT05TLlBFUlNPTkFTfS8ke3BlcnNvbmFLZXl9YCA6ICcnO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEltYWdlTGlzdEJ5UGVyc29uYVJlYWN0aW9ucyA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgcGVyc29uYUlkOiBzdHJpbmcgPSAnJyxcbiAgcmVhY3Rpb25zOiBzdHJpbmdbXSA9IFtdLFxuICBvcHRpb25zPzogSW1hZ2VPcHRpb25zXG4pOiBQcm9taXNlPEltYWdlVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRJbWFnZUxpc3RCeVBlcnNvbmFSZWFjdGlvbnMnO1xuICBjb25zdCBzZXNzaW9uUGVyc29uYUlkID0gU3RyaW5nKGNvbnRleHQ/LnNlc3Npb24/LnBlcnNvbmFJZCB8fCAnJyk7XG4gIGNvbnN0IHBlcnNvbmFEb2NJZCA9IGdldFBlcnNvbmFEb2NJZChwZXJzb25hSWQgfHwgc2Vzc2lvblBlcnNvbmFJZCk7XG4gIGNvbnN0IHJlYWN0aW9uTmFtZXMgPSBBcnJheS5pc0FycmF5KHJlYWN0aW9ucylcbiAgICA/IHJlYWN0aW9ucy5tYXAoKHJlYWN0aW9uTmFtZSkgPT4gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpLnRvTG93ZXJDYXNlKCkpLmZpbHRlcihCb29sZWFuKVxuICAgIDogW107XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZUltYWdlT3B0aW9ucyhvcHRpb25zKTtcblxuICBpZighcGVyc29uYURvY0lkIHx8ICFyZWFjdGlvbk5hbWVzLmxlbmd0aCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgRk9SIGltYWdlLCByZWFjdGlvbiBJTiBPVVRCT1VORCAke3BlcnNvbmFEb2NJZH0gJHtoYXNSZWFjdGlvbkNvbGxlY3Rpb259XG4gICAgICBPUFRJT05TIHt2ZXJ0ZXhDb2xsZWN0aW9uczogXCJpbWFnZXNcIn1cbiAgICAgIExFVCBtZWRpYSA9IEZJUlNUKFxuICAgICAgICBGT1Igb3duZXIsIGxpbmsgSU4gSU5CT1VORCBpbWFnZS5faWQgJHtoYXNNZWRpYUNvbGxlY3Rpb259XG4gICAgICAgICAgRklMVEVSIGxpbmsudHlwZSA9PSBcImltYWdlXCJcbiAgICAgICAgICBMSU1JVCAxXG4gICAgICAgICAgUkVUVVJOIHtcbiAgICAgICAgICAgIGl0ZW1LZXk6IFBBUlNFX0lERU5USUZJRVIobGluay5fZnJvbSkua2V5LFxuICAgICAgICAgICAgaXRlbVR5cGU6IGxpbmsuaXRlbVR5cGUgfHwgUEFSU0VfSURFTlRJRklFUihsaW5rLl9mcm9tKS5jb2xsZWN0aW9uXG4gICAgICAgICAgfVxuICAgICAgKVxuICAgICAgTEVUIG93bmVyUGVyc29uYSA9IG1lZGlhICYmIG1lZGlhLml0ZW1UeXBlID09IFwicGVyc29uYXNcIiA/IERPQ1VNRU5UKCR7cGVyc29uYXNDb2xsZWN0aW9ufSwgbWVkaWEuaXRlbUtleSkgOiBudWxsXG4gICAgICBGSUxURVIgTE9XRVIocmVhY3Rpb24udHlwZSB8fCBcIlwiKSBJTiBbXCJpbWFnZVwiLCBcImltYWdlc1wiXVxuICAgICAgRklMVEVSIFBPU0lUSU9OKCR7cmVhY3Rpb25OYW1lc30sIExPV0VSKHJlYWN0aW9uLm5hbWUgfHwgcmVhY3Rpb24udmFsdWUgfHwgXCJcIikpXG4gICAgICBTT1JUIHJlYWN0aW9uLmFkZGVkIERFU0NcbiAgICAgICR7bGl0ZXJhbChsaW1pdC5hcWwpfVxuICAgICAgUkVUVVJOIE1FUkdFKGltYWdlLCB7XG4gICAgICAgIG93bmVyUGVyc29uYUlkOiBvd25lclBlcnNvbmEgPyBvd25lclBlcnNvbmEuX2tleSA6IG51bGwsXG4gICAgICAgIG93bmVyUGVyc29uYUltYWdlSWQ6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS5pbWFnZUlkIDogbnVsbCxcbiAgICAgICAgb3duZXJQZXJzb25hSW1hZ2VVcmw6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS5pbWFnZVVybCA6IG51bGwsXG4gICAgICAgIG93bmVyUGVyc29uYU5hbWU6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS5uYW1lIDogbnVsbCxcbiAgICAgICAgb3duZXJQZXJzb25hVGh1bWJVcmw6IG93bmVyUGVyc29uYSA/IG93bmVyUGVyc29uYS50aHVtYlVybCA6IG51bGwsXG4gICAgICAgIG93bmVyUGVyc29uYVVzZXJJZDogb3duZXJQZXJzb25hID8gb3duZXJQZXJzb25hLnVzZXJJZCA6IG51bGxcbiAgICAgIH0pXG4gIGA7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdXNlRGIoY29udGV4dC5kYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSBhcyB1bmtub3duIGFzIEltYWdlVHlwZVtdKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7b3B0aW9ucywgcGVyc29uYUlkLCByZWFjdGlvbnN9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gW107XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJbWFnZUJ5SWQgPSAoY29udGV4dDogQXBpQ29udGV4dCwgaW1hZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgY29uc3QgZm9ybWF0SW1hZ2VJZCA9IHBhcnNlSWQoaW1hZ2VJZCk7XG4gIGNvbnN0IGZpbHRlcnM6IEZpbHRlckdyb3VwID0ge1xuICAgIG9wZXJhdG9yOiAnQU5EJyxcbiAgICBmaWx0ZXJzOiBbe2ZpZWxkOiAnX2tleScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogZm9ybWF0SW1hZ2VJZH1dXG4gIH0gYXMgYW55O1xuXG4gIHJldHVybiBnZXRJdGVtQnk8SW1hZ2VUeXBlPihjb250ZXh0LCAnaW1hZ2VzJywgZmlsdGVycyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlckltYWdlUGF0aCA9ICh1c2VySWQ6IHN0cmluZywgaW1hZ2VJZDogc3RyaW5nLCBpbWFnZVR5cGU6IHN0cmluZywgZGlyOiBzdHJpbmcgPSAnaW1hZ2VzJyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGZpbGVuYW1lID0gYCR7aW1hZ2VJZH0uJHtnZXRJbWFnZUV4dGVuc2lvbihpbWFnZVR5cGUpfWA7XG5cbiAgcmV0dXJuIGB1c2Vycy8ke3VzZXJJZH0vJHtkaXJ9LyR7ZmlsZW5hbWV9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcHBJbWFnZVVybCA9ICh7XG4gIGJ1Y2tldCxcbiAgZGlyZWN0b3J5ID0gJ2ltYWdlcycsXG4gIGltYWdlSWQsXG4gIGltYWdlVHlwZSA9ICdqcGcnLFxuICBpc1RodW1iID0gZmFsc2UsXG4gIHR5cGUsXG4gIHR5cGVJZFxufTogSW1hZ2VVcmxEYXRhKTogc3RyaW5nID0+IHtcbiAgaWYoIXR5cGUpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZighaW1hZ2VJZCkge1xuICAgIGlmKGltYWdlVHlwZSA9PT0gJ3BlcnNvbmEnKSB7XG4gICAgICByZXR1cm4gYCR7Q29uZmlnLmdldCgnaW1hZ2UuZGVmYXVsdFVybCcpfS91c2Vyc19iay5qcGdgO1xuICAgIH1cbiAgICByZXR1cm4gYCR7Q29uZmlnLmdldCgnaW1hZ2UuZGVmYXVsdFVybCcpfS91c2Vyc193aC5qcGdgO1xuICB9XG5cbiAgY29uc3QgYnVja2V0TmFtZSA9IGJ1Y2tldCB8fCBDb25maWcuZ2V0KCdpbWFnZS5idWNrZXQnKSB8fCAnZGV2LnJlYWt0b3IuaW8nO1xuICBjb25zdCBpbWFnZU5hbWUgPSBpc1RodW1iID8gYCR7aW1hZ2VJZH0tdGguJHtpbWFnZVR5cGV9YCA6IGAke2ltYWdlSWR9LiR7aW1hZ2VUeXBlID09PSAncGVyc29uYScgfHwgaW1hZ2VUeXBlID09PSAnb3RoZXInID8gJ2pwZycgOiBpbWFnZVR5cGV9YDtcbiAgY29uc3QgaW1hZ2VVcmwgPSBDb25maWcuZ2V0KCdpbWFnZS51cmwnKSB8fCBgaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tLyR7YnVja2V0TmFtZX1gO1xuXG4gIGlmKHR5cGUgPT09ICdhcHBzJykge1xuICAgIHJldHVybiBgJHtpbWFnZVVybH0vJHt0eXBlfS8ke2RpcmVjdG9yeX0vJHtpbWFnZU5hbWV9YDtcbiAgfVxuXG4gIHJldHVybiBgJHtpbWFnZVVybH0vJHt0eXBlfS8ke3R5cGVJZH0vJHtkaXJlY3Rvcnl9LyR7aW1hZ2VOYW1lfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW1hZ2VVcmwgPSBhc3luYyAoe1xuICBidWNrZXQsXG4gIGltYWdlRGlyID0gJ2ltYWdlcycsXG4gIGltYWdlSWQsXG4gIGltYWdlVHlwZSA9ICdqcGcnLFxuICBpc1RodW1iID0gZmFsc2UsXG4gIHR5cGUsXG4gIHR5cGVJZCxcbiAgdXJsVHlwZSA9ICdwdWJsaWMnXG59OiBJbWFnZVVybERhdGEpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBpZighaW1hZ2VJZCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvbnN0IGJ1Y2tldE5hbWUgPSBidWNrZXQgfHwgQ29uZmlnLmdldCgnaW1hZ2UuYnVja2V0JykgfHwgJ2Rldi5yZWFrdG9yLmlvJztcbiAgY29uc3QgY29uZmlndXJlZEltYWdlVXJsID0gU3RyaW5nKENvbmZpZy5nZXQoJ2ltYWdlLnVybCcpIHx8ICcnKTtcbiAgY29uc3QgY29uZmlndXJlZEFwcFVybCA9IFN0cmluZyhDb25maWcuZ2V0KCdhcHAudXJsJykgfHwgJycpO1xuICBjb25zdCBwdWJsaWNCYXNlVXJsID0gY29uZmlndXJlZEFwcFVybFxuICAgID8gYGh0dHBzOi8vYm94LiR7Y29uZmlndXJlZEFwcFVybH1gXG4gICAgOiAoY29uZmlndXJlZEltYWdlVXJsIHx8IGBodHRwczovL3MzLmFtYXpvbmF3cy5jb20vJHtidWNrZXROYW1lfWApO1xuICBjb25zdCBkZXZCYXNlVXJsID0gY29uZmlndXJlZEFwcFVybFxuICAgID8gYGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9kZXYuJHtjb25maWd1cmVkQXBwVXJsfWBcbiAgICA6IChjb25maWd1cmVkSW1hZ2VVcmwgfHwgYGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS8ke2J1Y2tldE5hbWV9YCk7XG5cbiAgLy8gQWx3YXlzIHVzZSBzaWduZWQgVVJMcyBmb3IgdGh1bWJuYWlsc1xuICBpZihpc1RodW1iKSB7XG4gICAgdXJsVHlwZSA9ICdzaWduZWQnO1xuICB9XG5cbiAgY29uc3QgdGh1bWJTdWZmaXggPSBpc1RodW1iID8gJy10aCcgOiAnJztcbiAgY29uc3QgaW1hZ2VLZXkgPSBgJHt0eXBlfS8ke3R5cGVJZH0vJHtpbWFnZURpcn0vJHtpbWFnZUlkfSR7dGh1bWJTdWZmaXh9LiR7aW1hZ2VUeXBlfWA7XG5cbiAgc3dpdGNoKHVybFR5cGUpIHtcbiAgICBjYXNlICdzaWduZWQnOiB7XG4gICAgICByZXR1cm4gYXdhaXQgczNHZXRTaWduZWRVcmwoe0J1Y2tldDogYnVja2V0TmFtZSwgRXhwaXJlczogNjAgKiA2MCwgS2V5OiBpbWFnZUtleX0pO1xuICAgIH1cbiAgICBjYXNlICdwdWJsaWMnOiB7XG4gICAgICByZXR1cm4gYCR7cHVibGljQmFzZVVybH0vJHtpbWFnZUtleX1gO1xuICAgIH1cbiAgICBjYXNlICdkZXYnOiB7XG4gICAgICByZXR1cm4gYCR7ZGV2QmFzZVVybH0vJHtpbWFnZUtleX1gO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVzaXplQW5kU2F2ZUltYWdlID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpbWFnZUlkOiBzdHJpbmcsXG4gIGJ1ZmZlcjogQnVmZmVyLFxuICBmaWxlVHlwZTogc3RyaW5nID0gJ2ltYWdlL2pwZWcnLCBzM09wdGlvbnM/OiBQdXRPYmplY3RDb21tYW5kSW5wdXRcbik6IFByb21pc2U8SW1hZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdyZXNpemVTYXZlSW1hZ2UnO1xuICBjb25zdCB7c2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBpbWdXID0gQ29uZmlnLmdldCgnaW1hZ2UuaW1nU2l6ZScpO1xuICBjb25zdCBpbWdRID0gQ29uZmlnLmdldCgnaW1hZ2UuaW1nUXVhbGl0eScpO1xuICBjb25zdCBmb3JtYXQgPSAoZmlsZVR5cGUuc3BsaXQoJy8nKSlbMV0gfHwgJ2pwZWcnO1xuICBjb25zdCBzaGFycEZvcm1hdCA9IG5vcm1hbGl6ZUltYWdlRm9ybWF0KGZvcm1hdCk7XG4gIGxldCBpbWFnZU9wdGltaXplZEJ1ZmZlcjogQnVmZmVyID0gYnVmZmVyO1xuICBsZXQgdGh1bWJPcHRpbWl6ZWRCdWZmZXI6IEJ1ZmZlciA9IGJ1ZmZlcjtcbiAgbGV0IGltYWdlSWRlbnRpdHk6IEltYWdlVHlwZSA9IHtcbiAgICBmaWxlU2l6ZTogYnVmZmVyLmxlbmd0aCxcbiAgICBmaWxlVHlwZTogZm9ybWF0LFxuICAgIGltYWdlSWRcbiAgfTtcblxuICB0cnkge1xuICAgIGltYWdlT3B0aW1pemVkQnVmZmVyID0gYXdhaXQgc2hhcnAoYnVmZmVyKVxuICAgICAgLnJvdGF0ZSgpXG4gICAgICAucmVzaXplKHtcbiAgICAgICAgZml0OiAnaW5zaWRlJyxcbiAgICAgICAgaGVpZ2h0OiBpbWdXLFxuICAgICAgICB3aWR0aDogaW1nVyxcbiAgICAgICAgd2l0aG91dEVubGFyZ2VtZW50OiB0cnVlXG4gICAgICB9KVxuICAgICAgLnRvRm9ybWF0KHNoYXJwRm9ybWF0LCB7cXVhbGl0eTogaW1nUX0pXG4gICAgICAudG9CdWZmZXIoKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHJldHVybiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHBhcmFtczoge2ZpbGVUeXBlLCBpbWFnZUlkfSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklNQUdFX1NBVkVcbiAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGltYWdlT2JqOiBQdXRPYmplY3RDb21tYW5kSW5wdXQgPSB7XG4gICAgICBCb2R5OiBpbWFnZU9wdGltaXplZEJ1ZmZlcixcbiAgICAgIEJ1Y2tldDogbnVsbCxcbiAgICAgIENvbnRlbnRUeXBlOiBmaWxlVHlwZSxcbiAgICAgIC4uLihzM09wdGlvbnMgfHwge30pLFxuICAgICAgS2V5OiBnZXRVc2VySW1hZ2VQYXRoKHNlc3Npb25JZCwgaW1hZ2VJZCwgZmlsZVR5cGUsICdpbWFnZXMnKVxuICAgIH07XG4gICAgYXdhaXQgczNQdXQoaW1hZ2VPYmopO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7ZmlsZVR5cGUsIGltYWdlSWR9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuSU1BR0VfU0FWRVxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgW2ltYWdlTWV0YWRhdGEsIGltYWdlU3RhdHMsIHNvdXJjZU1ldGFkYXRhXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHNoYXJwKGltYWdlT3B0aW1pemVkQnVmZmVyKS5tZXRhZGF0YSgpLFxuICAgICAgc2hhcnAoaW1hZ2VPcHRpbWl6ZWRCdWZmZXIpLnN0YXRzKCksXG4gICAgICBzaGFycChidWZmZXIpLm1ldGFkYXRhKClcbiAgICBdKTtcbiAgICBjb25zdCB7YiwgZywgcn0gPSBpbWFnZVN0YXRzLmRvbWluYW50O1xuICAgIGNvbnN0IGNvbG9yID0gW3IsIGcsIGJdLm1hcCgodmFsdWUpID0+IHZhbHVlLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKTtcbiAgICBjb25zdCBleGlmTWV0YWRhdGEgPSBpbWFnZUV4aWZNZXRhZGF0YShzb3VyY2VNZXRhZGF0YS5leGlmKTtcblxuICAgIGltYWdlSWRlbnRpdHkgPSB7XG4gICAgICBjb2xvcixcbiAgICAgIGZpbGVTaXplOiBpbWFnZU9wdGltaXplZEJ1ZmZlci5sZW5ndGgsXG4gICAgICBmaWxlVHlwZTogZm9ybWF0LFxuICAgICAgaGVpZ2h0OiBpbWFnZU1ldGFkYXRhLmhlaWdodCB8fCAwLFxuICAgICAgaW1hZ2VJZCxcbiAgICAgIC4uLmV4aWZNZXRhZGF0YSxcbiAgICAgIG9yaWVudGF0aW9uOiBpbWFnZU1ldGFkYXRhLm9yaWVudGF0aW9uID8gU3RyaW5nKGltYWdlTWV0YWRhdGEub3JpZW50YXRpb24pIDogdW5kZWZpbmVkLFxuICAgICAgcXVhbGl0eTogaW1nUSxcbiAgICAgIHJlc29sdXRpb246IGltYWdlTWV0YWRhdGEuZGVuc2l0eSA/IGAke2ltYWdlTWV0YWRhdGEuZGVuc2l0eX0gcHBpYCA6IHVuZGVmaW5lZCxcbiAgICAgIHdpZHRoOiBpbWFnZU1ldGFkYXRhLndpZHRoIHx8IDBcbiAgICB9O1xuXG4gICAgY29uc3QgdGhtVyA9IENvbmZpZy5nZXQoJ2ltYWdlLnRobVNpemUnKTtcbiAgICBjb25zdCB0aG1RID0gQ29uZmlnLmdldCgnaW1hZ2UudGhtUXVhbGl0eScpO1xuICAgIHRodW1iT3B0aW1pemVkQnVmZmVyID0gYXdhaXQgc2hhcnAoaW1hZ2VPcHRpbWl6ZWRCdWZmZXIpXG4gICAgICAucmVzaXplKHtcbiAgICAgICAgZml0OiAnY292ZXInLFxuICAgICAgICBoZWlnaHQ6IHRobVcsXG4gICAgICAgIHBvc2l0aW9uOiAnY2VudHJlJyxcbiAgICAgICAgd2lkdGg6IHRobVdcbiAgICAgIH0pXG4gICAgICAudG9Gb3JtYXQoc2hhcnBGb3JtYXQsIHtxdWFsaXR5OiB0aG1RfSlcbiAgICAgIC50b0J1ZmZlcigpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7ZmlsZVR5cGUsIGltYWdlSWR9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuSU1BR0VfU0FWRVxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgdGh1bWJPYmo6IFB1dE9iamVjdENvbW1hbmRJbnB1dCA9IHtcbiAgICAgIEJvZHk6IHRodW1iT3B0aW1pemVkQnVmZmVyLFxuICAgICAgQnVja2V0OiBudWxsLFxuICAgICAgQ29udGVudFR5cGU6IGZpbGVUeXBlLFxuICAgICAgLi4uKHMzT3B0aW9ucyB8fCB7fSksXG4gICAgICBLZXk6IGdldFVzZXJJbWFnZVBhdGgoc2Vzc2lvbklkLCBpbWFnZUlkLCBmaWxlVHlwZSwgJ3RodW1icycpXG4gICAgfTtcbiAgICBhd2FpdCBzM1B1dCh0aHVtYk9iaik7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTUFHRV9TQVZFXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGltYWdlSWRlbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkSW1hZ2UgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGltYWdlOiBJbWFnZVR5cGUsXG4gIHMzT3B0aW9ucz86IFB1dE9iamVjdENvbW1hbmRJbnB1dFxuKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZEltYWdlJztcbiAgY29uc3Qge3Nlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge2ltYWdlSWQsIGRlc2NyaXB0aW9uLCBidWZmZXIsIGZpbGVUeXBlLCBpdGVtSWQsIGl0ZW1UeXBlLCBwcml2YWN5ID0gJ3B1YmxpYyd9ID0gaW1hZ2U7XG5cbiAgcmV0dXJuIHJlc2l6ZUFuZFNhdmVJbWFnZShjb250ZXh0LCBpbWFnZUlkLCBidWZmZXIsIGZpbGVUeXBlLCBzM09wdGlvbnMpXG4gICAgLnRoZW4oKHJlc2l6ZWRJbWFnZTogSW1hZ2VUeXBlKSA9PiB7XG4gICAgICBjb25zdCBpbnNlcnQ6IEltYWdlVHlwZSA9IHtcbiAgICAgICAgLi4ucmVzaXplZEltYWdlLFxuICAgICAgICBfa2V5OiBpbWFnZUlkLFxuICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgZmlsZVR5cGUsXG4gICAgICAgIHByaXZhY3k6IG5vcm1hbGl6ZUltYWdlUHJpdmFjeShwcml2YWN5KSxcbiAgICAgICAgdXNlcklkOiBzZXNzaW9uSWRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhZGRJdGVtPEltYWdlVHlwZT4oY29udGV4dCwgJ2ltYWdlcycsIGluc2VydClcbiAgICAgICAgLnRoZW4oKHNhdmVkSW1hZ2U6IEltYWdlVHlwZSkgPT4gYWRkSW1hZ2VFZGdlKGNvbnRleHQsIHtcbiAgICAgICAgICBpbWFnZUlkLFxuICAgICAgICAgIGl0ZW1JZDogaXRlbUlkIHx8IHNlc3Npb25JZCxcbiAgICAgICAgICBpdGVtVHlwZTogcGFyc2VTdHJpbmcoaXRlbVR5cGUgfHwgJ3VzZXJzJywgMzIpLnRvTG93ZXJDYXNlKCkgYXMgQXJhbmdvRGJDb2xsZWN0aW9uLFxuICAgICAgICAgIHR5cGU6ICdpbWFnZSdcbiAgICAgICAgfSkudGhlbigoKSA9PiBzYXZlZEltYWdlKSk7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTUFHRV9SRVNJWkVcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZEltYWdlRWRnZSA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBpbWFnZUVkZ2U6IEltYWdlRWRnZVR5cGUpOiBQcm9taXNlPG9iamVjdD4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkSW1hZ2VFZGdlJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7aW1hZ2VJZCwgaXRlbUlkLCBpdGVtVHlwZX0gPSBpbWFnZUVkZ2U7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IGVkZ2VJZCA9IGNyZWF0ZUhhc2goYGhhc01lZGlhLWltYWdlLSR7aW1hZ2VJZH0tJHtpdGVtSWR9LSR7c2Vzc2lvbklkfWApO1xuICBjb25zdCBmb3JtYXRJdGVtVHlwZTogQXJhbmdvRGJDb2xsZWN0aW9uID0gcGFyc2VDaGFyKGl0ZW1UeXBlKS50b0xvd2VyQ2FzZSgpIGFzIEFyYW5nb0RiQ29sbGVjdGlvbjtcbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VJZChpdGVtSWQpO1xuICBjb25zdCBpdGVtRG9jSWQgPSBnZXREb2NJZChmb3JtYXRJdGVtVHlwZSwge19rZXk6IGZvcm1hdEl0ZW1JZH0pO1xuICBjb25zdCBmb3JtYXRJbWFnZUlkID0gcGFyc2VJZChpbWFnZUlkKTtcbiAgY29uc3QgZmlsZURvY0lkID0gYGltYWdlcy8ke2Zvcm1hdEltYWdlSWR9YDtcblxuICBjb25zdCBlZGdlOiBJbWFnZUVkZ2VUeXBlID0ge1xuICAgIF9mcm9tOiBpdGVtRG9jSWQsXG4gICAgX2tleTogZWRnZUlkLFxuICAgIF90bzogZmlsZURvY0lkLFxuICAgIGFkZGVkOiBub3csXG4gICAgaXRlbVR5cGUsXG4gICAgdHlwZTogJ2ltYWdlJ1xuICB9O1xuXG4gIGlmKGl0ZW1Eb2NJZCkge1xuICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLmNvbGxlY3Rpb24oRURHRVMuSEFTX01FRElBKS5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KVxuICAgICAgLnRoZW4oKGZpbGVFZGdlKSA9PiB1c2VEYihkYXRhYmFzZU5hbWUpLmNvbGxlY3Rpb24oRURHRVMuSEFTX01FRElBKS5kb2N1bWVudChmaWxlRWRnZSkpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBlZGdlLFxuICAgICAgICAgIGZpbGVEb2NJZCxcbiAgICAgICAgICBpbWFnZUlkLFxuICAgICAgICAgIGl0ZW1Eb2NJZCxcbiAgICAgICAgICBpdGVtSWQsXG4gICAgICAgICAgaXRlbVR5cGVcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVJbWFnZSA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaW1hZ2U6IEltYWdlVHlwZSxcbiAgczNPcHRpb25zPzogUHV0T2JqZWN0Q29tbWFuZElucHV0XG4pOiBQcm9taXNlPEltYWdlVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAndXBkYXRlSW1hZ2UnO1xuICBjb25zdCB7c2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgYmFzZTY0ID0gJycsXG4gICAgYnVmZmVyOiBpbWFnZUJ1ZmZlcixcbiAgICBkZXNjcmlwdGlvbixcbiAgICBpbWFnZUlkLFxuICAgIGl0ZW1JZCxcbiAgICBpdGVtVHlwZSxcbiAgICBmaWxlVHlwZSxcbiAgICBwcml2YWN5LFxuICAgIHVybCA9ICcnXG4gIH0gPSBpbWFnZTtcblxuICBjb25zdCBmb3JtYXRJbWFnZUlkID0gaW1hZ2VJZCB8fCBjcmVhdGVIYXNoKGBpbWFnZS0ke3Nlc3Npb25JZH1gKTtcbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VJZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRJdGVtVHlwZTogQXJhbmdvRGJDb2xsZWN0aW9uID0gcGFyc2VDaGFyKGl0ZW1UeXBlLCAxNikudG9Mb3dlckNhc2UoKSBhcyBBcmFuZ29EYkNvbGxlY3Rpb247XG4gIGNvbnN0IGN1c3RvbVBhcmFtczogSW1hZ2VUeXBlID0ge1xuICAgIGRlc2NyaXB0aW9uLFxuICAgIGltYWdlSWQ6IGZvcm1hdEltYWdlSWQsXG4gICAgcHJpdmFjeTogbm9ybWFsaXplSW1hZ2VQcml2YWN5KHByaXZhY3kpLFxuICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gIH07XG5cbiAgaWYoYmFzZTY0IHx8IGltYWdlQnVmZmVyKSB7XG4gICAgbGV0IGJ1ZmZlcjogQnVmZmVyID0gaW1hZ2VCdWZmZXI7XG5cbiAgICBpZihiYXNlNjQpIHtcbiAgICAgIGNvbnN0IGZvcm1hdEJhc2U2NCA9IGJhc2U2NC5zdWJzdHIoYmFzZTY0LmluZGV4T2YoJywnKSArIDEpO1xuICAgICAgYnVmZmVyID0gQnVmZmVyLmZyb20oZm9ybWF0QmFzZTY0LCAnYmFzZTY0Jyk7XG4gICAgfVxuXG4gICAgbGV0IHVwZGF0ZWRGaWxlVHlwZSA9IGZpbGVUeXBlO1xuXG4gICAgaWYoIWZpbGVUeXBlKSB7XG4gICAgICBjb25zdCB7ZmlsZVR5cGVGcm9tQnVmZmVyfSA9IGF3YWl0IGltcG9ydCgnZmlsZS10eXBlJyk7XG4gICAgICBjb25zdCB7bWltZX0gPSBhd2FpdCBmaWxlVHlwZUZyb21CdWZmZXIoYnVmZmVyKTtcbiAgICAgIHVwZGF0ZWRGaWxlVHlwZSA9IG1pbWU7XG4gICAgfVxuXG4gICAgY29uc3QgaW1nUGFyYW1zOiBJbWFnZVR5cGUgPSB7XG4gICAgICAuLi5jdXN0b21QYXJhbXMsXG4gICAgICBidWZmZXIsXG4gICAgICBmaWxlVHlwZTogdXBkYXRlZEZpbGVUeXBlXG4gICAgfTtcblxuICAgIHJldHVybiBhZGRJbWFnZShjb250ZXh0LCBpbWdQYXJhbXMsIHMzT3B0aW9ucylcbiAgICAgIC50aGVuKChpbWFnZTogSW1hZ2VUeXBlKSA9PiB7XG4gICAgICAgIGlmKGZvcm1hdEl0ZW1JZCAmJiBmb3JtYXRJdGVtVHlwZSkge1xuICAgICAgICAgIGNvbnN0IGltYWdlRWRnZTogSW1hZ2VFZGdlVHlwZSA9IHtcbiAgICAgICAgICAgIGltYWdlSWQ6IGZvcm1hdEltYWdlSWQsXG4gICAgICAgICAgICBpdGVtSWQ6IGZvcm1hdEl0ZW1JZCxcbiAgICAgICAgICAgIGl0ZW1UeXBlOiBmb3JtYXRJdGVtVHlwZSxcbiAgICAgICAgICAgIHR5cGU6ICdpbWFnZSdcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBhZGRJbWFnZUVkZ2UoY29udGV4dCwgaW1hZ2VFZGdlKS50aGVuKCgpID0+IGltYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbWFnZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklNQUdFX1NBVkVcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG4gIH0gZWxzZSBpZih1cmwgIT09ICcnKSB7XG4gICAgbGV0IGNvbnRlbnRUeXBlO1xuXG4gICAgcmV0dXJuIGh0dHBHZXQodXJsKVxuICAgICAgLnRoZW4oKHJlczogSHR0cFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmKHJlcy5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTUFHRV9SRVFVRVNUXG4gICAgICAgICAgfSwgY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZW50VHlwZSA9IHJlcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJyk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pXG4gICAgICAudGhlbigocmVzKSA9PiAocmVzIGFzIEh0dHBSZXNwb25zZSkuYnVmZmVyKCkpXG4gICAgICAudGhlbigoYnVmZmVyOiBCdWZmZXIpID0+IHtcbiAgICAgICAgY29uc3QgaW1nUGFyYW1zOiBJbWFnZVR5cGUgPSB7XG4gICAgICAgICAgLi4uY3VzdG9tUGFyYW1zLFxuICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICBmaWxlVHlwZTogY29udGVudFR5cGVcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gYWRkSW1hZ2UoY29udGV4dCwgaW1nUGFyYW1zLCBzM09wdGlvbnMpXG4gICAgICAgICAgLnRoZW4oKGltYWdlOiBJbWFnZVR5cGUpID0+IHtcbiAgICAgICAgICAgIGlmKGZvcm1hdEl0ZW1JZCAmJiBmb3JtYXRJdGVtVHlwZSkge1xuICAgICAgICAgICAgICBjb25zdCBpbWFnZUVkZ2U6IEltYWdlRWRnZVR5cGUgPSB7aW1hZ2VJZDogZm9ybWF0SW1hZ2VJZCwgaXRlbUlkOiBmb3JtYXRJdGVtSWQsIGl0ZW1UeXBlOiBmb3JtYXRJdGVtVHlwZSwgdHlwZTogJ2ltYWdlJ307XG4gICAgICAgICAgICAgIHJldHVybiBhZGRJbWFnZUVkZ2UoY29udGV4dCwgaW1hZ2VFZGdlKS50aGVuKCgpID0+IGltYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGltYWdlO1xuICAgICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHZhbHVlOiAnZmV0Y2hfZXJyb3InXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuICB9IGVsc2UgaWYoaW1hZ2VJZCkge1xuICAgIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICAgIC4uLihkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkID8ge2Rlc2NyaXB0aW9ufSA6IHt9KSxcbiAgICAgIC4uLihwcml2YWN5ICE9PSB1bmRlZmluZWQgPyB7cHJpdmFjeTogbm9ybWFsaXplSW1hZ2VQcml2YWN5KHByaXZhY3kpfSA6IHt9KVxuICAgIH07XG5cbiAgICByZXR1cm4gdXBkYXRlSXRlbTxJbWFnZVR5cGU+KGNvbnRleHQsICdpbWFnZXMnLCBmb3JtYXRJbWFnZUlkLCB1cGRhdGUpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlSW1hZ2UgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgaW1hZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2RlbGV0ZSc7XG4gIGNvbnN0IHtzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEltYWdlSWQgPSBwYXJzZUlkKGltYWdlSWQpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgaW1hZ2UgPSBhd2FpdCBkZWxldGVJdGVtPEltYWdlVHlwZT4oY29udGV4dCwgJ2ltYWdlcycsIGZvcm1hdEltYWdlSWQsIHtcbiAgICAgIGNhc2NhZGU6IFtFREdFUy5IQVNfTUVESUFdLFxuICAgICAgb3duZXJzaGlwOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZighaW1hZ2UpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIERlbGV0ZSBTMyBmaWxlc1xuICAgIGNvbnN0IHtfa2V5OiBpbWFnZUtleX0gPSBpbWFnZTtcbiAgICBjb25zdCBwYXJhbXM6IERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQgPSB7XG4gICAgICBCdWNrZXQ6IG51bGwsXG4gICAgICBEZWxldGU6IHtcbiAgICAgICAgT2JqZWN0czogW1xuICAgICAgICAgIHtLZXk6IGB1c2Vycy8ke3Nlc3Npb25JZH0vaW1hZ2VzLyR7aW1hZ2VLZXl9LmpwZ2B9LFxuICAgICAgICAgIHtLZXk6IGB1c2Vycy8ke3Nlc3Npb25JZH0vdGh1bWJzLyR7aW1hZ2VLZXl9LmpwZ2B9XG4gICAgICAgIF0sXG4gICAgICAgIFF1aWV0OiB0cnVlXG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBzM0RlbGV0ZUxpc3QocGFyYW1zKS50aGVuKCgpID0+IGltYWdlKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHJldHVybiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHBhcmFtczoge2ltYWdlSWR9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiZ2V0IiwiaHR0cEdldCIsInBhcnNlTnVtIiwiY3JlYXRlSGFzaCIsInBhcnNlQXJhbmdvSWQiLCJwYXJzZUNoYXIiLCJwYXJzZUlkIiwicGFyc2VTdHJpbmciLCJhcWwiLCJsaXRlcmFsIiwiZXhpZlJlYWRlciIsInNoYXJwIiwiQ29uZmlnIiwiQ09MTEVDVElPTlMiLCJFREdFUyIsIkVycm9yVHlwZXMiLCJsb2dFcnJvciIsImxvZ0V4Y2VwdGlvbiIsImdldERvY0lkIiwiZ2V0TGltaXQiLCJzZWxlY3RSZWFjdGlvbkNvdW50QnlUeXBlIiwidXNlRGIiLCJnZXRJbWFnZUV4dGVuc2lvbiIsImFkZEl0ZW0iLCJkZWxldGVJdGVtIiwiZ2V0SXRlbUJ5IiwiZ2V0TGlzdEJ5IiwidXBkYXRlSXRlbSIsImdldEdyb3VwRGV0YWlscyIsImlzR3JvdXBlZCIsImdldFBlcnNvbmFSZWxhdGlvbnNoaXBTdGF0ZSIsInMzRGVsZXRlTGlzdCIsInMzR2V0U2lnbmVkVXJsIiwiczNQdXQiLCJoYXNTdWJzY3JpcHRpb25Ub0l0ZW0iLCJldmVudENhdGVnb3J5IiwiaGFzUmVhY3Rpb25Db2xsZWN0aW9uIiwiSEFTX1JFQUNUSU9OIiwiaGFzTWVkaWFDb2xsZWN0aW9uIiwiSEFTX01FRElBIiwicGVyc29uYXNDb2xsZWN0aW9uIiwiUEVSU09OQVMiLCJNRURJQV9JVEVNX0NPTExFQ1RJT05TIiwiVVNFUlMiLCJQT1NUUyIsIkdST1VQUyIsImdldE1lZGlhSXRlbURvY0lkcyIsIml0ZW1JZCIsIml0ZW1UeXBlIiwiZG9jSWQiLCJpdGVtS2V5IiwiaW5jbHVkZXMiLCJtYXAiLCJjb2xsZWN0aW9uIiwibm9ybWFsaXplSW1hZ2VGb3JtYXQiLCJmb3JtYXQiLCJpbWFnZUV4aWZNZXRhZGF0YSIsImV4aWYiLCJtZXRhZGF0YSIsInRha2VuIiwiUGhvdG8iLCJEYXRlVGltZU9yaWdpbmFsIiwibWFrZSIsIkltYWdlIiwiTWFrZSIsIm1vZGVsIiwiTW9kZWwiLCJEYXRlIiwiZ2V0VGltZSIsInVuZGVmaW5lZCIsIm5vcm1hbGl6ZUltYWdlUHJpdmFjeSIsInByaXZhY3kiLCJTdHJpbmciLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJjYW5WaWV3SW1hZ2UiLCJpbWFnZSIsInZpZXdlclVzZXJJZCIsImFjY2VzcyIsImlzT3duZXIiLCJ1c2VySWQiLCJjYW5WaWV3RnJpZW5kcyIsImNhblZpZXdWaXAiLCJwYXJzZUltYWdlT3B0aW9ucyIsIm9wdGlvbnMiLCJmcm9tIiwidG8iLCJ0eXBlIiwibGltaXQiLCJnZXRJbWFnZU9wdGlvbmFsRmllbGRzIiwiZmllbGRzIiwicmVkdWNlIiwic2VsZWN0cyIsImZpZWxkIiwicXVlcmllcyIsInB1c2giLCJvYmplY3RzIiwiZ2V0SW1hZ2VMaXN0QnlVc2VyIiwiY29udGV4dCIsImFjdGlvbiIsImZvcm1hdFVzZXJJZCIsInNvcnQiLCJkaXJlY3Rpb24iLCJjdXN0b21RdWVyaWVzIiwiY3VzdG9tT2JqZWN0cyIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsInBhcmFtcyIsInZhbHVlIiwiREFUQUJBU0VfRVJST1IiLCJnZXRJbWFnZUNvdW50QnlJdGVtIiwiZGF0YWJhc2VOYW1lIiwiaXRlbURvY0lkcyIsImFxbFFyeSIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsIm5leHQiLCJjb3VudCIsImdldEltYWdlTGlzdEJ5SXRlbSIsInNlc3Npb24iLCJzZXNzaW9uVXNlcklkIiwiZm9ybWF0SXRlbVR5cGUiLCJzZWxlY3RPYmplY3RzIiwic2VsZWN0UXVlcmllcyIsImpvaW4iLCJsZW5ndGgiLCJsaXN0IiwiYWxsIiwib3duZXJVc2VySWQiLCJmaWx0ZXIiLCJtZWRpYUl0ZW1LZXkiLCJfbWVkaWFJdGVtS2V5IiwibWVkaWFJdGVtVHlwZSIsIl9tZWRpYUl0ZW1UeXBlIiwicmVsYXRpb25zaGlwIiwiaXNGcmllbmQiLCJnZXRJbWFnZUxpc3RCeUdyb3VwIiwic2Vzc2lvbklkIiwiZmlsdGVycyIsImdyb3VwSWQiLCJmb3JtYXRHcm91cElkIiwiY29uZGl0aW9uYWwiLCJuYW1lIiwiZm9ybWF0Q29uZCIsImdyb3VwIiwiZmlsdGVyU3RyIiwiZ3JvdXBlZCIsImlzVmFsaWQiLCJmaWx0ZXJMaXN0IiwiZ2V0SW1hZ2VMaXN0QnlSZWFjdGlvbnMiLCJyZWFjdGlvbnMiLCJmb3JtYXRTZXNzaW9uSWQiLCJmb3JtYXRSZWFjdGlvbnMiLCJyZWFjdGlvbk5hbWUiLCJmaWx0ZXJCeSIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRQZXJzb25hRG9jSWQiLCJwZXJzb25hSWQiLCJwZXJzb25hRG9jSWQiLCJwZXJzb25hS2V5IiwiZ2V0SW1hZ2VMaXN0QnlQZXJzb25hUmVhY3Rpb25zIiwic2Vzc2lvblBlcnNvbmFJZCIsInJlYWN0aW9uTmFtZXMiLCJBcnJheSIsImlzQXJyYXkiLCJCb29sZWFuIiwiZ2V0SW1hZ2VCeUlkIiwiaW1hZ2VJZCIsImZvcm1hdEltYWdlSWQiLCJvcGVyYXRvciIsImdldFVzZXJJbWFnZVBhdGgiLCJpbWFnZVR5cGUiLCJkaXIiLCJmaWxlbmFtZSIsImdldEFwcEltYWdlVXJsIiwiYnVja2V0IiwiZGlyZWN0b3J5IiwiaXNUaHVtYiIsInR5cGVJZCIsImJ1Y2tldE5hbWUiLCJpbWFnZU5hbWUiLCJpbWFnZVVybCIsImdldEltYWdlVXJsIiwiaW1hZ2VEaXIiLCJ1cmxUeXBlIiwiY29uZmlndXJlZEltYWdlVXJsIiwiY29uZmlndXJlZEFwcFVybCIsInB1YmxpY0Jhc2VVcmwiLCJkZXZCYXNlVXJsIiwidGh1bWJTdWZmaXgiLCJpbWFnZUtleSIsIkJ1Y2tldCIsIkV4cGlyZXMiLCJLZXkiLCJyZXNpemVBbmRTYXZlSW1hZ2UiLCJidWZmZXIiLCJmaWxlVHlwZSIsInMzT3B0aW9ucyIsImltZ1ciLCJpbWdRIiwic3BsaXQiLCJzaGFycEZvcm1hdCIsImltYWdlT3B0aW1pemVkQnVmZmVyIiwidGh1bWJPcHRpbWl6ZWRCdWZmZXIiLCJpbWFnZUlkZW50aXR5IiwiZmlsZVNpemUiLCJyb3RhdGUiLCJyZXNpemUiLCJmaXQiLCJoZWlnaHQiLCJ3aWR0aCIsIndpdGhvdXRFbmxhcmdlbWVudCIsInRvRm9ybWF0IiwicXVhbGl0eSIsInRvQnVmZmVyIiwiSU1BR0VfU0FWRSIsImltYWdlT2JqIiwiQm9keSIsIkNvbnRlbnRUeXBlIiwiaW1hZ2VNZXRhZGF0YSIsImltYWdlU3RhdHMiLCJzb3VyY2VNZXRhZGF0YSIsIlByb21pc2UiLCJzdGF0cyIsImIiLCJnIiwiciIsImRvbWluYW50IiwiY29sb3IiLCJ0b1N0cmluZyIsInBhZFN0YXJ0IiwiZXhpZk1ldGFkYXRhIiwib3JpZW50YXRpb24iLCJyZXNvbHV0aW9uIiwiZGVuc2l0eSIsInRobVciLCJ0aG1RIiwicG9zaXRpb24iLCJ0aHVtYk9iaiIsImFkZEltYWdlIiwiZGVzY3JpcHRpb24iLCJyZXNpemVkSW1hZ2UiLCJpbnNlcnQiLCJfa2V5Iiwic2F2ZWRJbWFnZSIsImFkZEltYWdlRWRnZSIsIklNQUdFX1JFU0laRSIsImltYWdlRWRnZSIsIm5vdyIsImVkZ2VJZCIsImZvcm1hdEl0ZW1JZCIsIml0ZW1Eb2NJZCIsImZpbGVEb2NJZCIsImVkZ2UiLCJfZnJvbSIsIl90byIsImFkZGVkIiwic2F2ZSIsInJldHVybk5ldyIsImZpbGVFZGdlIiwiZG9jdW1lbnQiLCJ1cGRhdGVJbWFnZSIsImJhc2U2NCIsImltYWdlQnVmZmVyIiwidXJsIiwiY3VzdG9tUGFyYW1zIiwiZm9ybWF0QmFzZTY0Iiwic3Vic3RyIiwiaW5kZXhPZiIsIkJ1ZmZlciIsInVwZGF0ZWRGaWxlVHlwZSIsImZpbGVUeXBlRnJvbUJ1ZmZlciIsIm1pbWUiLCJpbWdQYXJhbXMiLCJjb250ZW50VHlwZSIsInJlcyIsInN0YXR1cyIsIklNQUdFX1JFUVVFU1QiLCJoZWFkZXJzIiwidXBkYXRlIiwiZGVsZXRlSW1hZ2UiLCJjYXNjYWRlIiwib3duZXJzaGlwIiwiRGVsZXRlIiwiT2JqZWN0cyIsIlF1aWV0Il0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FFRCxTQUFRQSxPQUFPQyxPQUFPLFFBQU8sb0JBQW9CO0FBQ2pELFNBQVFDLFFBQVEsUUFBTywrQkFBK0I7QUFDdEQsU0FBUUMsVUFBVSxFQUFFQyxhQUFhLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxXQUFXLFFBQU8sK0JBQStCO0FBQ3hHLFNBQVFDLEdBQUcsUUFBTyxXQUFXO0FBQzdCLFNBQWtCQyxPQUFPLFFBQU8sZUFBZTtBQUMvQyxPQUFPQyxnQkFBZ0IsY0FBYztBQUNyQyxPQUFPQyxXQUFXLFFBQVE7QUFFMUIsU0FBUUMsTUFBTSxRQUFPLGVBQWU7QUFDcEMsU0FBUUMsV0FBVyxFQUFFQyxLQUFLLFFBQU8sOEJBQThCO0FBQy9ELFNBQVFDLFVBQVUsUUFBTywwQkFBMEI7QUFDbkQsU0FBUUMsUUFBUSxFQUFFQyxZQUFZ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
|
package/lib/actions/index.js
CHANGED
|
@@ -30,4 +30,4 @@ export * from './tags.js';
|
|
|
30
30
|
export * from './users.js';
|
|
31
31
|
export * from './videos.js';
|
|
32
32
|
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vYXBwcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FuYWx5dGljcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2Nvbm5lY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29udmVyc2F0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NybS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2R5bmFtb2RiLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZW1haWwuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZsYWdzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZ3JvdXBzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2VzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vaW9zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYXRpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGF5bWVudHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9wb3N0cy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3BlcnNvbmFzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcmVhY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcnVtLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vczMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2guanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zbXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0aXN0aWNzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vc3Vic2NyaXB0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3RhZ3MuanMnO1xuZXhwb3J0ICogZnJvbSAnLi91c2Vycy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZGVvcy5qcyc7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsY0FBYyxZQUFZO0FBQzFCLGNBQWMsaUJBQWlCO0FBQy9CLGNBQWMsbUJBQW1CO0FBQ2pDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsV0FBVztBQUN6QixjQUFjLGdCQUFnQjtBQUM5QixjQUFjLGFBQWE7QUFDM0IsY0FBYyxhQUFhO0FBQzNCLGNBQWMsYUFBYTtBQUMzQixjQUFjLGNBQWM7QUFDNUIsY0FBYyxjQUFjO0FBQzVCLGNBQWMsV0FBVztBQUN6QixjQUFjLGlCQUFpQjtBQUMvQixjQUFjLGdCQUFnQjtBQUM5QixjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLGdCQUFnQjtBQUM5QixjQUFjLGFBQWE7QUFDM0IsY0FBYyxnQkFBZ0I7QUFDOUIsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxXQUFXO0FBQ3pCLGNBQWMsVUFBVTtBQUN4QixjQUFjLGNBQWM7QUFDNUIsY0FBYyxXQUFXO0FBQ3pCLGNBQWMsa0JBQWtCO0FBQ2hDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsWUFBWTtBQUMxQixjQUFjLGFBQWE7QUFDM0IsY0FBYyxjQUFjIn0=
|
package/lib/actions/ios.js
CHANGED
|
@@ -227,4 +227,4 @@ export const getIosInApp = (context)=>{
|
|
|
227
227
|
}, error, context).then(()=>null));
|
|
228
228
|
};
|
|
229
229
|
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC9ubGFicy1yZWFrdG9yLXJlbGVhc2UuZU1RNVNoL2NoZWNrb3V0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvaW9zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlSGFzaH0gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtcbiAgUGF5bWVudElPU0luQXBwRXJyb3IsXG4gIFBheW1lbnRJT1NTdWJzY3JpcHRpb25JbmZvLFxuICBQYXltZW50SU9TU3Vic2NyaXB0aW9uVXBkYXRlLFxuICBQYXltZW50U3Vic2NyaXB0aW9uXG59IGZyb20gJy4uL3R5cGVzL3BheW1lbnRzLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5ID0gJ2lvcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRJb3NJbkFwcEVycm9yID0gKHN0YXR1c0NvZGU6IHN0cmluZyk6IFBheW1lbnRJT1NJbkFwcEVycm9yID0+IHtcbiAgY29uc3QgY29kZXMgPSB7XG4gICAgWzBdOiB7ZXJyb3I6IGZhbHNlLCBtZXNzYWdlOiAnQWN0aXZlJywgdmFsaWQ6IHRydWV9LFxuICAgIFsyMTAwMF06IHtlcnJvcjogdHJ1ZSwgaWQ6ICdwYXltZW50X3JlY2VpcHRfdW5yZWFkYWJsZScsIG1lc3NhZ2U6ICdBcHAgc3RvcmUgY291bGQgbm90IHJlYWQnLCB2YWxpZDogZmFsc2V9LFxuICAgIFsyMTAwMl06IHtlcnJvcjogdHJ1ZSwgaWQ6ICdwYXltZW50X2RhdGFfbWFsZm9ybWVkJywgbWVzc2FnZTogJ0RhdGEgd2FzIG1hbGZvcm1lZCcsIHZhbGlkOiBmYWxzZX0sXG4gICAgWzIxMDAzXToge2Vycm9yOiB0cnVlLCBpZDogJ3BheW1lbnRfcmVjZWlwdF91bmF1dGhvcml6ZWQnLCBtZXNzYWdlOiAnUmVjZWlwdCBub3QgYXV0aGVudGljYXRlZCcsIHZhbGlkOiBmYWxzZX0sXG4gICAgWzIxMDA0XToge2Vycm9yOiB0cnVlLCBpZDogJ3BheW1lbnRfaW52YWxpZF9zZWNyZXQnLCBtZXNzYWdlOiAnU2hhcmVkIHNlY3JldCBkb2VzIG5vdCBtYXRjaCcsIHZhbGlkOiBmYWxzZX0sXG4gICAgWzIxMDA1XToge2Vycm9yOiB0cnVlLCBpZDogJ3BheW1lbnRfc2VydmVyX3VuYXZhaWxhYmxlJywgbWVzc2FnZTogJ1JlY2VpcHQgc2VydmVyIHVuYXZhaWxhYmxlJywgdmFsaWQ6IGZhbHNlfSxcbiAgICBbMjEwMDZdOiB7XG4gICAgICBlcnJvcjogZmFsc2UsXG4gICAgICBpZDogJ3BheW1lbnRfc3Vic2NyaXB0aW9uX2V4cGlyZWQnLFxuICAgICAgbWVzc2FnZTogJ1JlY2VpcHQgdmFsaWQgYnV0IHN1YiBleHBpcmVkJyxcbiAgICAgIHZhbGlkOiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBzcGVjaWFsIGNhc2UgZm9yIGFwcCByZXZpZXcgaGFuZGxpbmcgLSBmb3J3YXJkIGFueSByZXF1ZXN0IHRoYXQgaXMgaW50ZW5kZWQgZm9yIHRoZSBTYW5kYm94IGJ1dCB3YXMgc2VudCB0b1xuICAgICAqIFByb2R1Y3Rpb24sIHRoaXMgaXMgd2hhdCB0aGUgYXBwIHJldmlldyB0ZWFtIGRvZXNcbiAgICAgKi9cbiAgICBbMjEwMDddOiB7XG4gICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgIGlkOiAncGF5bWVudF9pbnZhbGlkX3NlcnZlcicsXG4gICAgICBtZXNzYWdlOiAnU2FuZGJveCByZWNlaXB0IHNlbnQgdG8gUHJvZHVjdGlvbiBlbnZpcm9ubWVudCcsXG4gICAgICByZWRpcmVjdDogdHJ1ZSxcbiAgICAgIHZhbGlkOiBmYWxzZVxuICAgIH0sXG4gICAgWzIxMDA4XToge1xuICAgICAgZXJyb3I6IHRydWUsXG4gICAgICBpZDogJ3BheW1lbnRfaW52YWxpZF9zZXJ2ZXInLFxuICAgICAgbWVzc2FnZTogJ1Byb2R1Y3Rpb24gcmVjZWlwdCBzZW50IHRvIFNhbmRib3ggZW52aXJvbm1lbnQnLFxuICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBjb2Rlc1tzdGF0dXNDb2RlXSB8fCB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCBpb3NTdWJzY3JpcHRpb25VcGRhdGUgPSAoXG4gIGRhdGFiYXNlTmFtZTogc3RyaW5nLFxuICBzdWJzY3JpcHRpb25VcGRhdGU6IFBheW1lbnRJT1NTdWJzY3JpcHRpb25VcGRhdGVcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnaW9zU3Vic2NyaXB0aW9uVXBkYXRlJztcbiAgY29uc3Qge1xuICAgIGF1dG9fcmVuZXdfYWRhbV9pZDogcGxhbklkLFxuICAgIGNhbmNlbGxhdGlvbl9kYXRlOiBjYW5jZWxEYXRlLFxuICAgIG5vdGlmaWNhdGlvbl90eXBlOiBzdGF0dXMsXG4gICAgbGF0ZXN0X3JlY2VpcHQ6IGxhdGVzdFJlY2VpcHQsXG4gICAgbGF0ZXN0X3JlY2VpcHRfaW5mbzogbGF0ZXN0SW5mbyxcbiAgICBsYXRlc3RfZXhwaXJlZF9yZWNlaXB0OiBleHBpcmVkUmVjZWlwdCxcbiAgICBsYXRlc3RfZXhwaXJlZF9yZWNlaXB0X2luZm86IGV4cGlyZWRJbmZvLFxuICAgIG9yaWdpbmFsX3RyYW5zYWN0aW9uX2lkOiB0cmFuc2FjdGlvbklkXG4gIH0gPSBzdWJzY3JpcHRpb25VcGRhdGU7XG4gIGNvbnN0IGZvcm1hdFN0YXR1cyA9IChzdGF0dXMgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IHJlY2VpcHRJbmZvOiBQYXltZW50SU9TU3Vic2NyaXB0aW9uSW5mb1tdID0gbGF0ZXN0SW5mbyB8fCBleHBpcmVkSW5mbztcbiAgY29uc3QgaWQgPSBjcmVhdGVIYXNoKGBwYXltZW50LSR7dHJhbnNhY3Rpb25JZH1gKTtcblxuICBjb25zdCB1cGRhdGU6IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7XG4gICAgY2FuY2VsRGF0ZSxcbiAgICBpc1ZhbGlkOiByZWNlaXB0SW5mb1swXS5leHBpcmVzX2RhdGVfbXMgPiBub3csXG4gICAgbW9kaWZpZWQ6IG5vdyxcbiAgICBwbGFuSWQsXG4gICAgcmVjZWlwdDogbGF0ZXN0UmVjZWlwdCB8fCBleHBpcmVkUmVjZWlwdCxcbiAgICBzdGF0dXM6IGZvcm1hdFN0YXR1c1xuICB9O1xuICBjb25zdCBpbnNlcnQ6IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7XG4gICAgLi4udXBkYXRlLFxuICAgIF9rZXk6IGlkLFxuICAgIGFkZGVkOiBub3csXG4gICAgdHlwZTogJ2lvc19wYXltZW50J1xuICB9O1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7dHJhbnNhY3Rpb25JZDogJHt0cmFuc2FjdGlvbklkfX1cbiAgICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgICBVUERBVEUgJHt1cGRhdGV9IElOIHN1YnNjcmlwdGlvbnNcbiAgICAgTElNSVQgMWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKCgpID0+IG51bGwpXG4gICAgLmNhdGNoKChkYkVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGRiRXJyb3IsIHt9KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbi8vIGV4cG9ydCBjb25zdCBhZGRJb3NJbkFwcCA9IChcbi8vICAgY29udGV4dDogQXBpQ29udGV4dCxcbi8vICAgYXBwLFxuLy8gICBzdWJzY3JpcHRpb246IFBheW1lbnRTdWJzY3JpcHRpb25cbi8vICk6IFByb21pc2U8UGF5bWVudFN1YnNjcmlwdGlvbj4gPT4ge1xuLy8gICBjb25zdCBhY3Rpb24gPSAnYWRkSW9zSW5BcHAnO1xuLy8gICBjb25zdCB7aXNQcm9kdWN0aW9uLCByZWNlaXB0fSA9IHN1YnNjcmlwdGlvbjtcbi8vICAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuXG4vLyAgIGNvbnN0IHByb2R1Y3Rpb25Ib3N0ID0gJ2J1eS5pdHVuZXMuYXBwbGUuY29tJztcbi8vICAgY29uc3Qgc2FuZGJveEhvc3QgPSAnc2FuZGJveC5pdHVuZXMuYXBwbGUuY29tJztcbi8vICAgY29uc3QgZW5kcG9pbnQgPSBpc1Byb2R1Y3Rpb24gPyBwcm9kdWN0aW9uSG9zdCA6IHNhbmRib3hIb3N0O1xuLy8gICBjb25zdCB2ZXJpZnlVcmwgPSBgaHR0cHM6Ly8ke2VuZHBvaW50fS92ZXJpZnlSZWNlaXB0YDtcbi8vICAgY29uc3QgcGF5bG9hZDogb2JqZWN0ID0ge1xuLy8gICAgIHBhc3N3b3JkOiBhcHAuaWFwLFxuLy8gICAgICdyZWNlaXB0LWRhdGEnOiBkZWNvZGVVUklDb21wb25lbnQocmVjZWlwdClcbi8vICAgfTtcbi8vICAgY29uc3Qgb3B0aW9uczogb2JqZWN0ID0ge1xuLy8gICAgIGhlYWRlcnM6IHtcbi8vICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xuLy8gICAgIH1cbi8vICAgfTtcblxuLy8gICByZXR1cm4gcG9zdCh2ZXJpZnlVcmwsIHBheWxvYWQsIG9wdGlvbnMpXG4vLyAgICAgLnRoZW4oKHJlc3VsdHMpID0+IHtcbi8vICAgICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKHJlc3VsdHMpO1xuLy8gICAgICAgY29uc3Qge1xuLy8gICAgICAgICBsYXRlc3RfcmVjZWlwdDogbGF0ZXN0UmVjZWlwdCxcbi8vICAgICAgICAgbGF0ZXN0X3JlY2VpcHRfaW5mbzogbGF0ZXN0SW5mbyxcbi8vICAgICAgICAgc3RhdHVzXG4vLyAgICAgICB9ID0ganNvbjtcblxuLy8gICAgICAgY29uc3Qge1xuLy8gICAgICAgICBpc190cmlhbF9wZXJpb2Q6IHRyaWFsUGVyaW9kLFxuLy8gICAgICAgICBvcmlnaW5hbF9wdXJjaGFzZV9kYXRlX21zOiBhZGRlZCxcbi8vICAgICAgICAgZXhwaXJlc19kYXRlOiBleHBpcmVzLFxuLy8gICAgICAgICBwcm9kdWN0X2lkOiBwbGFuSWQsXG4vLyAgICAgICAgIHRyYW5zYWN0aW9uX2lkOiB0cmFuc2FjdGlvbklkXG4vLyAgICAgICB9ID0gbGF0ZXN0SW5mbztcblxuLy8gICAgICAgaWYoc3RhdHVzID09PSAwIHx8IHN0YXR1cyA9PT0gMjEwMDYpIHtcbi8vICAgICAgICAgY29uc3QgaWQgPSBjcmVhdGVIYXNoKGBwYXltZW50LSR7dHJhbnNhY3Rpb25JZH1gKTtcbi8vICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbi8vICAgICAgICAgY29uc3QgdXBkYXRlOiBQYXltZW50U3Vic2NyaXB0aW9uID0ge1xuLy8gICAgICAgICAgIGV4cGlyZXMsXG4vLyAgICAgICAgICAgaXNUcmlhbDogdHJpYWxQZXJpb2QgPT09ICd0cnVlJyxcbi8vICAgICAgICAgICBpc1ZhbGlkOiBleHBpcmVzID4gbm93LFxuLy8gICAgICAgICAgIG1vZGlmaWVkOiBub3csXG4vLyAgICAgICAgICAgcGxhbklkLFxuLy8gICAgICAgICAgIHJlY2VpcHQ6IGxhdGVzdFJlY2VpcHQsXG4vLyAgICAgICAgICAgdHJhbnNhY3Rpb25JZCxcbi8vICAgICAgICAgICB1c2VySWQ6IHNlc3Npb25JZFxuLy8gICAgICAgICB9O1xuLy8gICAgICAgICBjb25zdCBpbnNlcnQ6IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7XG4vLyAgICAgICAgICAgLi4udXBkYXRlLFxuLy8gICAgICAgICAgIF9rZXk6IGlkLFxuLy8gICAgICAgICAgIGFkZGVkLFxuLy8gICAgICAgICAgIHR5cGU6ICdpb3NfcGF5bWVudCdcbi8vICAgICAgICAgfTtcblxuLy8gICAgICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7dHJhbnNhY3Rpb25JZDogJHt0cmFuc2FjdGlvbklkfX1cbi8vICAgICAgICAgICAgICAgSU5TRVJUICR7aW5zZXJ0fVxuLy8gICAgICAgICAgICAgICBVUERBVEUgJHt1cGRhdGV9IElOIHN1YnNjcmlwdGlvbnNcbi8vICAgICAgICAgICAgICAgUkVUVVJOIE5FV2A7XG5cbi8vICAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbi8vICAgICAgICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuLy8gICAgICAgICAgIC50aGVuKCh1cGRhdGVkU3Vic2NyaXB0aW9uOiBQYXltZW50U3Vic2NyaXB0aW9uID0ge30pID0+IHVwZGF0ZWRTdWJzY3JpcHRpb24pXG4vLyAgICAgICAgICAgLmNhdGNoKChkYkVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuLy8gICAgICAgICAgICAgYWN0aW9uLFxuLy8gICAgICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4vLyAgICAgICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuLy8gICAgICAgICAgIH0sIGRiRXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xuLy8gICAgICAgfVxuXG4vLyAgICAgICAvLyBFcnJvcnNcbi8vICAgICAgIGNvbnN0IGVycm9yOiBQYXltZW50SU9TSW5BcHBFcnJvciA9IGdldElvc0luQXBwRXJyb3IocmVzdWx0cy5zdGF0dXMpO1xuXG4vLyAgICAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbi8vICAgICAgICAgYWN0aW9uLFxuLy8gICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbi8vICAgICAgICAgbGFiZWw6ICdwYXltZW50X2Vycm9yJyxcbi8vICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbi8vICAgICAgICAgdmFsdWU6IGVycm9yLmlkXG4vLyAgICAgICB9LCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuLy8gICAgIH0pO1xuLy8gfTtcblxuZXhwb3J0IGNvbnN0IGdldElvc1N1YnNjcmlwdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0KTogUHJvbWlzZTxQYXltZW50U3Vic2NyaXB0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRJb3NTdWJzY3JpcHRpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHMgSU4gc3Vic2NyaXB0aW9uc1xuICAgICAgRklMVEVSIHMudXNlcklkID09ICR7c2Vzc2lvbklkfSAmJiBzLnR5cGUgPT0gXCJpb3NfcGF5bWVudFwiXG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gc2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHN1YnNjcmlwdGlvbjogUGF5bWVudFN1YnNjcmlwdGlvbikgPT4gc3Vic2NyaXB0aW9uKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZElvc0luQXBwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHN1YnNjcmlwdGlvbjogUGF5bWVudFN1YnNjcmlwdGlvbik6IFByb21pc2U8UGF5bWVudFN1YnNjcmlwdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkSW9zSW5BcHAnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IHthZGRlZCA9IG5vdywgcGxhbklkLCByZWNlaXB0LCB0cmFuc2FjdGlvbklkLCB0cmlhbEVuZH0gPSBzdWJzY3JpcHRpb247XG4gIGNvbnN0IHN1YnNjcmlwdGlvbklkID0gY3JlYXRlSGFzaChgc3Vic2NyaXB0aW9uLSR7dHJhbnNhY3Rpb25JZH1gKTtcbiAgY29uc3QgaW5zZXJ0OiBQYXltZW50U3Vic2NyaXB0aW9uID0ge1xuICAgIF9rZXk6IHN1YnNjcmlwdGlvbklkLFxuICAgIGFkZGVkLFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgcGxhbklkLFxuICAgIHJlY2VpcHQsXG4gICAgdHJhbnNhY3Rpb25JZCxcbiAgICB0cmlhbEVuZCxcbiAgICB0eXBlOiAnaW9zX3N1YnNjcmlwdGlvbicsXG4gICAgdXNlcklkOiBzZXNzaW9uSWRcbiAgfTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIHN1YnNjcmlwdGlvbnMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHVwZGF0ZWRTdWJzY3JpcHRpb246IFBheW1lbnRTdWJzY3JpcHRpb24pID0+IHVwZGF0ZWRTdWJzY3JpcHRpb24pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW9zSW5BcHAgPSAoY29udGV4dDogQXBpQ29udGV4dCk6IFByb21pc2U8UGF5bWVudFN1YnNjcmlwdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0SW9zSW5BcHAnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHMgSU4gc3Vic2NyaXB0aW9uXG4gICAgICBGSUxURVIgcy51c2VySWQgPT0gJHtzZXNzaW9uSWR9ICYmIHMudHlwZSA9PSBcImlvc1wiXG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gc2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHN1YnNjcmlwdGlvbjogUGF5bWVudFN1YnNjcmlwdGlvbikgPT4gc3Vic2NyaXB0aW9uKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcbiJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwiYXFsIiwiRXJyb3JUeXBlcyIsImxvZ0Vycm9yIiwidXNlRGIiLCJldmVudENhdGVnb3J5IiwiZ2V0SW9zSW5BcHBFcnJvciIsInN0YXR1c0NvZGUiLCJjb2RlcyIsImVycm9yIiwibWVzc2FnZSIsInZhbGlkIiwiaWQiLCJyZWRpcmVjdCIsImlvc1N1YnNjcmlwdGlvblVwZGF0ZSIsImRhdGFiYXNlTmFtZSIsInN1YnNjcmlwdGlvblVwZGF0ZSIsImFjdGlvbiIsImF1dG9fcmVuZXdfYWRhbV9pZCIsInBsYW5JZCIsImNhbmNlbGxhdGlvbl9kYXRlIiwiY2FuY2VsRGF0ZSIsIm5vdGlmaWNhdGlvbl90eXBlIiwic3RhdHVzIiwibGF0ZXN0X3JlY2VpcHQiLCJsYXRlc3RSZWNlaXB0IiwibGF0ZXN0X3JlY2VpcHRfaW5mbyIsImxhdGVzdEluZm8iLCJsYXRlc3RfZXhwaXJlZF9yZWNlaXB0IiwiZXhwaXJlZFJlY2VpcHQiLCJsYXRlc3RfZXhwaXJlZF9yZWNlaXB0X2luZm8iLCJleHBpcmVkSW5mbyIsIm9yaWdpbmFsX3RyYW5zYWN0aW9uX2lkIiwidHJhbnNhY3Rpb25JZCIsImZvcm1hdFN0YXR1cyIsInRvTG93ZXJDYXNlIiwibm93IiwiRGF0ZSIsInJlY2VpcHRJbmZvIiwidXBkYXRlIiwiaXNWYWxpZCIsImV4cGlyZXNfZGF0ZV9tcyIsIm1vZGlmaWVkIiwicmVjZWlwdCIsImluc2VydCIsIl9rZXkiLCJhZGRlZCIsInR5cGUiLCJhcWxRcnkiLCJxdWVyeSIsInRoZW4iLCJjYXRjaCIsImRiRXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiREFUQUJBU0VfRVJST1IiLCJnZXRJb3NTdWJzY3JpcHRpb24iLCJjb250ZXh0Iiwic2Vzc2lvbiIsInVzZXJJZCIsInNlc3Npb25JZCIsImN1cnNvciIsIm5leHQiLCJzdWJzY3JpcHRpb24iLCJhZGRJb3NJbkFwcCIsInRyaWFsRW5kIiwic3Vic2NyaXB0aW9uSWQiLCJ1cGRhdGVkU3Vic2NyaXB0aW9uIiwiZ2V0SW9zSW5BcHAiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLFVBQVUsUUFBTywrQkFBK0I7QUFDeEQsU0FBUUMsR0FBRyxRQUFPLFdBQVc7QUFJN0IsU0FBUUMsVUFB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
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvaW9zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlSGFzaH0gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtcbiAgUGF5bWVudElPU0luQXBwRXJyb3IsXG4gIFBheW1lbnRJT1NTdWJzY3JpcHRpb25JbmZvLFxuICBQYXltZW50SU9TU3Vic2NyaXB0aW9uVXBkYXRlLFxuICBQYXltZW50U3Vic2NyaXB0aW9uXG59IGZyb20gJy4uL3R5cGVzL3BheW1lbnRzLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5ID0gJ2lvcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRJb3NJbkFwcEVycm9yID0gKHN0YXR1c0NvZGU6IHN0cmluZyk6IFBheW1lbnRJT1NJbkFwcEVycm9yID0+IHtcbiAgY29uc3QgY29kZXMgPSB7XG4gICAgWzBdOiB7ZXJyb3I6IGZhbHNlLCBtZXNzYWdlOiAnQWN0aXZlJywgdmFsaWQ6IHRydWV9LFxuICAgIFsyMTAwMF06IHtlcnJvcjogdHJ1ZSwgaWQ6ICdwYXltZW50X3JlY2VpcHRfdW5yZWFkYWJsZScsIG1lc3NhZ2U6ICdBcHAgc3RvcmUgY291bGQgbm90IHJlYWQnLCB2YWxpZDogZmFsc2V9LFxuICAgIFsyMTAwMl06IHtlcnJvcjogdHJ1ZSwgaWQ6ICdwYXltZW50X2RhdGFfbWFsZm9ybWVkJywgbWVzc2FnZTogJ0RhdGEgd2FzIG1hbGZvcm1lZCcsIHZhbGlkOiBmYWxzZX0sXG4gICAgWzIxMDAzXToge2Vycm9yOiB0cnVlLCBpZDogJ3BheW1lbnRfcmVjZWlwdF91bmF1dGhvcml6ZWQnLCBtZXNzYWdlOiAnUmVjZWlwdCBub3QgYXV0aGVudGljYXRlZCcsIHZhbGlkOiBmYWxzZX0sXG4gICAgWzIxMDA0XToge2Vycm9yOiB0cnVlLCBpZDogJ3BheW1lbnRfaW52YWxpZF9zZWNyZXQnLCBtZXNzYWdlOiAnU2hhcmVkIHNlY3JldCBkb2VzIG5vdCBtYXRjaCcsIHZhbGlkOiBmYWxzZX0sXG4gICAgWzIxMDA1XToge2Vycm9yOiB0cnVlLCBpZDogJ3BheW1lbnRfc2VydmVyX3VuYXZhaWxhYmxlJywgbWVzc2FnZTogJ1JlY2VpcHQgc2VydmVyIHVuYXZhaWxhYmxlJywgdmFsaWQ6IGZhbHNlfSxcbiAgICBbMjEwMDZdOiB7XG4gICAgICBlcnJvcjogZmFsc2UsXG4gICAgICBpZDogJ3BheW1lbnRfc3Vic2NyaXB0aW9uX2V4cGlyZWQnLFxuICAgICAgbWVzc2FnZTogJ1JlY2VpcHQgdmFsaWQgYnV0IHN1YiBleHBpcmVkJyxcbiAgICAgIHZhbGlkOiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBzcGVjaWFsIGNhc2UgZm9yIGFwcCByZXZpZXcgaGFuZGxpbmcgLSBmb3J3YXJkIGFueSByZXF1ZXN0IHRoYXQgaXMgaW50ZW5kZWQgZm9yIHRoZSBTYW5kYm94IGJ1dCB3YXMgc2VudCB0b1xuICAgICAqIFByb2R1Y3Rpb24sIHRoaXMgaXMgd2hhdCB0aGUgYXBwIHJldmlldyB0ZWFtIGRvZXNcbiAgICAgKi9cbiAgICBbMjEwMDddOiB7XG4gICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgIGlkOiAncGF5bWVudF9pbnZhbGlkX3NlcnZlcicsXG4gICAgICBtZXNzYWdlOiAnU2FuZGJveCByZWNlaXB0IHNlbnQgdG8gUHJvZHVjdGlvbiBlbnZpcm9ubWVudCcsXG4gICAgICByZWRpcmVjdDogdHJ1ZSxcbiAgICAgIHZhbGlkOiBmYWxzZVxuICAgIH0sXG4gICAgWzIxMDA4XToge1xuICAgICAgZXJyb3I6IHRydWUsXG4gICAgICBpZDogJ3BheW1lbnRfaW52YWxpZF9zZXJ2ZXInLFxuICAgICAgbWVzc2FnZTogJ1Byb2R1Y3Rpb24gcmVjZWlwdCBzZW50IHRvIFNhbmRib3ggZW52aXJvbm1lbnQnLFxuICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBjb2Rlc1tzdGF0dXNDb2RlXSB8fCB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCBpb3NTdWJzY3JpcHRpb25VcGRhdGUgPSAoXG4gIGRhdGFiYXNlTmFtZTogc3RyaW5nLFxuICBzdWJzY3JpcHRpb25VcGRhdGU6IFBheW1lbnRJT1NTdWJzY3JpcHRpb25VcGRhdGVcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnaW9zU3Vic2NyaXB0aW9uVXBkYXRlJztcbiAgY29uc3Qge1xuICAgIGF1dG9fcmVuZXdfYWRhbV9pZDogcGxhbklkLFxuICAgIGNhbmNlbGxhdGlvbl9kYXRlOiBjYW5jZWxEYXRlLFxuICAgIG5vdGlmaWNhdGlvbl90eXBlOiBzdGF0dXMsXG4gICAgbGF0ZXN0X3JlY2VpcHQ6IGxhdGVzdFJlY2VpcHQsXG4gICAgbGF0ZXN0X3JlY2VpcHRfaW5mbzogbGF0ZXN0SW5mbyxcbiAgICBsYXRlc3RfZXhwaXJlZF9yZWNlaXB0OiBleHBpcmVkUmVjZWlwdCxcbiAgICBsYXRlc3RfZXhwaXJlZF9yZWNlaXB0X2luZm86IGV4cGlyZWRJbmZvLFxuICAgIG9yaWdpbmFsX3RyYW5zYWN0aW9uX2lkOiB0cmFuc2FjdGlvbklkXG4gIH0gPSBzdWJzY3JpcHRpb25VcGRhdGU7XG4gIGNvbnN0IGZvcm1hdFN0YXR1cyA9IChzdGF0dXMgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IHJlY2VpcHRJbmZvOiBQYXltZW50SU9TU3Vic2NyaXB0aW9uSW5mb1tdID0gbGF0ZXN0SW5mbyB8fCBleHBpcmVkSW5mbztcbiAgY29uc3QgaWQgPSBjcmVhdGVIYXNoKGBwYXltZW50LSR7dHJhbnNhY3Rpb25JZH1gKTtcblxuICBjb25zdCB1cGRhdGU6IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7XG4gICAgY2FuY2VsRGF0ZSxcbiAgICBpc1ZhbGlkOiByZWNlaXB0SW5mb1swXS5leHBpcmVzX2RhdGVfbXMgPiBub3csXG4gICAgbW9kaWZpZWQ6IG5vdyxcbiAgICBwbGFuSWQsXG4gICAgcmVjZWlwdDogbGF0ZXN0UmVjZWlwdCB8fCBleHBpcmVkUmVjZWlwdCxcbiAgICBzdGF0dXM6IGZvcm1hdFN0YXR1c1xuICB9O1xuICBjb25zdCBpbnNlcnQ6IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7XG4gICAgLi4udXBkYXRlLFxuICAgIF9rZXk6IGlkLFxuICAgIGFkZGVkOiBub3csXG4gICAgdHlwZTogJ2lvc19wYXltZW50J1xuICB9O1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7dHJhbnNhY3Rpb25JZDogJHt0cmFuc2FjdGlvbklkfX1cbiAgICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgICBVUERBVEUgJHt1cGRhdGV9IElOIHN1YnNjcmlwdGlvbnNcbiAgICAgTElNSVQgMWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKCgpID0+IG51bGwpXG4gICAgLmNhdGNoKChkYkVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGRiRXJyb3IsIHt9KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbi8vIGV4cG9ydCBjb25zdCBhZGRJb3NJbkFwcCA9IChcbi8vICAgY29udGV4dDogQXBpQ29udGV4dCxcbi8vICAgYXBwLFxuLy8gICBzdWJzY3JpcHRpb246IFBheW1lbnRTdWJzY3JpcHRpb25cbi8vICk6IFByb21pc2U8UGF5bWVudFN1YnNjcmlwdGlvbj4gPT4ge1xuLy8gICBjb25zdCBhY3Rpb24gPSAnYWRkSW9zSW5BcHAnO1xuLy8gICBjb25zdCB7aXNQcm9kdWN0aW9uLCByZWNlaXB0fSA9IHN1YnNjcmlwdGlvbjtcbi8vICAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuXG4vLyAgIGNvbnN0IHByb2R1Y3Rpb25Ib3N0ID0gJ2J1eS5pdHVuZXMuYXBwbGUuY29tJztcbi8vICAgY29uc3Qgc2FuZGJveEhvc3QgPSAnc2FuZGJveC5pdHVuZXMuYXBwbGUuY29tJztcbi8vICAgY29uc3QgZW5kcG9pbnQgPSBpc1Byb2R1Y3Rpb24gPyBwcm9kdWN0aW9uSG9zdCA6IHNhbmRib3hIb3N0O1xuLy8gICBjb25zdCB2ZXJpZnlVcmwgPSBgaHR0cHM6Ly8ke2VuZHBvaW50fS92ZXJpZnlSZWNlaXB0YDtcbi8vICAgY29uc3QgcGF5bG9hZDogb2JqZWN0ID0ge1xuLy8gICAgIHBhc3N3b3JkOiBhcHAuaWFwLFxuLy8gICAgICdyZWNlaXB0LWRhdGEnOiBkZWNvZGVVUklDb21wb25lbnQocmVjZWlwdClcbi8vICAgfTtcbi8vICAgY29uc3Qgb3B0aW9uczogb2JqZWN0ID0ge1xuLy8gICAgIGhlYWRlcnM6IHtcbi8vICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xuLy8gICAgIH1cbi8vICAgfTtcblxuLy8gICByZXR1cm4gcG9zdCh2ZXJpZnlVcmwsIHBheWxvYWQsIG9wdGlvbnMpXG4vLyAgICAgLnRoZW4oKHJlc3VsdHMpID0+IHtcbi8vICAgICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKHJlc3VsdHMpO1xuLy8gICAgICAgY29uc3Qge1xuLy8gICAgICAgICBsYXRlc3RfcmVjZWlwdDogbGF0ZXN0UmVjZWlwdCxcbi8vICAgICAgICAgbGF0ZXN0X3JlY2VpcHRfaW5mbzogbGF0ZXN0SW5mbyxcbi8vICAgICAgICAgc3RhdHVzXG4vLyAgICAgICB9ID0ganNvbjtcblxuLy8gICAgICAgY29uc3Qge1xuLy8gICAgICAgICBpc190cmlhbF9wZXJpb2Q6IHRyaWFsUGVyaW9kLFxuLy8gICAgICAgICBvcmlnaW5hbF9wdXJjaGFzZV9kYXRlX21zOiBhZGRlZCxcbi8vICAgICAgICAgZXhwaXJlc19kYXRlOiBleHBpcmVzLFxuLy8gICAgICAgICBwcm9kdWN0X2lkOiBwbGFuSWQsXG4vLyAgICAgICAgIHRyYW5zYWN0aW9uX2lkOiB0cmFuc2FjdGlvbklkXG4vLyAgICAgICB9ID0gbGF0ZXN0SW5mbztcblxuLy8gICAgICAgaWYoc3RhdHVzID09PSAwIHx8IHN0YXR1cyA9PT0gMjEwMDYpIHtcbi8vICAgICAgICAgY29uc3QgaWQgPSBjcmVhdGVIYXNoKGBwYXltZW50LSR7dHJhbnNhY3Rpb25JZH1gKTtcbi8vICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbi8vICAgICAgICAgY29uc3QgdXBkYXRlOiBQYXltZW50U3Vic2NyaXB0aW9uID0ge1xuLy8gICAgICAgICAgIGV4cGlyZXMsXG4vLyAgICAgICAgICAgaXNUcmlhbDogdHJpYWxQZXJpb2QgPT09ICd0cnVlJyxcbi8vICAgICAgICAgICBpc1ZhbGlkOiBleHBpcmVzID4gbm93LFxuLy8gICAgICAgICAgIG1vZGlmaWVkOiBub3csXG4vLyAgICAgICAgICAgcGxhbklkLFxuLy8gICAgICAgICAgIHJlY2VpcHQ6IGxhdGVzdFJlY2VpcHQsXG4vLyAgICAgICAgICAgdHJhbnNhY3Rpb25JZCxcbi8vICAgICAgICAgICB1c2VySWQ6IHNlc3Npb25JZFxuLy8gICAgICAgICB9O1xuLy8gICAgICAgICBjb25zdCBpbnNlcnQ6IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7XG4vLyAgICAgICAgICAgLi4udXBkYXRlLFxuLy8gICAgICAgICAgIF9rZXk6IGlkLFxuLy8gICAgICAgICAgIGFkZGVkLFxuLy8gICAgICAgICAgIHR5cGU6ICdpb3NfcGF5bWVudCdcbi8vICAgICAgICAgfTtcblxuLy8gICAgICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7dHJhbnNhY3Rpb25JZDogJHt0cmFuc2FjdGlvbklkfX1cbi8vICAgICAgICAgICAgICAgSU5TRVJUICR7aW5zZXJ0fVxuLy8gICAgICAgICAgICAgICBVUERBVEUgJHt1cGRhdGV9IElOIHN1YnNjcmlwdGlvbnNcbi8vICAgICAgICAgICAgICAgUkVUVVJOIE5FV2A7XG5cbi8vICAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbi8vICAgICAgICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuLy8gICAgICAgICAgIC50aGVuKCh1cGRhdGVkU3Vic2NyaXB0aW9uOiBQYXltZW50U3Vic2NyaXB0aW9uID0ge30pID0+IHVwZGF0ZWRTdWJzY3JpcHRpb24pXG4vLyAgICAgICAgICAgLmNhdGNoKChkYkVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuLy8gICAgICAgICAgICAgYWN0aW9uLFxuLy8gICAgICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4vLyAgICAgICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuLy8gICAgICAgICAgIH0sIGRiRXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xuLy8gICAgICAgfVxuXG4vLyAgICAgICAvLyBFcnJvcnNcbi8vICAgICAgIGNvbnN0IGVycm9yOiBQYXltZW50SU9TSW5BcHBFcnJvciA9IGdldElvc0luQXBwRXJyb3IocmVzdWx0cy5zdGF0dXMpO1xuXG4vLyAgICAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbi8vICAgICAgICAgYWN0aW9uLFxuLy8gICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbi8vICAgICAgICAgbGFiZWw6ICdwYXltZW50X2Vycm9yJyxcbi8vICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbi8vICAgICAgICAgdmFsdWU6IGVycm9yLmlkXG4vLyAgICAgICB9LCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuLy8gICAgIH0pO1xuLy8gfTtcblxuZXhwb3J0IGNvbnN0IGdldElvc1N1YnNjcmlwdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0KTogUHJvbWlzZTxQYXltZW50U3Vic2NyaXB0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRJb3NTdWJzY3JpcHRpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHMgSU4gc3Vic2NyaXB0aW9uc1xuICAgICAgRklMVEVSIHMudXNlcklkID09ICR7c2Vzc2lvbklkfSAmJiBzLnR5cGUgPT0gXCJpb3NfcGF5bWVudFwiXG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gc2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHN1YnNjcmlwdGlvbjogUGF5bWVudFN1YnNjcmlwdGlvbikgPT4gc3Vic2NyaXB0aW9uKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZElvc0luQXBwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHN1YnNjcmlwdGlvbjogUGF5bWVudFN1YnNjcmlwdGlvbik6IFByb21pc2U8UGF5bWVudFN1YnNjcmlwdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkSW9zSW5BcHAnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IHthZGRlZCA9IG5vdywgcGxhbklkLCByZWNlaXB0LCB0cmFuc2FjdGlvbklkLCB0cmlhbEVuZH0gPSBzdWJzY3JpcHRpb247XG4gIGNvbnN0IHN1YnNjcmlwdGlvbklkID0gY3JlYXRlSGFzaChgc3Vic2NyaXB0aW9uLSR7dHJhbnNhY3Rpb25JZH1gKTtcbiAgY29uc3QgaW5zZXJ0OiBQYXltZW50U3Vic2NyaXB0aW9uID0ge1xuICAgIF9rZXk6IHN1YnNjcmlwdGlvbklkLFxuICAgIGFkZGVkLFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgcGxhbklkLFxuICAgIHJlY2VpcHQsXG4gICAgdHJhbnNhY3Rpb25JZCxcbiAgICB0cmlhbEVuZCxcbiAgICB0eXBlOiAnaW9zX3N1YnNjcmlwdGlvbicsXG4gICAgdXNlcklkOiBzZXNzaW9uSWRcbiAgfTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIHN1YnNjcmlwdGlvbnMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHVwZGF0ZWRTdWJzY3JpcHRpb246IFBheW1lbnRTdWJzY3JpcHRpb24pID0+IHVwZGF0ZWRTdWJzY3JpcHRpb24pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW9zSW5BcHAgPSAoY29udGV4dDogQXBpQ29udGV4dCk6IFByb21pc2U8UGF5bWVudFN1YnNjcmlwdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0SW9zSW5BcHAnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHMgSU4gc3Vic2NyaXB0aW9uXG4gICAgICBGSUxURVIgcy51c2VySWQgPT0gJHtzZXNzaW9uSWR9ICYmIHMudHlwZSA9PSBcImlvc1wiXG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gc2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHN1YnNjcmlwdGlvbjogUGF5bWVudFN1YnNjcmlwdGlvbikgPT4gc3Vic2NyaXB0aW9uKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcbiJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwiYXFsIiwiRXJyb3JUeXBlcyIsImxvZ0Vycm9yIiwidXNlRGIiLCJldmVudENhdGVnb3J5IiwiZ2V0SW9zSW5BcHBFcnJvciIsInN0YXR1c0NvZGUiLCJjb2RlcyIsImVycm9yIiwibWVzc2FnZSIsInZhbGlkIiwiaWQiLCJyZWRpcmVjdCIsImlvc1N1YnNjcmlwdGlvblVwZGF0ZSIsImRhdGFiYXNlTmFtZSIsInN1YnNjcmlwdGlvblVwZGF0ZSIsImFjdGlvbiIsImF1dG9fcmVuZXdfYWRhbV9pZCIsInBsYW5JZCIsImNhbmNlbGxhdGlvbl9kYXRlIiwiY2FuY2VsRGF0ZSIsIm5vdGlmaWNhdGlvbl90eXBlIiwic3RhdHVzIiwibGF0ZXN0X3JlY2VpcHQiLCJsYXRlc3RSZWNlaXB0IiwibGF0ZXN0X3JlY2VpcHRfaW5mbyIsImxhdGVzdEluZm8iLCJsYXRlc3RfZXhwaXJlZF9yZWNlaXB0IiwiZXhwaXJlZFJlY2VpcHQiLCJsYXRlc3RfZXhwaXJlZF9yZWNlaXB0X2luZm8iLCJleHBpcmVkSW5mbyIsIm9yaWdpbmFsX3RyYW5zYWN0aW9uX2lkIiwidHJhbnNhY3Rpb25JZCIsImZvcm1hdFN0YXR1cyIsInRvTG93ZXJDYXNlIiwibm93IiwiRGF0ZSIsInJlY2VpcHRJbmZvIiwidXBkYXRlIiwiaXNWYWxpZCIsImV4cGlyZXNfZGF0ZV9tcyIsIm1vZGlmaWVkIiwicmVjZWlwdCIsImluc2VydCIsIl9rZXkiLCJhZGRlZCIsInR5cGUiLCJhcWxRcnkiLCJxdWVyeSIsInRoZW4iLCJjYXRjaCIsImRiRXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiREFUQUJBU0VfRVJST1IiLCJnZXRJb3NTdWJzY3JpcHRpb24iLCJjb250ZXh0Iiwic2Vzc2lvbiIsInVzZXJJZCIsInNlc3Npb25JZCIsImN1cnNvciIsIm5leHQiLCJzdWJzY3JpcHRpb24iLCJhZGRJb3NJbkFwcCIsInRyaWFsRW5kIiwic3Vic2NyaXB0aW9uSWQiLCJ1cGRhdGVkU3Vic2NyaXB0aW9uIiwiZ2V0SW9zSW5BcHAiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLFVBQVUsUUFBTywrQkFBK0I7QUFDeEQsU0FBUUMsR0FBRyxRQUFPLFdBQVc7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
|
package/lib/actions/locations.js
CHANGED
|
@@ -141,4 +141,4 @@ export const autoCompleteLocation = (context, address)=>{
|
|
|
141
141
|
});
|
|
142
142
|
};
|
|
143
143
|
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC9ubGFicy1yZWFrdG9yLXJlbGVhc2UuZU1RNVNoL2NoZWNrb3V0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvbG9jYXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge2dldCBhcyBodHRwR2V0LCBxdWVyeVN0cmluZ30gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUNoYXIsIHBhcnNlSWR9IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL3N0cmluZ3MnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7R29vZ2xlTWFwc0FkZHJlc3NUeXBlLCBHb29nbGVNYXBzUmVzdWx0VHlwZX0gZnJvbSAnLi4vdHlwZXMvZ29vZ2xlLnR5cGVzLmpzJztcbmltcG9ydCB7TG9jYXRpb25UeXBlfSBmcm9tICcuLi90eXBlcy9sb2NhdGlvbnMudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge2FkZEl0ZW0sIGdldEl0ZW1CeX0gZnJvbSAnLi9jcnVkLmpzJztcblxuaW1wb3J0IHR5cGUge0VkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcy9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgdHlwZSB7RWRnZVR5cGV9IGZyb20gJy4uL3R5cGVzL2FyYW5nb2RiLnR5cGVzLmpzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdsb2NhdGlvbnMnO1xuXG5jb25zdCBtYXBHb29nbGVSZXN1bHRUb0xvY2F0aW9uID0gKGdlb2RhdGE6IEdvb2dsZU1hcHNSZXN1bHRUeXBlKTogTG9jYXRpb25UeXBlID0+IHtcbiAgY29uc3QgYWRkcmVzc0NvbXBvbmVudHM6IEdvb2dsZU1hcHNBZGRyZXNzVHlwZVtdID0gZ2VvZGF0YT8uYWRkcmVzc19jb21wb25lbnRzIHx8IFtdO1xuICBjb25zdCBzdHJlZXROdW1iZXIgPSBnZXRGaWVsZFZhbChhZGRyZXNzQ29tcG9uZW50cywgJ3N0cmVldF9udW1iZXInKTtcbiAgY29uc3Qgcm91dGUgPSBnZXRGaWVsZFZhbChhZGRyZXNzQ29tcG9uZW50cywgJ3JvdXRlJyk7XG4gIGNvbnN0IGdvb2dsZUlkID0gZ2VvZGF0YT8ucGxhY2VfaWQgfHwgJyc7XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRyZXNzOiBnZW9kYXRhPy5mb3JtYXR0ZWRfYWRkcmVzcyxcbiAgICBjaXR5OiBnZXRGaWVsZFZhbChhZGRyZXNzQ29tcG9uZW50cywgJ2xvY2FsaXR5JyksXG4gICAgY291bnRyeTogZ2V0RmllbGRWYWwoYWRkcmVzc0NvbXBvbmVudHMsICdjb3VudHJ5JyksXG4gICAgZm9ybWF0dGVkOiBnZW9kYXRhPy5mb3JtYXR0ZWRfYWRkcmVzcyxcbiAgICBnb29nbGVJZCxcbiAgICBpZDogZ29vZ2xlSWQsXG4gICAgbGF0aXR1ZGU6IGdlb2RhdGE/Lmdlb21ldHJ5LmxvY2F0aW9uLmxhdCxcbiAgICBsb2NhdGlvbjogZ2VvZGF0YT8uZm9ybWF0dGVkX2FkZHJlc3MsXG4gICAgbG9uZ2l0dWRlOiBnZW9kYXRhPy5nZW9tZXRyeS5sb2NhdGlvbi5sbmcsXG4gICAgc3RhdGU6IGdldEZpZWxkVmFsKGFkZHJlc3NDb21wb25lbnRzLCAnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xJyksXG4gICAgc3RyZWV0OiBbc3RyZWV0TnVtYmVyLCByb3V0ZV0uZmlsdGVyKChvYmopID0+IG9iaikuam9pbignICcpLFxuICAgIHppcDogZ2V0RmllbGRWYWwoYWRkcmVzc0NvbXBvbmVudHMsICdwb3N0YWxfY29kZScpXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRWYWwgPSAoYWRkcmVzc0NvbXBvbmVudHM6IEdvb2dsZU1hcHNBZGRyZXNzVHlwZVtdLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7c2hvcnRfbmFtZTogc2hvcnROYW1lID0gJyd9ID0gYWRkcmVzc0NvbXBvbmVudHMuZmluZCgoYWRkcmVzc0ZpZWxkOiBHb29nbGVNYXBzQWRkcmVzc1R5cGUpID0+IHtcbiAgICBjb25zdCB0eXBlcyA9IGFkZHJlc3NGaWVsZC50eXBlcyB8fCBbXTtcbiAgICByZXR1cm4gdHlwZXMuZmluZEluZGV4KChmaWVsZFR5cGU6IHN0cmluZykgPT4gZmllbGRUeXBlID09PSBuYW1lKSA+PSAwO1xuICB9KSB8fCB7fTtcblxuICByZXR1cm4gc2hvcnROYW1lO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZExvY2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2F0aW9uOiBMb2NhdGlvblR5cGUpOiBQcm9taXNlPExvY2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7YWRkcmVzcywgaXRlbUlkLCBpdGVtVHlwZX0gPSBsb2NhdGlvbjtcbiAgY29uc3QgZ2VvY29kZVVybCA9IENvbmZpZy5nZXQoJ2dvb2dsZS5nZW9jb2RlLnVybCcpO1xuICBjb25zdCBwYXJhbXM6IG9iamVjdCA9IHtcbiAgICBhZGRyZXNzLFxuICAgIGtleTogQ29uZmlnLmdldCgnZ29vZ2xlLmdlb2NvZGUua2V5JylcbiAgfTtcbiAgY29uc3QgdXJsID0gYCR7Z2VvY29kZVVybH0/JHtxdWVyeVN0cmluZyhwYXJhbXMpfWA7XG5cbiAgcmV0dXJuIGh0dHBHZXQodXJsKVxuICAgIC50aGVuKGFzeW5jIChqc29uKSA9PiB7XG4gICAgICBjb25zdCB7cmVzdWx0cyA9IFtdLCBzdGF0dXMgPSAnJ30gPSBqc29uO1xuXG4gICAgICBpZihzdGF0dXMgPT09ICdPSycgJiYgcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZ2VvZGF0YTogR29vZ2xlTWFwc1Jlc3VsdFR5cGUgPSByZXN1bHRzWzBdO1xuXG4gICAgICAgIC8vIEl0ZW1cbiAgICAgICAgY29uc3QgZm9ybWF0SXRlbVR5cGUgPSBwYXJzZUNoYXIoaXRlbVR5cGUpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGZvcm1hdEl0ZW1JZCA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgICAgICAgY29uc3QgZ29vZ2xlSWQgPSBnZW9kYXRhPy5wbGFjZV9pZCB8fCAnJztcblxuICAgICAgICAvLyBDaGVjayBpZiBsb2NhdGlvbiBhbHJlYWR5IGV4aXN0c1xuICAgICAgICBjb25zdCBleGlzdGluZ0xvY2F0aW9uID0gYXdhaXQgZ2V0SXRlbUJ5PExvY2F0aW9uVHlwZT4oY29udGV4dCwgJ2xvY2F0aW9ucycsIHtnb29nbGVJZH0pO1xuXG4gICAgICAgIGxldCB1cGRhdGVkTG9jYXRpb246IExvY2F0aW9uVHlwZTtcbiAgICAgICAgaWYoZXhpc3RpbmdMb2NhdGlvbikge1xuICAgICAgICAgIC8vIExvY2F0aW9uIGV4aXN0cywgdXNlIGl0XG4gICAgICAgICAgdXBkYXRlZExvY2F0aW9uID0gZXhpc3RpbmdMb2NhdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBDcmVhdGUgbmV3IGxvY2F0aW9uXG4gICAgICAgICAgY29uc3QgaW5zZXJ0OiBMb2NhdGlvblR5cGUgPSB7XG4gICAgICAgICAgICAuLi5tYXBHb29nbGVSZXN1bHRUb0xvY2F0aW9uKGdlb2RhdGEpLFxuICAgICAgICAgICAgX2tleTogY3JlYXRlSGFzaChgcG9zdC0ke3Nlc3Npb25JZH1gKVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICB1cGRhdGVkTG9jYXRpb24gPSBhd2FpdCBhZGRJdGVtPExvY2F0aW9uVHlwZT4oY29udGV4dCwgJ2xvY2F0aW9ucycsIGluc2VydCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7X2tleTogdXBkYXRlZExvY2F0aW9uS2V5fSA9IHVwZGF0ZWRMb2NhdGlvbjtcbiAgICAgICAgbGV0IGl0ZW1Eb2NJZDogc3RyaW5nO1xuXG4gICAgICAgIHN3aXRjaChmb3JtYXRJdGVtVHlwZSkge1xuICAgICAgICAgIGNhc2UgJ3Bvc3RzJzpcbiAgICAgICAgICAgIGl0ZW1Eb2NJZCA9IGBwb3N0cy8ke2Zvcm1hdEl0ZW1JZH1gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGl0ZW1Eb2NJZCA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSB2YWxpZCBpdGVtIGRvYyBpZCwgY3JlYXRlIGFuIGVkZ2VcbiAgICAgICAgaWYoaXRlbURvY0lkKSB7XG4gICAgICAgICAgY29uc3QgZWRnZUNvbGxlY3Rpb246IEVkZ2VDb2xsZWN0aW9uID0gdXNlRGIoZGF0YWJhc2VOYW1lKS5jb2xsZWN0aW9uKCdoYXNMb2NhdGlvbicpO1xuICAgICAgICAgIGNvbnN0IGxvY2F0aW9uSWQgPSB1cGRhdGVkTG9jYXRpb25LZXk7XG4gICAgICAgICAgY29uc3QgbG9jYXRpb25Eb2NJZCA9IGBsb2NhdGlvbnMvJHtsb2NhdGlvbklkfWA7XG4gICAgICAgICAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgaGFzTG9jYXRpb24tJHtsb2NhdGlvbklkfS0ke3Nlc3Npb25JZH1gKTtcbiAgICAgICAgICBjb25zdCBlZGdlOiBFZGdlVHlwZSA9IHtfZnJvbTogaXRlbURvY0lkLCBfa2V5OiBlZGdlSWQsIF90bzogbG9jYXRpb25Eb2NJZH07XG5cbiAgICAgICAgICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uc2F2ZShlZGdlLCB7cmV0dXJuTmV3OiB0cnVlfSkudGhlbigoKSA9PiB1cGRhdGVkTG9jYXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGp1c3QgcmV0dXJuIHRoZSBuZXcgbG9jYXRpb25cbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRMb2NhdGlvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBsb2NhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPExvY2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBmb3JtYXRJZCA9IHBhcnNlSWQobG9jYXRpb25JZCk7XG4gIHJldHVybiBnZXRJdGVtQnk8TG9jYXRpb25UeXBlPihjb250ZXh0LCAnbG9jYXRpb25zJywge19rZXk6IGZvcm1hdElkfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYXV0b0NvbXBsZXRlTG9jYXRpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgYWRkcmVzczogc3RyaW5nKTogUHJvbWlzZTxMb2NhdGlvblR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYXV0b0NvbXBsZXRlTG9jYXRpb24nO1xuICBjb25zdCBnZW9jb2RlVXJsID0gQ29uZmlnLmdldCgnZ29vZ2xlLmdlb2NvZGUudXJsJyk7XG4gIGNvbnN0IGdlb2NvZGVLZXkgPSBDb25maWcuZ2V0KCdnb29nbGUuZ2VvY29kZS5rZXknKTtcblxuICBpZighYWRkcmVzcyB8fCAhZ2VvY29kZVVybCB8fCAhZ2VvY29kZUtleSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICB9XG5cbiAgY29uc3QgcGFyYW1zOiBvYmplY3QgPSB7XG4gICAgYWRkcmVzcyxcbiAgICBrZXk6IGdlb2NvZGVLZXlcbiAgfTtcbiAgY29uc3QgdXJsID0gYCR7Z2VvY29kZVVybH0/JHtxdWVyeVN0cmluZyhwYXJhbXMpfWA7XG5cbiAgcmV0dXJuIGh0dHBHZXQodXJsKVxuICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICBjb25zdCB7cmVzdWx0cyA9IFtdLCBzdGF0dXMgPSAnJ30gPSBqc29uO1xuXG4gICAgICBpZihzdGF0dXMgPT09ICdPSycgJiYgcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHMubWFwKChyZXN1bHQ6IEdvb2dsZU1hcHNSZXN1bHRUeXBlKSA9PiBtYXBHb29nbGVSZXN1bHRUb0xvY2F0aW9uKHJlc3VsdCkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW107XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKCdMb2NhdGlvbiBhdXRvY29tcGxldGUgZmFpbGVkOicsIHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBbXTtcbiAgICB9KTtcbn07XG4iXSwibmFtZXMiOlsiZ2V0IiwiaHR0cEdldCIsInF1ZXJ5U3RyaW5nIiwiY3JlYXRlSGFzaCIsInBhcnNlQ2hhciIsInBhcnNlSWQiLCJDb25maWciLCJFcnJvclR5cGVzIiwibG9nRXJyb3IiLCJ1c2VEYiIsImFkZEl0ZW0iLCJnZXRJdGVtQnkiLCJldmVudENhdGVnb3J5IiwibWFwR29vZ2xlUmVzdWx0VG9Mb2NhdGlvbiIsImdlb2RhdGEiLCJhZGRyZXNzQ29tcG9uZW50cyIsImFkZHJlc3NfY29tcG9uZW50cyIsInN0cmVldE51bWJlciIsImdldEZpZWxkVmFsIiwicm91dGUiLCJnb29nbGVJZCIsInBsYWNlX2lkIiwiYWRkcmVzcyIsImZvcm1hdHRlZF9hZGRyZXNzIiwiY2l0eSIsImNvdW50cnkiLCJmb3JtYXR0ZWQiLCJpZCIsImxhdGl0dWRlIiwiZ2VvbWV0cnkiLCJsb2NhdGlvbiIsImxhdCIsImxvbmdpdHVkZSIsImxuZyIsInN0YXRlIiwic3RyZWV0IiwiZmlsdGVyIiwib2JqIiwiam9pbiIsInppcCIsIm5hbWUiLCJzaG9ydF9uYW1lIiwic2hvcnROYW1lIiwiZmluZCIsImFkZHJlc3NGaWVsZCIsInR5cGVzIiwiZmluZEluZGV4IiwiZmllbGRUeXBlIiwiYWRkTG9jYXRpb24iLCJjb250ZXh0IiwiYWN0aW9uIiwiZGF0YWJhc2VOYW1lIiwic2Vzc2lvbiIsInVzZXJJZCIsInNlc3Npb25JZCIsIml0ZW1JZCIsIml0ZW1UeXBlIiwiZ2VvY29kZVVybCIsInBhcmFtcyIsImtleSIsInVybCIsInRoZW4iLCJqc29uIiwicmVzdWx0cyIsInN0YXR1cyIsImxlbmd0aCIsImZvcm1hdEl0ZW1UeXBlIiwidG9Mb3dlckNhc2UiLCJmb3JtYXRJdGVtSWQiLCJleGlzdGluZ0xvY2F0aW9uIiwidXBkYXRlZExvY2F0aW9uIiwiaW5zZXJ0IiwiX2tleSIsInVwZGF0ZWRMb2NhdGlvbktleSIsIml0ZW1Eb2NJZCIsImVkZ2VDb2xsZWN0aW9uIiwiY29sbGVjdGlvbiIsImxvY2F0aW9uSWQiLCJsb2NhdGlvbkRvY0lkIiwiZWRnZUlkIiwiZWRnZSIsIl9mcm9tIiwiX3RvIiwic2F2ZSIsInJldHVybk5ldyIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiREFUQUJBU0VfRVJST1IiLCJnZXRMb2NhdGlvbiIsImZvcm1hdElkIiwiYXV0b0NvbXBsZXRlTG9jYXRpb24iLCJnZW9jb2RlS2V5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJtYXAiLCJyZXN1bHQiLCJjb25zb2xlIiwid2FybiIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLE9BQU9DLE9BQU8sRUFBRUMsV0FBVyxRQUFPLG9CQUFvQjtBQUM5RCxTQUFRQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxRQUFPLCtCQUErQjtBQUU1RSxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQUVwQyxTQUFRQyxVQUFVLFFBQU8sMEJBQTBCO0FBR25ELFNBQVFDLFFBQVEsUUFBTyw2QkFBNkI7QUFDcEQsU0FBUUMsS0FBSyxRQUFPLDRCQUE0QjtBQUNoRCxTQUFRQyxPQUFPLEVBQUVDLFNBQVMsUUFBTyxZQUFZO0FBSzdDLE1BQU1DLGdCQUFnQjtBQUV0QixNQUFNQyw0QkFBNEIsQ0FBQ0M7SUFDakMsTUFBTUMsb0JBQTZDRCxTQUFTRSxzQkFBc0IsRUFBRTtJQUNwRixNQUFNQyxlQUFlQyxZQUFZSCxtQkFBbUI7SUFDcEQsTUFBTUksUUFBUUQsWUFBWUgsbUJBQW1CO0lBQzdDLE1BQU1LLFdBQVdOLFNBQVNPLFlBQVk7SUFFdEMsT0FBTztRQUNMQyxTQUFTUixTQUFTUztRQUNsQkMsTUFBTU4sWUFBWUgsbUJBQW1CO1FBQ3JDVSxTQUFTUCxZQUFZSCxtQkFBbUI7UUFDeENXLFdBQVdaLFNBQVNTO1FBQ3BCSDtRQUNBTyxJQUFJUDtRQUNKUSxVQUFVZCxTQUFTZSxTQUFTQyxTQUFTQztRQUNyQ0QsVUFBVWhCLFNBQVNTO1FBQ25CUyxXQUFXbEIsU0FBU2UsU0FBU0MsU0FBU0c7UUFDdENDLE9BQU9oQixZQUFZSCxtQkFBbUI7UUFDdENvQixRQUFRO1lBQUNsQjtZQUFjRTtTQUFNLENBQUNpQixNQUFNLENBQUMsQ0FBQ0MsTUFBUUEsS0FBS0MsSUFBSSxDQUFDO1FBQ3hEQyxLQUFLckIsWUFBWUgsbUJBQW1CO0lBQ3RDO0FBQ0Y7QUFFQSxPQUFPLE1BQU1HLGNBQWMsQ0FBQ0gsbUJBQTRD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
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvbG9jYXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge2dldCBhcyBodHRwR2V0LCBxdWVyeVN0cmluZ30gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUNoYXIsIHBhcnNlSWR9IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL3N0cmluZ3MnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7R29vZ2xlTWFwc0FkZHJlc3NUeXBlLCBHb29nbGVNYXBzUmVzdWx0VHlwZX0gZnJvbSAnLi4vdHlwZXMvZ29vZ2xlLnR5cGVzLmpzJztcbmltcG9ydCB7TG9jYXRpb25UeXBlfSBmcm9tICcuLi90eXBlcy9sb2NhdGlvbnMudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge2FkZEl0ZW0sIGdldEl0ZW1CeX0gZnJvbSAnLi9jcnVkLmpzJztcblxuaW1wb3J0IHR5cGUge0VkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcy9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgdHlwZSB7RWRnZVR5cGV9IGZyb20gJy4uL3R5cGVzL2FyYW5nb2RiLnR5cGVzLmpzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdsb2NhdGlvbnMnO1xuXG5jb25zdCBtYXBHb29nbGVSZXN1bHRUb0xvY2F0aW9uID0gKGdlb2RhdGE6IEdvb2dsZU1hcHNSZXN1bHRUeXBlKTogTG9jYXRpb25UeXBlID0+IHtcbiAgY29uc3QgYWRkcmVzc0NvbXBvbmVudHM6IEdvb2dsZU1hcHNBZGRyZXNzVHlwZVtdID0gZ2VvZGF0YT8uYWRkcmVzc19jb21wb25lbnRzIHx8IFtdO1xuICBjb25zdCBzdHJlZXROdW1iZXIgPSBnZXRGaWVsZFZhbChhZGRyZXNzQ29tcG9uZW50cywgJ3N0cmVldF9udW1iZXInKTtcbiAgY29uc3Qgcm91dGUgPSBnZXRGaWVsZFZhbChhZGRyZXNzQ29tcG9uZW50cywgJ3JvdXRlJyk7XG4gIGNvbnN0IGdvb2dsZUlkID0gZ2VvZGF0YT8ucGxhY2VfaWQgfHwgJyc7XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRyZXNzOiBnZW9kYXRhPy5mb3JtYXR0ZWRfYWRkcmVzcyxcbiAgICBjaXR5OiBnZXRGaWVsZFZhbChhZGRyZXNzQ29tcG9uZW50cywgJ2xvY2FsaXR5JyksXG4gICAgY291bnRyeTogZ2V0RmllbGRWYWwoYWRkcmVzc0NvbXBvbmVudHMsICdjb3VudHJ5JyksXG4gICAgZm9ybWF0dGVkOiBnZW9kYXRhPy5mb3JtYXR0ZWRfYWRkcmVzcyxcbiAgICBnb29nbGVJZCxcbiAgICBpZDogZ29vZ2xlSWQsXG4gICAgbGF0aXR1ZGU6IGdlb2RhdGE/Lmdlb21ldHJ5LmxvY2F0aW9uLmxhdCxcbiAgICBsb2NhdGlvbjogZ2VvZGF0YT8uZm9ybWF0dGVkX2FkZHJlc3MsXG4gICAgbG9uZ2l0dWRlOiBnZW9kYXRhPy5nZW9tZXRyeS5sb2NhdGlvbi5sbmcsXG4gICAgc3RhdGU6IGdldEZpZWxkVmFsKGFkZHJlc3NDb21wb25lbnRzLCAnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xJyksXG4gICAgc3RyZWV0OiBbc3RyZWV0TnVtYmVyLCByb3V0ZV0uZmlsdGVyKChvYmopID0+IG9iaikuam9pbignICcpLFxuICAgIHppcDogZ2V0RmllbGRWYWwoYWRkcmVzc0NvbXBvbmVudHMsICdwb3N0YWxfY29kZScpXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRWYWwgPSAoYWRkcmVzc0NvbXBvbmVudHM6IEdvb2dsZU1hcHNBZGRyZXNzVHlwZVtdLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7c2hvcnRfbmFtZTogc2hvcnROYW1lID0gJyd9ID0gYWRkcmVzc0NvbXBvbmVudHMuZmluZCgoYWRkcmVzc0ZpZWxkOiBHb29nbGVNYXBzQWRkcmVzc1R5cGUpID0+IHtcbiAgICBjb25zdCB0eXBlcyA9IGFkZHJlc3NGaWVsZC50eXBlcyB8fCBbXTtcbiAgICByZXR1cm4gdHlwZXMuZmluZEluZGV4KChmaWVsZFR5cGU6IHN0cmluZykgPT4gZmllbGRUeXBlID09PSBuYW1lKSA+PSAwO1xuICB9KSB8fCB7fTtcblxuICByZXR1cm4gc2hvcnROYW1lO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZExvY2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2F0aW9uOiBMb2NhdGlvblR5cGUpOiBQcm9taXNlPExvY2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7YWRkcmVzcywgaXRlbUlkLCBpdGVtVHlwZX0gPSBsb2NhdGlvbjtcbiAgY29uc3QgZ2VvY29kZVVybCA9IENvbmZpZy5nZXQoJ2dvb2dsZS5nZW9jb2RlLnVybCcpO1xuICBjb25zdCBwYXJhbXM6IG9iamVjdCA9IHtcbiAgICBhZGRyZXNzLFxuICAgIGtleTogQ29uZmlnLmdldCgnZ29vZ2xlLmdlb2NvZGUua2V5JylcbiAgfTtcbiAgY29uc3QgdXJsID0gYCR7Z2VvY29kZVVybH0/JHtxdWVyeVN0cmluZyhwYXJhbXMpfWA7XG5cbiAgcmV0dXJuIGh0dHBHZXQodXJsKVxuICAgIC50aGVuKGFzeW5jIChqc29uKSA9PiB7XG4gICAgICBjb25zdCB7cmVzdWx0cyA9IFtdLCBzdGF0dXMgPSAnJ30gPSBqc29uO1xuXG4gICAgICBpZihzdGF0dXMgPT09ICdPSycgJiYgcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZ2VvZGF0YTogR29vZ2xlTWFwc1Jlc3VsdFR5cGUgPSByZXN1bHRzWzBdO1xuXG4gICAgICAgIC8vIEl0ZW1cbiAgICAgICAgY29uc3QgZm9ybWF0SXRlbVR5cGUgPSBwYXJzZUNoYXIoaXRlbVR5cGUpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGZvcm1hdEl0ZW1JZCA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgICAgICAgY29uc3QgZ29vZ2xlSWQgPSBnZW9kYXRhPy5wbGFjZV9pZCB8fCAnJztcblxuICAgICAgICAvLyBDaGVjayBpZiBsb2NhdGlvbiBhbHJlYWR5IGV4aXN0c1xuICAgICAgICBjb25zdCBleGlzdGluZ0xvY2F0aW9uID0gYXdhaXQgZ2V0SXRlbUJ5PExvY2F0aW9uVHlwZT4oY29udGV4dCwgJ2xvY2F0aW9ucycsIHtnb29nbGVJZH0pO1xuXG4gICAgICAgIGxldCB1cGRhdGVkTG9jYXRpb246IExvY2F0aW9uVHlwZTtcbiAgICAgICAgaWYoZXhpc3RpbmdMb2NhdGlvbikge1xuICAgICAgICAgIC8vIExvY2F0aW9uIGV4aXN0cywgdXNlIGl0XG4gICAgICAgICAgdXBkYXRlZExvY2F0aW9uID0gZXhpc3RpbmdMb2NhdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBDcmVhdGUgbmV3IGxvY2F0aW9uXG4gICAgICAgICAgY29uc3QgaW5zZXJ0OiBMb2NhdGlvblR5cGUgPSB7XG4gICAgICAgICAgICAuLi5tYXBHb29nbGVSZXN1bHRUb0xvY2F0aW9uKGdlb2RhdGEpLFxuICAgICAgICAgICAgX2tleTogY3JlYXRlSGFzaChgcG9zdC0ke3Nlc3Npb25JZH1gKVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICB1cGRhdGVkTG9jYXRpb24gPSBhd2FpdCBhZGRJdGVtPExvY2F0aW9uVHlwZT4oY29udGV4dCwgJ2xvY2F0aW9ucycsIGluc2VydCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7X2tleTogdXBkYXRlZExvY2F0aW9uS2V5fSA9IHVwZGF0ZWRMb2NhdGlvbjtcbiAgICAgICAgbGV0IGl0ZW1Eb2NJZDogc3RyaW5nO1xuXG4gICAgICAgIHN3aXRjaChmb3JtYXRJdGVtVHlwZSkge1xuICAgICAgICAgIGNhc2UgJ3Bvc3RzJzpcbiAgICAgICAgICAgIGl0ZW1Eb2NJZCA9IGBwb3N0cy8ke2Zvcm1hdEl0ZW1JZH1gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGl0ZW1Eb2NJZCA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSB2YWxpZCBpdGVtIGRvYyBpZCwgY3JlYXRlIGFuIGVkZ2VcbiAgICAgICAgaWYoaXRlbURvY0lkKSB7XG4gICAgICAgICAgY29uc3QgZWRnZUNvbGxlY3Rpb246IEVkZ2VDb2xsZWN0aW9uID0gdXNlRGIoZGF0YWJhc2VOYW1lKS5jb2xsZWN0aW9uKCdoYXNMb2NhdGlvbicpO1xuICAgICAgICAgIGNvbnN0IGxvY2F0aW9uSWQgPSB1cGRhdGVkTG9jYXRpb25LZXk7XG4gICAgICAgICAgY29uc3QgbG9jYXRpb25Eb2NJZCA9IGBsb2NhdGlvbnMvJHtsb2NhdGlvbklkfWA7XG4gICAgICAgICAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgaGFzTG9jYXRpb24tJHtsb2NhdGlvbklkfS0ke3Nlc3Npb25JZH1gKTtcbiAgICAgICAgICBjb25zdCBlZGdlOiBFZGdlVHlwZSA9IHtfZnJvbTogaXRlbURvY0lkLCBfa2V5OiBlZGdlSWQsIF90bzogbG9jYXRpb25Eb2NJZH07XG5cbiAgICAgICAgICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uc2F2ZShlZGdlLCB7cmV0dXJuTmV3OiB0cnVlfSkudGhlbigoKSA9PiB1cGRhdGVkTG9jYXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGp1c3QgcmV0dXJuIHRoZSBuZXcgbG9jYXRpb25cbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRMb2NhdGlvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBsb2NhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPExvY2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBmb3JtYXRJZCA9IHBhcnNlSWQobG9jYXRpb25JZCk7XG4gIHJldHVybiBnZXRJdGVtQnk8TG9jYXRpb25UeXBlPihjb250ZXh0LCAnbG9jYXRpb25zJywge19rZXk6IGZvcm1hdElkfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYXV0b0NvbXBsZXRlTG9jYXRpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgYWRkcmVzczogc3RyaW5nKTogUHJvbWlzZTxMb2NhdGlvblR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYXV0b0NvbXBsZXRlTG9jYXRpb24nO1xuICBjb25zdCBnZW9jb2RlVXJsID0gQ29uZmlnLmdldCgnZ29vZ2xlLmdlb2NvZGUudXJsJyk7XG4gIGNvbnN0IGdlb2NvZGVLZXkgPSBDb25maWcuZ2V0KCdnb29nbGUuZ2VvY29kZS5rZXknKTtcblxuICBpZighYWRkcmVzcyB8fCAhZ2VvY29kZVVybCB8fCAhZ2VvY29kZUtleSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICB9XG5cbiAgY29uc3QgcGFyYW1zOiBvYmplY3QgPSB7XG4gICAgYWRkcmVzcyxcbiAgICBrZXk6IGdlb2NvZGVLZXlcbiAgfTtcbiAgY29uc3QgdXJsID0gYCR7Z2VvY29kZVVybH0/JHtxdWVyeVN0cmluZyhwYXJhbXMpfWA7XG5cbiAgcmV0dXJuIGh0dHBHZXQodXJsKVxuICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICBjb25zdCB7cmVzdWx0cyA9IFtdLCBzdGF0dXMgPSAnJ30gPSBqc29uO1xuXG4gICAgICBpZihzdGF0dXMgPT09ICdPSycgJiYgcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHMubWFwKChyZXN1bHQ6IEdvb2dsZU1hcHNSZXN1bHRUeXBlKSA9PiBtYXBHb29nbGVSZXN1bHRUb0xvY2F0aW9uKHJlc3VsdCkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW107XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKCdMb2NhdGlvbiBhdXRvY29tcGxldGUgZmFpbGVkOicsIHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBbXTtcbiAgICB9KTtcbn07XG4iXSwibmFtZXMiOlsiZ2V0IiwiaHR0cEdldCIsInF1ZXJ5U3RyaW5nIiwiY3JlYXRlSGFzaCIsInBhcnNlQ2hhciIsInBhcnNlSWQiLCJDb25maWciLCJFcnJvclR5cGVzIiwibG9nRXJyb3IiLCJ1c2VEYiIsImFkZEl0ZW0iLCJnZXRJdGVtQnkiLCJldmVudENhdGVnb3J5IiwibWFwR29vZ2xlUmVzdWx0VG9Mb2NhdGlvbiIsImdlb2RhdGEiLCJhZGRyZXNzQ29tcG9uZW50cyIsImFkZHJlc3NfY29tcG9uZW50cyIsInN0cmVldE51bWJlciIsImdldEZpZWxkVmFsIiwicm91dGUiLCJnb29nbGVJZCIsInBsYWNlX2lkIiwiYWRkcmVzcyIsImZvcm1hdHRlZF9hZGRyZXNzIiwiY2l0eSIsImNvdW50cnkiLCJmb3JtYXR0ZWQiLCJpZCIsImxhdGl0dWRlIiwiZ2VvbWV0cnkiLCJsb2NhdGlvbiIsImxhdCIsImxvbmdpdHVkZSIsImxuZyIsInN0YXRlIiwic3RyZWV0IiwiZmlsdGVyIiwib2JqIiwiam9pbiIsInppcCIsIm5hbWUiLCJzaG9ydF9uYW1lIiwic2hvcnROYW1lIiwiZmluZCIsImFkZHJlc3NGaWVsZCIsInR5cGVzIiwiZmluZEluZGV4IiwiZmllbGRUeXBlIiwiYWRkTG9jYXRpb24iLCJjb250ZXh0IiwiYWN0aW9uIiwiZGF0YWJhc2VOYW1lIiwic2Vzc2lvbiIsInVzZXJJZCIsInNlc3Npb25JZCIsIml0ZW1JZCIsIml0ZW1UeXBlIiwiZ2VvY29kZVVybCIsInBhcmFtcyIsImtleSIsInVybCIsInRoZW4iLCJqc29uIiwicmVzdWx0cyIsInN0YXR1cyIsImxlbmd0aCIsImZvcm1hdEl0ZW1UeXBlIiwidG9Mb3dlckNhc2UiLCJmb3JtYXRJdGVtSWQiLCJleGlzdGluZ0xvY2F0aW9uIiwidXBkYXRlZExvY2F0aW9uIiwiaW5zZXJ0IiwiX2tleSIsInVwZGF0ZWRMb2NhdGlvbktleSIsIml0ZW1Eb2NJZCIsImVkZ2VDb2xsZWN0aW9uIiwiY29sbGVjdGlvbiIsImxvY2F0aW9uSWQiLCJsb2NhdGlvbkRvY0lkIiwiZWRnZUlkIiwiZWRnZSIsIl9mcm9tIiwiX3RvIiwic2F2ZSIsInJldHVybk5ldyIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiREFUQUJBU0VfRVJST1IiLCJnZXRMb2NhdGlvbiIsImZvcm1hdElkIiwiYXV0b0NvbXBsZXRlTG9jYXRpb24iLCJnZW9jb2RlS2V5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJtYXAiLCJyZXN1bHQiLCJjb25zb2xlIiwid2FybiIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLE9BQU9DLE9BQU8sRUFBRUMsV0FBVyxRQUFPLG9CQUFvQjtBQUM5RCxTQUFRQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxRQUFPLCtCQUErQjtBQUU1RSxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQUVwQyxTQUFRQyxVQUFVLFFBQU8sMEJBQTBCO0FBR25ELFNBQVFDLFFBQVEsUUFBTyw2QkFBNkI7QUFDcEQsU0FBUUMsS0FBSyxRQUFPLDRCQUE0QjtBQUNoRCxTQUFRQyxPQUFPLEVBQUVDLFNBQVMsUUFBTyxZQUFZO0FBSzdDLE1BQU1DLGdCQUFnQjtBQUV0QixNQUFNQyw0QkFBNEIsQ0FBQ0M7SUFDakMsTUFBTUMsb0JBQTZDRCxTQUFTRSxzQkFBc0IsRUFBRTtJQUNwRixNQUFNQyxlQUFlQyxZQUFZSCxtQkFBbUI7SUFDcEQsTUFBTUksUUFBUUQsWUFBWUgsbUJBQW1CO0lBQzdDLE1BQU1LLFdBQVdOLFNBQVNPLFlBQVk7SUFFdEMsT0FBTztRQUNMQyxTQUFTUixTQUFTUztRQUNsQkMsTUFBTU4sWUFBWUgsbUJBQW1CO1FBQ3JDVSxTQUFTUCxZQUFZSCxtQkFBbUI7UUFDeENXLFdBQVdaLFNBQVNTO1FBQ3BCSDtRQUNBTyxJQUFJUDtRQUNKUSxVQUFVZCxTQUFTZSxTQUFTQyxTQUFTQztRQUNyQ0QsVUFBVWhCLFNBQVNTO1FBQ25CUyxXQUFXbEIsU0FBU2UsU0FBU0MsU0FBU0c7UUFDdENDLE9BQU9oQixZQUFZSCxtQkFBbUI7UUFDdENvQixRQUFRO1lBQUNsQjtZQUFjRTtTQUFNLENBQUNpQixNQUFNLENBQUMsQ0FBQ0MsTUFBUUEsS0FBS0MsSUFBSSxDQUFDO1FBQ3hEQyxLQUFLckIsWUFBWUgsbUJBQW1CO0lBQ3RDO0FBQ0Y7QUFFQSxPQUFPLE1BQU1HLGNB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
|