payload-auth 1.3.4 → 1.4.1
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/dist/better-auth/adapter/index.d.ts +10 -0
- package/dist/better-auth/adapter/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/index.js +151 -125
- package/dist/better-auth/adapter/transform/index.d.ts +2 -4
- package/dist/better-auth/adapter/transform/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/transform/index.js +433 -309
- package/dist/better-auth/plugin/constants.d.ts +2 -0
- package/dist/better-auth/plugin/constants.d.ts.map +1 -1
- package/dist/better-auth/plugin/constants.js +4 -2
- package/dist/better-auth/plugin/helpers/check-passkey-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/check-passkey-plugin.js +3 -2
- package/dist/better-auth/plugin/helpers/check-two-factor-plugin.d.ts +3 -0
- package/dist/better-auth/plugin/helpers/check-two-factor-plugin.d.ts.map +1 -0
- package/dist/better-auth/plugin/helpers/check-two-factor-plugin.js +6 -0
- package/dist/better-auth/plugin/helpers/check-username-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/check-username-plugin.js +3 -2
- package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts +52 -6
- package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/prepare-session-data.js +52 -35
- package/dist/better-auth/plugin/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/index.js +16 -2
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sessions.js +3 -1
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +2 -2
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +6 -4
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/index.js +7 -2
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +16 -14
- package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts +4 -0
- package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js +344 -0
- package/dist/better-auth/plugin/payload/components/two-factor-auth/index.scss +113 -0
- package/dist/better-auth/plugin/payload/exports/client.d.ts +2 -1
- package/dist/better-auth/plugin/payload/exports/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/exports/client.js +3 -2
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts +2 -1
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/exports/rsc.js +3 -2
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/client.js +14 -5
- package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/index.js +1 -3
- package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts +5 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js +77 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts +10 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js +44 -0
- package/dist/shared/form/components/submit.js +3 -1
- package/dist/shared/utils/value-or-default.d.ts +10 -0
- package/dist/shared/utils/value-or-default.d.ts.map +1 -0
- package/dist/shared/utils/value-or-default.js +12 -0
- package/package.json +13 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/build-collections/users/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAmBzF,wBAAgB,oBAAoB,CAAC,EACnC,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EAClB,EAAE;IACD,mBAAmB,EAAE,gBAAgB,EAAE,CAAA;IACvC,aAAa,EAAE,uBAAuB,CAAA;IACtC,iBAAiB,EAAE,0BAA0B,CAAA;CAC9C,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/build-collections/users/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAmBzF,wBAAgB,oBAAoB,CAAC,EACnC,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EAClB,EAAE;IACD,mBAAmB,EAAE,gBAAgB,EAAE,CAAA;IACvC,aAAa,EAAE,uBAAuB,CAAA;IACtC,iBAAiB,EAAE,0BAA0B,CAAA;CAC9C,oBA0TA"}
|
|
@@ -229,7 +229,12 @@ export function buildUsersCollection({ incomingCollections, pluginOptions, bette
|
|
|
229
229
|
defaultValue: false,
|
|
230
230
|
label: 'Two Factor Enabled',
|
|
231
231
|
admin: {
|
|
232
|
-
description: 'Whether the user has two factor authentication enabled'
|
|
232
|
+
description: 'Whether the user has two factor authentication enabled',
|
|
233
|
+
components: {
|
|
234
|
+
Field: {
|
|
235
|
+
path: 'payload-auth/better-auth/plugin/client#TwoFactorAuth'
|
|
236
|
+
}
|
|
237
|
+
}
|
|
233
238
|
}
|
|
234
239
|
});
|
|
235
240
|
break;
|
|
@@ -332,4 +337,4 @@ export function buildUsersCollection({ incomingCollections, pluginOptions, bette
|
|
|
332
337
|
return usersCollection;
|
|
333
338
|
}
|
|
334
339
|
|
|
335
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb25Db25maWcgfSBmcm9tICdwYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9ucywgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcydcbmltcG9ydCB7IGJhc2VDb2xsZWN0aW9uU2x1Z3MgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnXG5pbXBvcnQgeyBpc0FkbWluT3JDdXJyZW50VXNlclVwZGF0ZVdpdGhBbGxvd2VkRmllbGRzLCBpc0FkbWluT3JDdXJyZW50VXNlcldpdGhSb2xlcywgaXNBZG1pbldpdGhSb2xlcyB9IGZyb20gJy4uL3V0aWxzL3BheWxvYWQtYWNjZXNzJ1xuaW1wb3J0IHsgZ2V0UmVmcmVzaFRva2VuRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy9yZWZyZXNoLXRva2VuJ1xuaW1wb3J0IHsgb25WZXJpZmllZENoYW5nZSB9IGZyb20gJy4vaG9va3Mvb24tdmVyaWZpZWQtY2hhbmdlJ1xuaW1wb3J0IHsgZ2V0U3luY0FjY291bnRIb29rIH0gZnJvbSAnLi9ob29rcy9zeW5jLWFjY291bnQnXG5pbXBvcnQgeyBnZXRCZWZvcmVMb2dpbkhvb2sgfSBmcm9tICcuL2hvb2tzL2JlZm9yZS1sb2dpbidcbmltcG9ydCB7IGdldEFmdGVyTG9naW5Ib29rIH0gZnJvbSAnLi9ob29rcy9hZnRlci1sb2dpbidcbmltcG9ydCB7IGdldEFmdGVyTG9nb3V0SG9vayB9IGZyb20gJy4vaG9va3MvYWZ0ZXItbG9nb3V0J1xuaW1wb3J0IHsgZ2V0QmVmb3JlRGVsZXRlSG9vayB9IGZyb20gJy4vaG9va3MvYmVmb3JlLWRlbGV0ZSdcbmltcG9ydCB7IGJldHRlckF1dGhTdHJhdGVneSB9IGZyb20gJy4vYmV0dGVyLWF1dGgtc3RyYXRlZ3knXG5pbXBvcnQgeyBnZXRUaW1lc3RhbXBGaWVsZHMgfSBmcm9tICcuLi91dGlscy9nZXQtdGltZXN0YW1wLWZpZWxkcydcbmltcG9ydCB7IGdldEFsbFJvbGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9nZXQtYWxsLXJvbGVzJ1xuaW1wb3J0IHsgZ2V0U2lnbnVwRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy9zaWdudXAnXG5pbXBvcnQgeyBnZXRTZXRBZG1pblJvbGVFbmRwb2ludCB9IGZyb20gJy4vZW5kcG9pbnRzL3NldC1hZG1pbi1yb2xlJ1xuaW1wb3J0IHsgZ2V0R2VuZXJhdGVJbnZpdGVVcmxFbmRwb2ludCB9IGZyb20gJy4vZW5kcG9pbnRzL2dlbmVyYXRlLWludml0ZS11cmwnXG5pbXBvcnQgeyBnZXRTZW5kSW52aXRlVXJsRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy9zZW5kLWludml0ZS11cmwnXG5pbXBvcnQgeyBjaGVja1VzZXJuYW1lUGx1Z2luIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9jaGVjay11c2VybmFtZS1wbHVnaW4nXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVzZXJzQ29sbGVjdGlvbih7XG4gIGluY29taW5nQ29sbGVjdGlvbnMsXG4gIHBsdWdpbk9wdGlvbnMsXG4gIGJldHRlckF1dGhPcHRpb25zXG59OiB7XG4gIGluY29taW5nQ29sbGVjdGlvbnM6IENvbGxlY3Rpb25Db25maWdbXVxuICBwbHVnaW5PcHRpb25zOiBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9uc1xuICBiZXR0ZXJBdXRoT3B0aW9uczogU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnNcbn0pIHtcbiAgY29uc3QgdXNlclNsdWcgPSBwbHVnaW5PcHRpb25zLnVzZXJzPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3MudXNlcnNcbiAgY29uc3QgYWNjb3VudFNsdWcgPSBwbHVnaW5PcHRpb25zLmFjY291bnRzPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3MuYWNjb3VudHNcbiAgY29uc3Qgc2Vzc2lvblNsdWcgPSBwbHVnaW5PcHRpb25zLnNlc3Npb25zPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3Muc2Vzc2lvbnNcbiAgY29uc3QgdmVyaWZpY2F0aW9uc1NsdWcgPSBwbHVnaW5PcHRpb25zLnZlcmlmaWNhdGlvbnM/LnNsdWcgPz8gYmFzZUNvbGxlY3Rpb25TbHVncy52ZXJpZmljYXRpb25zXG4gIGNvbnN0IGJhUGx1Z2lucyA9IGJldHRlckF1dGhPcHRpb25zLnBsdWdpbnMgPz8gbnVsbFxuICBjb25zdCBhZG1pblJvbGVzID0gcGx1Z2luT3B0aW9ucy51c2Vycz8uYWRtaW5Sb2xlcyA/PyBbJ2FkbWluJ11cbiAgY29uc3QgYWxsUm9sZU9wdGlvbnMgPSBnZXRBbGxSb2xlT3B0aW9ucyhwbHVnaW5PcHRpb25zKVxuICBjb25zdCBoYXNVc2VybmFtZVBsdWdpbiA9IGNoZWNrVXNlcm5hbWVQbHVnaW4oYmV0dGVyQXV0aE9wdGlvbnMpXG4gIGNvbnN0IGV4aXN0aW5nVXNlckNvbGxlY3Rpb24gPSBpbmNvbWluZ0NvbGxlY3Rpb25zLmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gdXNlclNsdWcpIGFzIENvbGxlY3Rpb25Db25maWcgfCB1bmRlZmluZWRcblxuICBjb25zdCBhbGxvd2VkRmllbGRzID0gcGx1Z2luT3B0aW9ucy51c2Vycz8uYWxsb3dlZEZpZWxkcyA/PyBbJ25hbWUnXVxuXG4gIGxldCB1c2Vyc0NvbGxlY3Rpb246IENvbGxlY3Rpb25Db25maWcgPSB7XG4gICAgLi4uZXhpc3RpbmdVc2VyQ29sbGVjdGlvbixcbiAgICBzbHVnOiB1c2VyU2x1ZyxcbiAgICBhZG1pbjoge1xuICAgICAgZGVmYXVsdENvbHVtbnM6IFsnZW1haWwnXSxcbiAgICAgIHVzZUFzVGl0bGU6ICdlbWFpbCcsXG4gICAgICBncm91cDogcGx1Z2luT3B0aW9ucz8uY29sbGVjdGlvbkFkbWluR3JvdXAgPz8gJ0F1dGgnLFxuICAgICAgLi4uZXhpc3RpbmdVc2VyQ29sbGVjdGlvbj8uYWRtaW4sXG4gICAgICBoaWRkZW46IHBsdWdpbk9wdGlvbnMudXNlcnM/LmhpZGRlbiA/PyBmYWxzZSxcbiAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBwYXRoOiAncGF5bG9hZC1hdXRoL2JldHRlci1hdXRoL3BsdWdpbi9jbGllbnQjQWRtaW5JbnZpdGVCdXR0b24nLFxuICAgICAgICAgIGNsaWVudFByb3BzOiB7XG4gICAgICAgICAgICByb2xlczogYWxsUm9sZU9wdGlvbnNcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHZpZXdzOiB7XG4gICAgICAgICAgZWRpdDoge1xuICAgICAgICAgICAgYWRtaW5CdXR0b25zOiB7XG4gICAgICAgICAgICAgIHRhYjoge1xuICAgICAgICAgICAgICAgIENvbXBvbmVudDoge1xuICAgICAgICAgICAgICAgICAgcGF0aDogJ3BheWxvYWQtYXV0aC9iZXR0ZXItYXV0aC9wbHVnaW4vY2xpZW50I0FkbWluQnV0dG9ucycsXG4gICAgICAgICAgICAgICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICAgICAgICAgICAgICB1c2VyU2x1Z1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBPbmx5IHNob3cgdGhlIGltcGVyc29uYXRlIGJ1dHRvbiBpZiB0aGUgYWRtaW4gcGx1Z2luIGlzIGVuYWJsZWRcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoYmFQbHVnaW5zICYmIGJhUGx1Z2lucy5zb21lKChwbHVnaW4pID0+IHBsdWdpbi5pZCA9PT0gJ2FkbWluJykpID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhY2Nlc3M6IHtcbiAgICAgIGFkbWluOiAoeyByZXEgfSkgPT4gYWRtaW5Sb2xlcy5pbmNsdWRlcygocmVxLnVzZXI/LnJvbGUgYXMgc3RyaW5nKSA/PyAndXNlcicpLFxuICAgICAgcmVhZDogaXNBZG1pbk9yQ3VycmVudFVzZXJXaXRoUm9sZXMoeyBhZG1pblJvbGVzLCBpZEZpZWxkOiAnaWQnIH0pLFxuICAgICAgY3JlYXRlOiBpc0FkbWluV2l0aFJvbGVzKHsgYWRtaW5Sb2xlcyB9KSxcbiAgICAgIGRlbGV0ZTogaXNBZG1pbk9yQ3VycmVudFVzZXJXaXRoUm9sZXMoeyBhZG1pblJvbGVzLCBpZEZpZWxkOiAnaWQnIH0pLFxuICAgICAgdXBkYXRlOiBpc0FkbWluT3JDdXJyZW50VXNlclVwZGF0ZVdpdGhBbGxvd2VkRmllbGRzKHtcbiAgICAgICAgYWxsb3dlZEZpZWxkcyxcbiAgICAgICAgYWRtaW5Sb2xlcyxcbiAgICAgICAgdXNlclNsdWdcbiAgICAgIH0pLFxuICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/LmFjY2VzcyA/PyB7fSlcbiAgICB9LFxuICAgIGVuZHBvaW50czogW1xuICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/LmVuZHBvaW50cyA/IGV4aXN0aW5nVXNlckNvbGxlY3Rpb24uZW5kcG9pbnRzIDogW10pLFxuICAgICAgZ2V0UmVmcmVzaFRva2VuRW5kcG9pbnQodXNlclNsdWcpLFxuICAgICAgZ2V0U2V0QWRtaW5Sb2xlRW5kcG9pbnQocGx1Z2luT3B0aW9ucywgdXNlclNsdWcpLFxuICAgICAgZ2V0R2VuZXJhdGVJbnZpdGVVcmxFbmRwb2ludCh7XG4gICAgICAgIHJvbGVzOiBhbGxSb2xlT3B0aW9ucyxcbiAgICAgICAgcGx1Z2luT3B0aW9uc1xuICAgICAgfSksXG4gICAgICBnZXRTZW5kSW52aXRlVXJsRW5kcG9pbnQocGx1Z2luT3B0aW9ucyksXG4gICAgICBnZXRTaWdudXBFbmRwb2ludChwbHVnaW5PcHRpb25zLCBiZXR0ZXJBdXRoT3B0aW9ucylcbiAgICBdLFxuICAgIGhvb2tzOiB7XG4gICAgICBiZWZvcmVDaGFuZ2U6IFtcbiAgICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/Lmhvb2tzPy5iZWZvcmVDaGFuZ2UgPz8gW10pLFxuICAgICAgICAuLi4ocGx1Z2luT3B0aW9ucy5kaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoID8gW10gOiBbb25WZXJpZmllZENoYW5nZV0pXG4gICAgICBdLFxuICAgICAgYWZ0ZXJDaGFuZ2U6IFtcbiAgICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/Lmhvb2tzPy5hZnRlckNoYW5nZSA/PyBbXSksXG4gICAgICAgIC4uLihwbHVnaW5PcHRpb25zLmRpc2FibGVEZWZhdWx0UGF5bG9hZEF1dGhcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIGdldFN5bmNBY2NvdW50SG9vayh7XG4gICAgICAgICAgICAgICAgdXNlclNsdWcsXG4gICAgICAgICAgICAgICAgYWNjb3VudFNsdWdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICBdLFxuICAgICAgYmVmb3JlTG9naW46IFtcbiAgICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/Lmhvb2tzPy5iZWZvcmVMb2dpbiA/PyBbXSksXG4gICAgICAgIC4uLihwbHVnaW5PcHRpb25zLmRpc2FibGVEZWZhdWx0UGF5bG9hZEF1dGggPyBbXSA6IFtnZXRCZWZvcmVMb2dpbkhvb2soKV0pXG4gICAgICBdLFxuICAgICAgYWZ0ZXJMb2dpbjogW1xuICAgICAgICAuLi4oZXhpc3RpbmdVc2VyQ29sbGVjdGlvbj8uaG9va3M/LmFmdGVyTG9naW4gPz8gW10pLFxuICAgICAgICAuLi4ocGx1Z2luT3B0aW9ucy5kaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICBnZXRBZnRlckxvZ2luSG9vayh7XG4gICAgICAgICAgICAgICAgc2Vzc2lvbnNDb2xsZWN0aW9uU2x1Zzogc2Vzc2lvblNsdWcsXG4gICAgICAgICAgICAgICAgdXNlcnNDb2xsZWN0aW9uU2x1ZzogdXNlclNsdWdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICBdLFxuICAgICAgYWZ0ZXJMb2dvdXQ6IFsuLi4oZXhpc3RpbmdVc2VyQ29sbGVjdGlvbj8uaG9va3M/LmFmdGVyTG9nb3V0ID8/IFtdKSwgZ2V0QWZ0ZXJMb2dvdXRIb29rKHsgc2Vzc2lvbnNDb2xsZWN0aW9uU2x1Zzogc2Vzc2lvblNsdWcgfSldLFxuICAgICAgYmVmb3JlRGVsZXRlOiBbXG4gICAgICAgIC4uLihleGlzdGluZ1VzZXJDb2xsZWN0aW9uPy5ob29rcz8uYmVmb3JlRGVsZXRlID8/IFtdKSxcbiAgICAgICAgZ2V0QmVmb3JlRGVsZXRlSG9vayh7XG4gICAgICAgICAgYWNjb3VudHNTbHVnOiBhY2NvdW50U2x1ZyxcbiAgICAgICAgICBzZXNzaW9uc1NsdWc6IHNlc3Npb25TbHVnLFxuICAgICAgICAgIHZlcmlmaWNhdGlvbnNTbHVnOiB2ZXJpZmljYXRpb25zU2x1Z1xuICAgICAgICB9KVxuICAgICAgXVxuICAgIH0sXG4gICAgYXV0aDoge1xuICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24gJiYgdHlwZW9mIGV4aXN0aW5nVXNlckNvbGxlY3Rpb24uYXV0aCA9PT0gJ29iamVjdCcgPyBleGlzdGluZ1VzZXJDb2xsZWN0aW9uLmF1dGggOiB7fSksXG4gICAgICBkaXNhYmxlTG9jYWxTdHJhdGVneTogcGx1Z2luT3B0aW9ucy5kaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoID8gdHJ1ZSA6IHVuZGVmaW5lZCxcbiAgICAgIC4uLihoYXNVc2VybmFtZVBsdWdpbiAmJiB7XG4gICAgICAgIGxvZ2luV2l0aFVzZXJuYW1lOiB7XG4gICAgICAgICAgYWxsb3dFbWFpbExvZ2luOiB0cnVlLFxuICAgICAgICAgIHJlcXVpcmVFbWFpbDogdHJ1ZSxcbiAgICAgICAgICByZXF1aXJlVXNlcm5hbWU6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3RyYXRlZ2llczogW2JldHRlckF1dGhTdHJhdGVneSh1c2VyU2x1ZyldXG4gICAgfSxcbiAgICBmaWVsZHM6IFtcbiAgICAgIC4uLihleGlzdGluZ1VzZXJDb2xsZWN0aW9uPy5maWVsZHMgPz8gW10pLFxuICAgICAge1xuICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgbGFiZWw6ICdOYW1lJyxcbiAgICAgICAgc2F2ZVRvSldUOiB0cnVlLFxuICAgICAgICBhZG1pbjoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlcnMgY2hvc2VuIGRpc3BsYXkgbmFtZSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2VtYWlsJyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgdW5pcXVlOiB0cnVlLFxuICAgICAgICBpbmRleDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6ICdFbWFpbCcsXG4gICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgZW1haWwgb2YgdGhlIHVzZXInXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdlbWFpbFZlcmlmaWVkJyxcbiAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIHNhdmVUb0pXVDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6ICdFbWFpbCBWZXJpZmllZCcsXG4gICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSBlbWFpbCBvZiB0aGUgdXNlciBoYXMgYmVlbiB2ZXJpZmllZCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2ltYWdlJyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICBsYWJlbDogJ0ltYWdlJyxcbiAgICAgICAgc2F2ZVRvSldUOiBmYWxzZSxcbiAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBpbWFnZSBvZiB0aGUgdXNlcidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JvbGUnLFxuICAgICAgICBsYWJlbDogJ1JvbGUnLFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogcGx1Z2luT3B0aW9ucy51c2Vycz8uZGVmYXVsdFJvbGUgPz8gJ3VzZXInLFxuICAgICAgICBzYXZlVG9KV1Q6IHRydWUsXG4gICAgICAgIG9wdGlvbnM6IGFsbFJvbGVPcHRpb25zLFxuICAgICAgICBhZG1pbjoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHJvbGUgb2YgdGhlIHVzZXInXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAuLi5nZXRUaW1lc3RhbXBGaWVsZHMoe1xuICAgICAgICBzYXZlVXBkYXRlZEF0VG9KV1Q6IGZhbHNlLFxuICAgICAgICBzYXZlQ3JlYXRlZEF0VG9KV1Q6IGZhbHNlXG4gICAgICB9KVxuICAgIF1cbiAgfVxuXG4gIGlmIChiYVBsdWdpbnMpIHtcbiAgICBiYVBsdWdpbnMuZm9yRWFjaCgocGx1Z2luKSA9PiB7XG4gICAgICBzd2l0Y2ggKHBsdWdpbi5pZCkge1xuICAgICAgICBjYXNlICd0d28tZmFjdG9yJzpcbiAgICAgICAgICB1c2Vyc0NvbGxlY3Rpb24uZmllbGRzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogJ3R3b0ZhY3RvckVuYWJsZWQnLFxuICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgICAgICBsYWJlbDogJ1R3byBGYWN0b3IgRW5hYmxlZCcsXG4gICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIHVzZXIgaGFzIHR3byBmYWN0b3IgYXV0aGVudGljYXRpb24gZW5hYmxlZCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3VzZXJuYW1lJzpcbiAgICAgICAgICB1c2Vyc0NvbGxlY3Rpb24uZmllbGRzLnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd1c2VybmFtZScsXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdW5pcXVlOiB0cnVlLFxuICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsIC8vIFRPRE86IGRlY2lkZSBpZiB0aGlzIHNob3VsZCBiZSByZXF1aXJlZCwgd2lsbCBoYXZlIHRvIHRlbGwgdXNlcnMgdGhleSBuZWVkIHRvIGFkZCB1aSBmb3IgaXQuXG4gICAgICAgICAgICAgIGxhYmVsOiAnVXNlcm5hbWUnLFxuICAgICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHVzZXJuYW1lIG9mIHRoZSB1c2VyJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnZGlzcGxheVVzZXJuYW1lJyxcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgIGxhYmVsOiAnRGlzcGxheSBVc2VybmFtZScsXG4gICAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgZGlzcGxheSB1c2VybmFtZSBvZiB0aGUgdXNlcidcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdhbm9ueW1vdXMnOlxuICAgICAgICAgIHVzZXJzQ29sbGVjdGlvbi5maWVsZHMucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiAnaXNBbm9ueW1vdXMnLFxuICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgICAgICBsYWJlbDogJ0lzIEFub255bW91cycsXG4gICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIHVzZXIgaXMgYW5vbnltb3VzLidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3Bob25lLW51bWJlcic6XG4gICAgICAgICAgdXNlcnNDb2xsZWN0aW9uLmZpZWxkcy5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAncGhvbmVOdW1iZXInLFxuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIGxhYmVsOiAnUGhvbmUgTnVtYmVyJyxcbiAgICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBwaG9uZSBudW1iZXIgb2YgdGhlIHVzZXInXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdwaG9uZU51bWJlclZlcmlmaWVkJyxcbiAgICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgICAgbGFiZWw6ICdQaG9uZSBOdW1iZXIgVmVyaWZpZWQnLFxuICAgICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciB0aGUgcGhvbmUgbnVtYmVyIG9mIHRoZSB1c2VyIGhhcyBiZWVuIHZlcmlmaWVkJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2FkbWluJzpcbiAgICAgICAgICB1c2Vyc0NvbGxlY3Rpb24uZmllbGRzLnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdiYW5uZWQnLFxuICAgICAgICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgICBsYWJlbDogJ0Jhbm5lZCcsXG4gICAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSB1c2VyIGlzIGJhbm5lZCBmcm9tIHRoZSBwbGF0Zm9ybSdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2JhblJlYXNvbicsXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgbGFiZWw6ICdCYW4gUmVhc29uJyxcbiAgICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSByZWFzb24gZm9yIHRoZSBiYW4nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdiYW5FeHBpcmVzJyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICAgICAgICBsYWJlbDogJ0JhbiBFeHBpcmVzJyxcbiAgICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBkYXRlIGFuZCB0aW1lIHdoZW4gdGhlIGJhbiB3aWxsIGV4cGlyZSdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdoYXJtb255LWVtYWlsJzpcbiAgICAgICAgICB1c2Vyc0NvbGxlY3Rpb24uZmllbGRzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogJ25vcm1hbGl6ZWRFbWFpbCcsXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICB1bmlxdWU6IHRydWUsXG4gICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgbm9ybWFsaXplZCBlbWFpbCBvZiB0aGUgdXNlcidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgaWYgKHBsdWdpbk9wdGlvbnMudXNlcnM/LmNvbGxlY3Rpb25PdmVycmlkZXMpIHtcbiAgICB1c2Vyc0NvbGxlY3Rpb24gPSBwbHVnaW5PcHRpb25zLnVzZXJzLmNvbGxlY3Rpb25PdmVycmlkZXMoe1xuICAgICAgY29sbGVjdGlvbjogdXNlcnNDb2xsZWN0aW9uXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiB1c2Vyc0NvbGxlY3Rpb25cbn1cbiJdLCJuYW1lcyI6WyJiYXNlQ29sbGVjdGlvblNsdWdzIiwiaXNBZG1pbk9yQ3VycmVudFVzZXJVcGRhdGVXaXRoQWxsb3dlZEZpZWxkcyIsImlzQWRtaW5PckN1cnJlbnRVc2VyV2l0aFJvbGVzIiwiaXNBZG1pbldpdGhSb2xlcyIsImdldFJlZnJlc2hUb2tlbkVuZHBvaW50Iiwib25WZXJpZmllZENoYW5nZSIsImdldFN5bmNBY2NvdW50SG9vayIsImdldEJlZm9yZUxvZ2luSG9vayIsImdldEFmdGVyTG9naW5Ib29rIiwiZ2V0QWZ0ZXJMb2dvdXRIb29rIiwiZ2V0QmVmb3JlRGVsZXRlSG9vayIsImJldHRlckF1dGhTdHJhdGVneSIsImdldFRpbWVzdGFtcEZpZWxkcyIsImdldEFsbFJvbGVPcHRpb25zIiwiZ2V0U2lnbnVwRW5kcG9pbnQiLCJnZXRTZXRBZG1pblJvbGVFbmRwb2ludCIsImdldEdlbmVyYXRlSW52aXRlVXJsRW5kcG9pbnQiLCJnZXRTZW5kSW52aXRlVXJsRW5kcG9pbnQiLCJjaGVja1VzZXJuYW1lUGx1Z2luIiwiYnVpbGRVc2Vyc0NvbGxlY3Rpb24iLCJpbmNvbWluZ0NvbGxlY3Rpb25zIiwicGx1Z2luT3B0aW9ucyIsImJldHRlckF1dGhPcHRpb25zIiwidXNlclNsdWciLCJ1c2VycyIsInNsdWciLCJhY2NvdW50U2x1ZyIsImFjY291bnRzIiwic2Vzc2lvblNsdWciLCJzZXNzaW9ucyIsInZlcmlmaWNhdGlvbnNTbHVnIiwidmVyaWZpY2F0aW9ucyIsImJhUGx1Z2lucyIsInBsdWdpbnMiLCJhZG1pblJvbGVzIiwiYWxsUm9sZU9wdGlvbnMiLCJoYXNVc2VybmFtZVBsdWdpbiIsImV4aXN0aW5nVXNlckNvbGxlY3Rpb24iLCJmaW5kIiwiY29sbGVjdGlvbiIsImFsbG93ZWRGaWVsZHMiLCJ1c2Vyc0NvbGxlY3Rpb24iLCJhZG1pbiIsImRlZmF1bHRDb2x1bW5zIiwidXNlQXNUaXRsZSIsImdyb3VwIiwiY29sbGVjdGlvbkFkbWluR3JvdXAiLCJoaWRkZW4iLCJjb21wb25lbnRzIiwiRGVzY3JpcHRpb24iLCJwYXRoIiwiY2xpZW50UHJvcHMiLCJyb2xlcyIsInZpZXdzIiwiZWRpdCIsImFkbWluQnV0dG9ucyIsInRhYiIsIkNvbXBvbmVudCIsImNvbmRpdGlvbiIsInNvbWUiLCJwbHVnaW4iLCJpZCIsImFjY2VzcyIsInJlcSIsImluY2x1ZGVzIiwidXNlciIsInJvbGUiLCJyZWFkIiwiaWRGaWVsZCIsImNyZWF0ZSIsImRlbGV0ZSIsInVwZGF0ZSIsImVuZHBvaW50cyIsImhvb2tzIiwiYmVmb3JlQ2hhbmdlIiwiZGlzYWJsZURlZmF1bHRQYXlsb2FkQXV0aCIsImFmdGVyQ2hhbmdlIiwiYmVmb3JlTG9naW4iLCJhZnRlckxvZ2luIiwic2Vzc2lvbnNDb2xsZWN0aW9uU2x1ZyIsInVzZXJzQ29sbGVjdGlvblNsdWciLCJhZnRlckxvZ291dCIsImJlZm9yZURlbGV0ZSIsImFjY291bnRzU2x1ZyIsInNlc3Npb25zU2x1ZyIsImF1dGgiLCJkaXNhYmxlTG9jYWxTdHJhdGVneSIsInVuZGVmaW5lZCIsImxvZ2luV2l0aFVzZXJuYW1lIiwiYWxsb3dFbWFpbExvZ2luIiwicmVxdWlyZUVtYWlsIiwicmVxdWlyZVVzZXJuYW1lIiwic3RyYXRlZ2llcyIsImZpZWxkcyIsIm5hbWUiLCJ0eXBlIiwibGFiZWwiLCJzYXZlVG9KV1QiLCJkZXNjcmlwdGlvbiIsInJlcXVpcmVkIiwidW5pcXVlIiwiaW5kZXgiLCJkZWZhdWx0VmFsdWUiLCJkZWZhdWx0Um9sZSIsIm9wdGlvbnMiLCJzYXZlVXBkYXRlZEF0VG9KV1QiLCJzYXZlQ3JlYXRlZEF0VG9KV1QiLCJmb3JFYWNoIiwicHVzaCIsInJlYWRPbmx5IiwiY29sbGVjdGlvbk92ZXJyaWRlcyJdLCJtYXBwaW5ncyI6IkFBRUEsU0FBU0EsbUJBQW1CLFFBQVEscUJBQW9CO0FBQ3hELFNBQVNDLDJDQUEyQyxFQUFFQyw2QkFBNkIsRUFBRUMsZ0JBQWdCLFFBQVEsMEJBQXlCO0FBQ3RJLFNBQVNDLHVCQUF1QixRQUFRLDRCQUEyQjtBQUNuRSxTQUFTQyxnQkFBZ0IsUUFBUSw2QkFBNEI7QUFDN0QsU0FBU0Msa0JBQWtCLFFBQVEsdUJBQXNCO0FBQ3pELFNBQVNDLGtCQUFrQixRQUFRLHVCQUFzQjtBQUN6RCxTQUFTQyxpQkFBaUIsUUFBUSxzQkFBcUI7QUFDdkQsU0FBU0Msa0JBQWtCLFFBQVEsdUJBQXNC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
|
|
340
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb25Db25maWcgfSBmcm9tICdwYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9ucywgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcydcbmltcG9ydCB7IGJhc2VDb2xsZWN0aW9uU2x1Z3MgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnXG5pbXBvcnQgeyBpc0FkbWluT3JDdXJyZW50VXNlclVwZGF0ZVdpdGhBbGxvd2VkRmllbGRzLCBpc0FkbWluT3JDdXJyZW50VXNlcldpdGhSb2xlcywgaXNBZG1pbldpdGhSb2xlcyB9IGZyb20gJy4uL3V0aWxzL3BheWxvYWQtYWNjZXNzJ1xuaW1wb3J0IHsgZ2V0UmVmcmVzaFRva2VuRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy9yZWZyZXNoLXRva2VuJ1xuaW1wb3J0IHsgb25WZXJpZmllZENoYW5nZSB9IGZyb20gJy4vaG9va3Mvb24tdmVyaWZpZWQtY2hhbmdlJ1xuaW1wb3J0IHsgZ2V0U3luY0FjY291bnRIb29rIH0gZnJvbSAnLi9ob29rcy9zeW5jLWFjY291bnQnXG5pbXBvcnQgeyBnZXRCZWZvcmVMb2dpbkhvb2sgfSBmcm9tICcuL2hvb2tzL2JlZm9yZS1sb2dpbidcbmltcG9ydCB7IGdldEFmdGVyTG9naW5Ib29rIH0gZnJvbSAnLi9ob29rcy9hZnRlci1sb2dpbidcbmltcG9ydCB7IGdldEFmdGVyTG9nb3V0SG9vayB9IGZyb20gJy4vaG9va3MvYWZ0ZXItbG9nb3V0J1xuaW1wb3J0IHsgZ2V0QmVmb3JlRGVsZXRlSG9vayB9IGZyb20gJy4vaG9va3MvYmVmb3JlLWRlbGV0ZSdcbmltcG9ydCB7IGJldHRlckF1dGhTdHJhdGVneSB9IGZyb20gJy4vYmV0dGVyLWF1dGgtc3RyYXRlZ3knXG5pbXBvcnQgeyBnZXRUaW1lc3RhbXBGaWVsZHMgfSBmcm9tICcuLi91dGlscy9nZXQtdGltZXN0YW1wLWZpZWxkcydcbmltcG9ydCB7IGdldEFsbFJvbGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9nZXQtYWxsLXJvbGVzJ1xuaW1wb3J0IHsgZ2V0U2lnbnVwRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy9zaWdudXAnXG5pbXBvcnQgeyBnZXRTZXRBZG1pblJvbGVFbmRwb2ludCB9IGZyb20gJy4vZW5kcG9pbnRzL3NldC1hZG1pbi1yb2xlJ1xuaW1wb3J0IHsgZ2V0R2VuZXJhdGVJbnZpdGVVcmxFbmRwb2ludCB9IGZyb20gJy4vZW5kcG9pbnRzL2dlbmVyYXRlLWludml0ZS11cmwnXG5pbXBvcnQgeyBnZXRTZW5kSW52aXRlVXJsRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy9zZW5kLWludml0ZS11cmwnXG5pbXBvcnQgeyBjaGVja1VzZXJuYW1lUGx1Z2luIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9jaGVjay11c2VybmFtZS1wbHVnaW4nXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVzZXJzQ29sbGVjdGlvbih7XG4gIGluY29taW5nQ29sbGVjdGlvbnMsXG4gIHBsdWdpbk9wdGlvbnMsXG4gIGJldHRlckF1dGhPcHRpb25zXG59OiB7XG4gIGluY29taW5nQ29sbGVjdGlvbnM6IENvbGxlY3Rpb25Db25maWdbXVxuICBwbHVnaW5PcHRpb25zOiBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9uc1xuICBiZXR0ZXJBdXRoT3B0aW9uczogU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnNcbn0pIHtcbiAgY29uc3QgdXNlclNsdWcgPSBwbHVnaW5PcHRpb25zLnVzZXJzPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3MudXNlcnNcbiAgY29uc3QgYWNjb3VudFNsdWcgPSBwbHVnaW5PcHRpb25zLmFjY291bnRzPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3MuYWNjb3VudHNcbiAgY29uc3Qgc2Vzc2lvblNsdWcgPSBwbHVnaW5PcHRpb25zLnNlc3Npb25zPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3Muc2Vzc2lvbnNcbiAgY29uc3QgdmVyaWZpY2F0aW9uc1NsdWcgPSBwbHVnaW5PcHRpb25zLnZlcmlmaWNhdGlvbnM/LnNsdWcgPz8gYmFzZUNvbGxlY3Rpb25TbHVncy52ZXJpZmljYXRpb25zXG4gIGNvbnN0IGJhUGx1Z2lucyA9IGJldHRlckF1dGhPcHRpb25zLnBsdWdpbnMgPz8gbnVsbFxuICBjb25zdCBhZG1pblJvbGVzID0gcGx1Z2luT3B0aW9ucy51c2Vycz8uYWRtaW5Sb2xlcyA/PyBbJ2FkbWluJ11cbiAgY29uc3QgYWxsUm9sZU9wdGlvbnMgPSBnZXRBbGxSb2xlT3B0aW9ucyhwbHVnaW5PcHRpb25zKVxuICBjb25zdCBoYXNVc2VybmFtZVBsdWdpbiA9IGNoZWNrVXNlcm5hbWVQbHVnaW4oYmV0dGVyQXV0aE9wdGlvbnMpXG4gIGNvbnN0IGV4aXN0aW5nVXNlckNvbGxlY3Rpb24gPSBpbmNvbWluZ0NvbGxlY3Rpb25zLmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gdXNlclNsdWcpIGFzIENvbGxlY3Rpb25Db25maWcgfCB1bmRlZmluZWRcblxuICBjb25zdCBhbGxvd2VkRmllbGRzID0gcGx1Z2luT3B0aW9ucy51c2Vycz8uYWxsb3dlZEZpZWxkcyA/PyBbJ25hbWUnXVxuXG4gIGxldCB1c2Vyc0NvbGxlY3Rpb246IENvbGxlY3Rpb25Db25maWcgPSB7XG4gICAgLi4uZXhpc3RpbmdVc2VyQ29sbGVjdGlvbixcbiAgICBzbHVnOiB1c2VyU2x1ZyxcbiAgICBhZG1pbjoge1xuICAgICAgZGVmYXVsdENvbHVtbnM6IFsnZW1haWwnXSxcbiAgICAgIHVzZUFzVGl0bGU6ICdlbWFpbCcsXG4gICAgICBncm91cDogcGx1Z2luT3B0aW9ucz8uY29sbGVjdGlvbkFkbWluR3JvdXAgPz8gJ0F1dGgnLFxuICAgICAgLi4uZXhpc3RpbmdVc2VyQ29sbGVjdGlvbj8uYWRtaW4sXG4gICAgICBoaWRkZW46IHBsdWdpbk9wdGlvbnMudXNlcnM/LmhpZGRlbiA/PyBmYWxzZSxcbiAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBwYXRoOiAncGF5bG9hZC1hdXRoL2JldHRlci1hdXRoL3BsdWdpbi9jbGllbnQjQWRtaW5JbnZpdGVCdXR0b24nLFxuICAgICAgICAgIGNsaWVudFByb3BzOiB7XG4gICAgICAgICAgICByb2xlczogYWxsUm9sZU9wdGlvbnNcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHZpZXdzOiB7XG4gICAgICAgICAgZWRpdDoge1xuICAgICAgICAgICAgYWRtaW5CdXR0b25zOiB7XG4gICAgICAgICAgICAgIHRhYjoge1xuICAgICAgICAgICAgICAgIENvbXBvbmVudDoge1xuICAgICAgICAgICAgICAgICAgcGF0aDogJ3BheWxvYWQtYXV0aC9iZXR0ZXItYXV0aC9wbHVnaW4vY2xpZW50I0FkbWluQnV0dG9ucycsXG4gICAgICAgICAgICAgICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICAgICAgICAgICAgICB1c2VyU2x1Z1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBPbmx5IHNob3cgdGhlIGltcGVyc29uYXRlIGJ1dHRvbiBpZiB0aGUgYWRtaW4gcGx1Z2luIGlzIGVuYWJsZWRcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoYmFQbHVnaW5zICYmIGJhUGx1Z2lucy5zb21lKChwbHVnaW4pID0+IHBsdWdpbi5pZCA9PT0gJ2FkbWluJykpID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhY2Nlc3M6IHtcbiAgICAgIGFkbWluOiAoeyByZXEgfSkgPT4gYWRtaW5Sb2xlcy5pbmNsdWRlcygocmVxLnVzZXI/LnJvbGUgYXMgc3RyaW5nKSA/PyAndXNlcicpLFxuICAgICAgcmVhZDogaXNBZG1pbk9yQ3VycmVudFVzZXJXaXRoUm9sZXMoeyBhZG1pblJvbGVzLCBpZEZpZWxkOiAnaWQnIH0pLFxuICAgICAgY3JlYXRlOiBpc0FkbWluV2l0aFJvbGVzKHsgYWRtaW5Sb2xlcyB9KSxcbiAgICAgIGRlbGV0ZTogaXNBZG1pbk9yQ3VycmVudFVzZXJXaXRoUm9sZXMoeyBhZG1pblJvbGVzLCBpZEZpZWxkOiAnaWQnIH0pLFxuICAgICAgdXBkYXRlOiBpc0FkbWluT3JDdXJyZW50VXNlclVwZGF0ZVdpdGhBbGxvd2VkRmllbGRzKHtcbiAgICAgICAgYWxsb3dlZEZpZWxkcyxcbiAgICAgICAgYWRtaW5Sb2xlcyxcbiAgICAgICAgdXNlclNsdWdcbiAgICAgIH0pLFxuICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/LmFjY2VzcyA/PyB7fSlcbiAgICB9LFxuICAgIGVuZHBvaW50czogW1xuICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/LmVuZHBvaW50cyA/IGV4aXN0aW5nVXNlckNvbGxlY3Rpb24uZW5kcG9pbnRzIDogW10pLFxuICAgICAgZ2V0UmVmcmVzaFRva2VuRW5kcG9pbnQodXNlclNsdWcpLFxuICAgICAgZ2V0U2V0QWRtaW5Sb2xlRW5kcG9pbnQocGx1Z2luT3B0aW9ucywgdXNlclNsdWcpLFxuICAgICAgZ2V0R2VuZXJhdGVJbnZpdGVVcmxFbmRwb2ludCh7XG4gICAgICAgIHJvbGVzOiBhbGxSb2xlT3B0aW9ucyxcbiAgICAgICAgcGx1Z2luT3B0aW9uc1xuICAgICAgfSksXG4gICAgICBnZXRTZW5kSW52aXRlVXJsRW5kcG9pbnQocGx1Z2luT3B0aW9ucyksXG4gICAgICBnZXRTaWdudXBFbmRwb2ludChwbHVnaW5PcHRpb25zLCBiZXR0ZXJBdXRoT3B0aW9ucylcbiAgICBdLFxuICAgIGhvb2tzOiB7XG4gICAgICBiZWZvcmVDaGFuZ2U6IFtcbiAgICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/Lmhvb2tzPy5iZWZvcmVDaGFuZ2UgPz8gW10pLFxuICAgICAgICAuLi4ocGx1Z2luT3B0aW9ucy5kaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoID8gW10gOiBbb25WZXJpZmllZENoYW5nZV0pXG4gICAgICBdLFxuICAgICAgYWZ0ZXJDaGFuZ2U6IFtcbiAgICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/Lmhvb2tzPy5hZnRlckNoYW5nZSA/PyBbXSksXG4gICAgICAgIC4uLihwbHVnaW5PcHRpb25zLmRpc2FibGVEZWZhdWx0UGF5bG9hZEF1dGhcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIGdldFN5bmNBY2NvdW50SG9vayh7XG4gICAgICAgICAgICAgICAgdXNlclNsdWcsXG4gICAgICAgICAgICAgICAgYWNjb3VudFNsdWdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICBdLFxuICAgICAgYmVmb3JlTG9naW46IFtcbiAgICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24/Lmhvb2tzPy5iZWZvcmVMb2dpbiA/PyBbXSksXG4gICAgICAgIC4uLihwbHVnaW5PcHRpb25zLmRpc2FibGVEZWZhdWx0UGF5bG9hZEF1dGggPyBbXSA6IFtnZXRCZWZvcmVMb2dpbkhvb2soKV0pXG4gICAgICBdLFxuICAgICAgYWZ0ZXJMb2dpbjogW1xuICAgICAgICAuLi4oZXhpc3RpbmdVc2VyQ29sbGVjdGlvbj8uaG9va3M/LmFmdGVyTG9naW4gPz8gW10pLFxuICAgICAgICAuLi4ocGx1Z2luT3B0aW9ucy5kaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICBnZXRBZnRlckxvZ2luSG9vayh7XG4gICAgICAgICAgICAgICAgc2Vzc2lvbnNDb2xsZWN0aW9uU2x1Zzogc2Vzc2lvblNsdWcsXG4gICAgICAgICAgICAgICAgdXNlcnNDb2xsZWN0aW9uU2x1ZzogdXNlclNsdWdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0pXG4gICAgICBdLFxuICAgICAgYWZ0ZXJMb2dvdXQ6IFsuLi4oZXhpc3RpbmdVc2VyQ29sbGVjdGlvbj8uaG9va3M/LmFmdGVyTG9nb3V0ID8/IFtdKSwgZ2V0QWZ0ZXJMb2dvdXRIb29rKHsgc2Vzc2lvbnNDb2xsZWN0aW9uU2x1Zzogc2Vzc2lvblNsdWcgfSldLFxuICAgICAgYmVmb3JlRGVsZXRlOiBbXG4gICAgICAgIC4uLihleGlzdGluZ1VzZXJDb2xsZWN0aW9uPy5ob29rcz8uYmVmb3JlRGVsZXRlID8/IFtdKSxcbiAgICAgICAgZ2V0QmVmb3JlRGVsZXRlSG9vayh7XG4gICAgICAgICAgYWNjb3VudHNTbHVnOiBhY2NvdW50U2x1ZyxcbiAgICAgICAgICBzZXNzaW9uc1NsdWc6IHNlc3Npb25TbHVnLFxuICAgICAgICAgIHZlcmlmaWNhdGlvbnNTbHVnOiB2ZXJpZmljYXRpb25zU2x1Z1xuICAgICAgICB9KVxuICAgICAgXVxuICAgIH0sXG4gICAgYXV0aDoge1xuICAgICAgLi4uKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24gJiYgdHlwZW9mIGV4aXN0aW5nVXNlckNvbGxlY3Rpb24uYXV0aCA9PT0gJ29iamVjdCcgPyBleGlzdGluZ1VzZXJDb2xsZWN0aW9uLmF1dGggOiB7fSksXG4gICAgICBkaXNhYmxlTG9jYWxTdHJhdGVneTogcGx1Z2luT3B0aW9ucy5kaXNhYmxlRGVmYXVsdFBheWxvYWRBdXRoID8gdHJ1ZSA6IHVuZGVmaW5lZCxcbiAgICAgIC4uLihoYXNVc2VybmFtZVBsdWdpbiAmJiB7XG4gICAgICAgIGxvZ2luV2l0aFVzZXJuYW1lOiB7XG4gICAgICAgICAgYWxsb3dFbWFpbExvZ2luOiB0cnVlLFxuICAgICAgICAgIHJlcXVpcmVFbWFpbDogdHJ1ZSxcbiAgICAgICAgICByZXF1aXJlVXNlcm5hbWU6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3RyYXRlZ2llczogW2JldHRlckF1dGhTdHJhdGVneSh1c2VyU2x1ZyldXG4gICAgfSxcbiAgICBmaWVsZHM6IFtcbiAgICAgIC4uLihleGlzdGluZ1VzZXJDb2xsZWN0aW9uPy5maWVsZHMgPz8gW10pLFxuICAgICAge1xuICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgbGFiZWw6ICdOYW1lJyxcbiAgICAgICAgc2F2ZVRvSldUOiB0cnVlLFxuICAgICAgICBhZG1pbjoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlcnMgY2hvc2VuIGRpc3BsYXkgbmFtZSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2VtYWlsJyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgdW5pcXVlOiB0cnVlLFxuICAgICAgICBpbmRleDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6ICdFbWFpbCcsXG4gICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgZW1haWwgb2YgdGhlIHVzZXInXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdlbWFpbFZlcmlmaWVkJyxcbiAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIHNhdmVUb0pXVDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6ICdFbWFpbCBWZXJpZmllZCcsXG4gICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSBlbWFpbCBvZiB0aGUgdXNlciBoYXMgYmVlbiB2ZXJpZmllZCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2ltYWdlJyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICBsYWJlbDogJ0ltYWdlJyxcbiAgICAgICAgc2F2ZVRvSldUOiBmYWxzZSxcbiAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBpbWFnZSBvZiB0aGUgdXNlcidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JvbGUnLFxuICAgICAgICBsYWJlbDogJ1JvbGUnLFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogcGx1Z2luT3B0aW9ucy51c2Vycz8uZGVmYXVsdFJvbGUgPz8gJ3VzZXInLFxuICAgICAgICBzYXZlVG9KV1Q6IHRydWUsXG4gICAgICAgIG9wdGlvbnM6IGFsbFJvbGVPcHRpb25zLFxuICAgICAgICBhZG1pbjoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHJvbGUgb2YgdGhlIHVzZXInXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAuLi5nZXRUaW1lc3RhbXBGaWVsZHMoe1xuICAgICAgICBzYXZlVXBkYXRlZEF0VG9KV1Q6IGZhbHNlLFxuICAgICAgICBzYXZlQ3JlYXRlZEF0VG9KV1Q6IGZhbHNlXG4gICAgICB9KVxuICAgIF1cbiAgfVxuXG4gIGlmIChiYVBsdWdpbnMpIHtcbiAgICBiYVBsdWdpbnMuZm9yRWFjaCgocGx1Z2luKSA9PiB7XG4gICAgICBzd2l0Y2ggKHBsdWdpbi5pZCkge1xuICAgICAgICBjYXNlICd0d28tZmFjdG9yJzpcbiAgICAgICAgICB1c2Vyc0NvbGxlY3Rpb24uZmllbGRzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogJ3R3b0ZhY3RvckVuYWJsZWQnLFxuICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgICAgICBsYWJlbDogJ1R3byBGYWN0b3IgRW5hYmxlZCcsXG4gICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIHVzZXIgaGFzIHR3byBmYWN0b3IgYXV0aGVudGljYXRpb24gZW5hYmxlZCcsXG4gICAgICAgICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgICAgICBGaWVsZDoge1xuICAgICAgICAgICAgICAgICAgcGF0aDogJ3BheWxvYWQtYXV0aC9iZXR0ZXItYXV0aC9wbHVnaW4vY2xpZW50I1R3b0ZhY3RvckF1dGgnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICd1c2VybmFtZSc6XG4gICAgICAgICAgdXNlcnNDb2xsZWN0aW9uLmZpZWxkcy5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndXNlcm5hbWUnLFxuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHVuaXF1ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLCAvLyBUT0RPOiBkZWNpZGUgaWYgdGhpcyBzaG91bGQgYmUgcmVxdWlyZWQsIHdpbGwgaGF2ZSB0byB0ZWxsIHVzZXJzIHRoZXkgbmVlZCB0byBhZGQgdWkgZm9yIGl0LlxuICAgICAgICAgICAgICBsYWJlbDogJ1VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSB1c2VybmFtZSBvZiB0aGUgdXNlcidcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2Rpc3BsYXlVc2VybmFtZScsXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBsYWJlbDogJ0Rpc3BsYXkgVXNlcm5hbWUnLFxuICAgICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIGRpc3BsYXkgdXNlcm5hbWUgb2YgdGhlIHVzZXInXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnYW5vbnltb3VzJzpcbiAgICAgICAgICB1c2Vyc0NvbGxlY3Rpb24uZmllbGRzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogJ2lzQW5vbnltb3VzJyxcbiAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgbGFiZWw6ICdJcyBBbm9ueW1vdXMnLFxuICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSB1c2VyIGlzIGFub255bW91cy4nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdwaG9uZS1udW1iZXInOlxuICAgICAgICAgIHVzZXJzQ29sbGVjdGlvbi5maWVsZHMucHVzaChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3Bob25lTnVtYmVyJyxcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICBsYWJlbDogJ1Bob25lIE51bWJlcicsXG4gICAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgcGhvbmUgbnVtYmVyIG9mIHRoZSB1c2VyJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAncGhvbmVOdW1iZXJWZXJpZmllZCcsXG4gICAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgICAgICAgIGxhYmVsOiAnUGhvbmUgTnVtYmVyIFZlcmlmaWVkJyxcbiAgICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdGhlIHBob25lIG51bWJlciBvZiB0aGUgdXNlciBoYXMgYmVlbiB2ZXJpZmllZCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdhZG1pbic6XG4gICAgICAgICAgdXNlcnNDb2xsZWN0aW9uLmZpZWxkcy5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnYmFubmVkJyxcbiAgICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgICAgbGFiZWw6ICdCYW5uZWQnLFxuICAgICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciB0aGUgdXNlciBpcyBiYW5uZWQgZnJvbSB0aGUgcGxhdGZvcm0nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdiYW5SZWFzb24nLFxuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIGxhYmVsOiAnQmFuIFJlYXNvbicsXG4gICAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgcmVhc29uIGZvciB0aGUgYmFuJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnYmFuRXhwaXJlcycsXG4gICAgICAgICAgICAgIHR5cGU6ICdkYXRlJyxcbiAgICAgICAgICAgICAgbGFiZWw6ICdCYW4gRXhwaXJlcycsXG4gICAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgZGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBiYW4gd2lsbCBleHBpcmUnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnaGFybW9ueS1lbWFpbCc6XG4gICAgICAgICAgdXNlcnNDb2xsZWN0aW9uLmZpZWxkcy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6ICdub3JtYWxpemVkRW1haWwnLFxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgdW5pcXVlOiB0cnVlLFxuICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIG5vcm1hbGl6ZWQgZW1haWwgb2YgdGhlIHVzZXInXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGlmIChwbHVnaW5PcHRpb25zLnVzZXJzPy5jb2xsZWN0aW9uT3ZlcnJpZGVzKSB7XG4gICAgdXNlcnNDb2xsZWN0aW9uID0gcGx1Z2luT3B0aW9ucy51c2Vycy5jb2xsZWN0aW9uT3ZlcnJpZGVzKHtcbiAgICAgIGNvbGxlY3Rpb246IHVzZXJzQ29sbGVjdGlvblxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gdXNlcnNDb2xsZWN0aW9uXG59XG4iXSwibmFtZXMiOlsiYmFzZUNvbGxlY3Rpb25TbHVncyIsImlzQWRtaW5PckN1cnJlbnRVc2VyVXBkYXRlV2l0aEFsbG93ZWRGaWVsZHMiLCJpc0FkbWluT3JDdXJyZW50VXNlcldpdGhSb2xlcyIsImlzQWRtaW5XaXRoUm9sZXMiLCJnZXRSZWZyZXNoVG9rZW5FbmRwb2ludCIsIm9uVmVyaWZpZWRDaGFuZ2UiLCJnZXRTeW5jQWNjb3VudEhvb2siLCJnZXRCZWZvcmVMb2dpbkhvb2siLCJnZXRBZnRlckxvZ2luSG9vayIsImdldEFmdGVyTG9nb3V0SG9vayIsImdldEJlZm9yZURlbGV0ZUhvb2siLCJiZXR0ZXJBdXRoU3RyYXRlZ3kiLCJnZXRUaW1lc3RhbXBGaWVsZHMiLCJnZXRBbGxSb2xlT3B0aW9ucyIsImdldFNpZ251cEVuZHBvaW50IiwiZ2V0U2V0QWRtaW5Sb2xlRW5kcG9pbnQiLCJnZXRHZW5lcmF0ZUludml0ZVVybEVuZHBvaW50IiwiZ2V0U2VuZEludml0ZVVybEVuZHBvaW50IiwiY2hlY2tVc2VybmFtZVBsdWdpbiIsImJ1aWxkVXNlcnNDb2xsZWN0aW9uIiwiaW5jb21pbmdDb2xsZWN0aW9ucyIsInBsdWdpbk9wdGlvbnMiLCJiZXR0ZXJBdXRoT3B0aW9ucyIsInVzZXJTbHVnIiwidXNlcnMiLCJzbHVnIiwiYWNjb3VudFNsdWciLCJhY2NvdW50cyIsInNlc3Npb25TbHVnIiwic2Vzc2lvbnMiLCJ2ZXJpZmljYXRpb25zU2x1ZyIsInZlcmlmaWNhdGlvbnMiLCJiYVBsdWdpbnMiLCJwbHVnaW5zIiwiYWRtaW5Sb2xlcyIsImFsbFJvbGVPcHRpb25zIiwiaGFzVXNlcm5hbWVQbHVnaW4iLCJleGlzdGluZ1VzZXJDb2xsZWN0aW9uIiwiZmluZCIsImNvbGxlY3Rpb24iLCJhbGxvd2VkRmllbGRzIiwidXNlcnNDb2xsZWN0aW9uIiwiYWRtaW4iLCJkZWZhdWx0Q29sdW1ucyIsInVzZUFzVGl0bGUiLCJncm91cCIsImNvbGxlY3Rpb25BZG1pbkdyb3VwIiwiaGlkZGVuIiwiY29tcG9uZW50cyIsIkRlc2NyaXB0aW9uIiwicGF0aCIsImNsaWVudFByb3BzIiwicm9sZXMiLCJ2aWV3cyIsImVkaXQiLCJhZG1pbkJ1dHRvbnMiLCJ0YWIiLCJDb21wb25lbnQiLCJjb25kaXRpb24iLCJzb21lIiwicGx1Z2luIiwiaWQiLCJhY2Nlc3MiLCJyZXEiLCJpbmNsdWRlcyIsInVzZXIiLCJyb2xlIiwicmVhZCIsImlkRmllbGQiLCJjcmVhdGUiLCJkZWxldGUiLCJ1cGRhdGUiLCJlbmRwb2ludHMiLCJob29rcyIsImJlZm9yZUNoYW5nZSIsImRpc2FibGVEZWZhdWx0UGF5bG9hZEF1dGgiLCJhZnRlckNoYW5nZSIsImJlZm9yZUxvZ2luIiwiYWZ0ZXJMb2dpbiIsInNlc3Npb25zQ29sbGVjdGlvblNsdWciLCJ1c2Vyc0NvbGxlY3Rpb25TbHVnIiwiYWZ0ZXJMb2dvdXQiLCJiZWZvcmVEZWxldGUiLCJhY2NvdW50c1NsdWciLCJzZXNzaW9uc1NsdWciLCJhdXRoIiwiZGlzYWJsZUxvY2FsU3RyYXRlZ3kiLCJ1bmRlZmluZWQiLCJsb2dpbldpdGhVc2VybmFtZSIsImFsbG93RW1haWxMb2dpbiIsInJlcXVpcmVFbWFpbCIsInJlcXVpcmVVc2VybmFtZSIsInN0cmF0ZWdpZXMiLCJmaWVsZHMiLCJuYW1lIiwidHlwZSIsImxhYmVsIiwic2F2ZVRvSldUIiwiZGVzY3JpcHRpb24iLCJyZXF1aXJlZCIsInVuaXF1ZSIsImluZGV4IiwiZGVmYXVsdFZhbHVlIiwiZGVmYXVsdFJvbGUiLCJvcHRpb25zIiwic2F2ZVVwZGF0ZWRBdFRvSldUIiwic2F2ZUNyZWF0ZWRBdFRvSldUIiwiZm9yRWFjaCIsInB1c2giLCJGaWVsZCIsInJlYWRPbmx5IiwiY29sbGVjdGlvbk92ZXJyaWRlcyJdLCJtYXBwaW5ncyI6IkFBRUEsU0FBU0EsbUJBQW1CLFFBQVEscUJBQW9CO0FBQ3hELFNBQVNDLDJDQUEyQyxFQUFFQyw2QkFBNkIsRUFBRUMsZ0JBQWdCLFFBQVEsMEJBQXlCO0FBQ3RJLFNBQVNDLHVCQUF1QixRQUFRLDRCQUEyQjtBQUNuRSxTQUFTQyxnQkFBZ0IsUUFBUSw2QkFBNEI7QUFDN0QsU0FBU0Msa0JBQWtCLFFBQVEsdUJBQXNCO0FBQ3pELFNBQVNDLGtCQUFrQixRQUFRLHVCQUFzQjtBQUN6RCxTQUFTQyxpQkFBaUIsUUFBUSxzQkFBcUI7QUFDdkQsU0FBU0Msa0JBQWtCLFFBQVEsdUJBQXNCO0FBQ3pELFNBQVNDLG1CQUFtQixRQUFRLHdCQUF1QjtBQUMzRCxTQUFTQyxrQkFBa0IsUUFBUSx5QkFBd0I7QUFDM0QsU0FBU0Msa0JBQWtCLFFBQVEsZ0NBQStCO0FBQ2xFLFNBQVNDLGlCQUFpQixRQUFRLGlDQUFnQztBQUNsRSxTQUFTQyxpQkFBaUIsUUFBUSxxQkFBb0I7QUFDdEQsU0FBU0MsdUJBQXVCLFFBQVEsNkJBQTRCO0FBQ3BFLFNBQVNDLDRCQUE0QixRQUFRLGtDQUFpQztBQUM5RSxTQUFTQyx3QkFBd0IsUUFBUSw4QkFBNkI7QUFDdEUsU0FBU0MsbUJBQW1CLFFBQVEseUNBQXdDO0FBRTVFLE9BQU8sU0FBU0MscUJBQXFCLEVBQ25DQyxtQkFBbUIsRUFDbkJDLGFBQWEsRUFDYkMsaUJBQWlCLEVBS2xCO0lBQ0MsTUFBTUMsV0FBV0YsY0FBY0csS0FBSyxFQUFFQyxRQUFRekIsb0JBQW9Cd0IsS0FBSztJQUN2RSxNQUFNRSxjQUFjTCxjQUFjTSxRQUFRLEVBQUVGLFFBQVF6QixvQkFBb0IyQixRQUFRO0lBQ2hGLE1BQU1DLGNBQWNQLGNBQWNRLFFBQVEsRUFBRUosUUFBUXpCLG9CQUFvQjZCLFFBQVE7SUFDaEYsTUFBTUMsb0JBQW9CVCxjQUFjVSxhQUFhLEVBQUVOLFFBQVF6QixvQkFBb0IrQixhQUFhO0lBQ2hHLE1BQU1DLFlBQVlWLGtCQUFrQlcsT0FBTyxJQUFJO0lBQy9DLE1BQU1DLGFBQWFiLGNBQWNHLEtBQUssRUFBRVUsY0FBYztRQUFDO0tBQVE7SUFDL0QsTUFBTUMsaUJBQWlCdEIsa0JBQWtCUTtJQUN6QyxNQUFNZSxvQkFBb0JsQixvQkFBb0JJO0lBQzlDLE1BQU1lLHlCQUF5QmpCLG9CQUFvQmtCLElBQUksQ0FBQyxDQUFDQyxhQUFlQSxXQUFXZCxJQUFJLEtBQUtGO0lBRTVGLE1BQU1pQixnQkFBZ0JuQixjQUFjRyxLQUFLLEVBQUVnQixpQkFBaUI7UUFBQztLQUFPO0lBRXBFLElBQUlDLGtCQUFvQztRQUN0QyxHQUFHSixzQkFBc0I7UUFDekJaLE1BQU1GO1FBQ05tQixPQUFPO1lBQ0xDLGdCQUFnQjtnQkFBQzthQUFRO1lBQ3pCQyxZQUFZO1lBQ1pDLE9BQU94QixlQUFleUIsd0JBQXdCO1lBQzlDLEdBQUdULHdCQUF3QkssS0FBSztZQUNoQ0ssUUFBUTFCLGNBQWNHLEtBQUssRUFBRXVCLFVBQVU7WUFDdkNDLFlBQVk7Z0JBQ1ZDLGFBQWE7b0JBQ1hDLE1BQU07b0JBQ05DLGFBQWE7d0JBQ1hDLE9BQU9qQjtvQkFDVDtnQkFDRjtnQkFDQWtCLE9BQU87b0JBQ0xDLE1BQU07d0JBQ0pDLGNBQWM7NEJBQ1pDLEtBQUs7Z0NBQ0hDLFdBQVc7b0NBQ1RQLE1BQU07b0NBQ05DLGFBQWE7d0NBQ1g1QjtvQ0FDRjtnQ0FDRjtnQ0FDQW1DLFdBQVc7b0NBQ1Qsa0VBQWtFO29DQUNsRSxPQUFPLEFBQUMxQixDQUFBQSxhQUFhQSxVQUFVMkIsSUFBSSxDQUFDLENBQUNDLFNBQVdBLE9BQU9DLEVBQUUsS0FBSyxRQUFPLEtBQU07Z0NBQzdFOzRCQUNGO3dCQUNGO29CQUNGO2dCQUNGO1lBQ0Y7UUFDRjtRQUNBQyxRQUFRO1lBQ05wQixPQUFPLENBQUMsRUFBRXFCLEdBQUcsRUFBRSxHQUFLN0IsV0FBVzhCLFFBQVEsQ0FBQyxBQUFDRCxJQUFJRSxJQUFJLEVBQUVDLFFBQW1CO1lBQ3RFQyxNQUFNakUsOEJBQThCO2dCQUFFZ0M7Z0JBQVlrQyxTQUFTO1lBQUs7WUFDaEVDLFFBQVFsRSxpQkFBaUI7Z0JBQUUrQjtZQUFXO1lBQ3RDb0MsUUFBUXBFLDhCQUE4QjtnQkFBRWdDO2dCQUFZa0MsU0FBUztZQUFLO1lBQ2xFRyxRQUFRdEUsNENBQTRDO2dCQUNsRHVDO2dCQUNBTjtnQkFDQVg7WUFDRjtZQUNBLEdBQUljLHdCQUF3QnlCLFVBQVUsQ0FBQyxDQUFDO1FBQzFDO1FBQ0FVLFdBQVc7ZUFDTG5DLHdCQUF3Qm1DLFlBQVluQyx1QkFBdUJtQyxTQUFTLEdBQUcsRUFBRTtZQUM3RXBFLHdCQUF3Qm1CO1lBQ3hCUix3QkFBd0JNLGVBQWVFO1lBQ3ZDUCw2QkFBNkI7Z0JBQzNCb0MsT0FBT2pCO2dCQUNQZDtZQUNGO1lBQ0FKLHlCQUF5Qkk7WUFDekJQLGtCQUFrQk8sZUFBZUM7U0FDbEM7UUFDRG1ELE9BQU87WUFDTEMsY0FBYzttQkFDUnJDLHdCQUF3Qm9DLE9BQU9DLGdCQUFnQixFQUFFO21CQUNqRHJELGNBQWNzRCx5QkFBeUIsR0FBRyxFQUFFLEdBQUc7b0JBQUN0RTtpQkFBaUI7YUFDdEU7WUFDRHVFLGFBQWE7bUJBQ1B2Qyx3QkFBd0JvQyxPQUFPRyxlQUFlLEVBQUU7bUJBQ2hEdkQsY0FBY3NELHlCQUF5QixHQUN2QyxFQUFFLEdBQ0Y7b0JBQ0VyRSxtQkFBbUI7d0JBQ2pCaUI7d0JBQ0FHO29CQUNGO2lCQUNEO2FBQ047WUFDRG1ELGFBQWE7bUJBQ1B4Qyx3QkFBd0JvQyxPQUFPSSxlQUFlLEVBQUU7bUJBQ2hEeEQsY0FBY3NELHlCQUF5QixHQUFHLEVBQUUsR0FBRztvQkFBQ3BFO2lCQUFxQjthQUMxRTtZQUNEdUUsWUFBWTttQkFDTnpDLHdCQUF3Qm9DLE9BQU9LLGNBQWMsRUFBRTttQkFDL0N6RCxjQUFjc0QseUJBQXlCLEdBQ3ZDLEVBQUUsR0FDRjtvQkFDRW5FLGtCQUFrQjt3QkFDaEJ1RSx3QkFBd0JuRDt3QkFDeEJvRCxxQkFBcUJ6RDtvQkFDdkI7aUJBQ0Q7YUFDTjtZQUNEMEQsYUFBYTttQkFBSzVDLHdCQUF3Qm9DLE9BQU9RLGVBQWUsRUFBRTtnQkFBR3hFLG1CQUFtQjtvQkFBRXNFLHdCQUF3Qm5EO2dCQUFZO2FBQUc7WUFDaklzRCxjQUFjO21CQUNSN0Msd0JBQXdCb0MsT0FBT1MsZ0JBQWdCLEVBQUU7Z0JBQ3JEeEUsb0JBQW9CO29CQUNsQnlFLGNBQWN6RDtvQkFDZDBELGNBQWN4RDtvQkFDZEUsbUJBQW1CQTtnQkFDckI7YUFDRDtRQUNIO1FBQ0F1RCxNQUFNO1lBQ0osR0FBSWhELDBCQUEwQixPQUFPQSx1QkFBdUJnRCxJQUFJLEtBQUssV0FBV2hELHVCQUF1QmdELElBQUksR0FBRyxDQUFDLENBQUM7WUFDaEhDLHNCQUFzQmpFLGNBQWNzRCx5QkFBeUIsR0FBRyxPQUFPWTtZQUN2RSxHQUFJbkQscUJBQXFCO2dCQUN2Qm9ELG1CQUFtQjtvQkFDakJDLGlCQUFpQjtvQkFDakJDLGNBQWM7b0JBQ2RDLGlCQUFpQjtnQkFDbkI7WUFDRixDQUFDO1lBQ0RDLFlBQVk7Z0JBQUNqRixtQkFBbUJZO2FBQVU7UUFDNUM7UUFDQXNFLFFBQVE7ZUFDRnhELHdCQUF3QndELFVBQVUsRUFBRTtZQUN4QztnQkFDRUMsTUFBTTtnQkFDTkMsTUFBTTtnQkFDTkMsT0FBTztnQkFDUEMsV0FBVztnQkFDWHZELE9BQU87b0JBQ0x3RCxhQUFhO2dCQUNmO1lBQ0Y7WUFDQTtnQkFDRUosTUFBTTtnQkFDTkMsTUFBTTtnQkFDTkksVUFBVTtnQkFDVkMsUUFBUTtnQkFDUkMsT0FBTztnQkFDUEwsT0FBTztnQkFDUHRELE9BQU87b0JBQ0x3RCxhQUFhO2dCQUNmO1lBQ0Y7WUFDQTtnQkFDRUosTUFBTTtnQkFDTkMsTUFBTTtnQkFDTkksVUFBVTtnQkFDVkcsY0FBYztnQkFDZEwsV0FBVztnQkFDWEQsT0FBTztnQkFDUHRELE9BQU87b0JBQ0x3RCxhQUFhO2dCQUNmO1lBQ0Y7WUFDQTtnQkFDRUosTUFBTTtnQkFDTkMsTUFBTTtnQkFDTkMsT0FBTztnQkFDUEMsV0FBVztnQkFDWHZELE9BQU87b0JBQ0x3RCxhQUFhO2dCQUNmO1lBQ0Y7WUFDQTtnQkFDRUosTUFBTTtnQkFDTkUsT0FBTztnQkFDUEQsTUFBTTtnQkFDTkksVUFBVTtnQkFDVkcsY0FBY2pGLGNBQWNHLEtBQUssRUFBRStFLGVBQWU7Z0JBQ2xETixXQUFXO2dCQUNYTyxTQUFTckU7Z0JBQ1RPLE9BQU87b0JBQ0x3RCxhQUFhO2dCQUNmO1lBQ0Y7ZUFDR3RGLG1CQUFtQjtnQkFDcEI2RixvQkFBb0I7Z0JBQ3BCQyxvQkFBb0I7WUFDdEI7U0FDRDtJQUNIO0lBRUEsSUFBSTFFLFdBQVc7UUFDYkEsVUFBVTJFLE9BQU8sQ0FBQyxDQUFDL0M7WUFDakIsT0FBUUEsT0FBT0MsRUFBRTtnQkFDZixLQUFLO29CQUNIcEIsZ0JBQWdCb0QsTUFBTSxDQUFDZSxJQUFJLENBQUM7d0JBQzFCZCxNQUFNO3dCQUNOQyxNQUFNO3dCQUNOTyxjQUFjO3dCQUNkTixPQUFPO3dCQUNQdEQsT0FBTzs0QkFDTHdELGFBQWE7NEJBQ2JsRCxZQUFZO2dDQUNWNkQsT0FBTztvQ0FDTDNELE1BQU07Z0NBQ1I7NEJBQ0Y7d0JBQ0Y7b0JBQ0Y7b0JBQ0E7Z0JBQ0YsS0FBSztvQkFDSFQsZ0JBQWdCb0QsTUFBTSxDQUFDZSxJQUFJLENBQ3pCO3dCQUNFZCxNQUFNO3dCQUNOQyxNQUFNO3dCQUNOSyxRQUFRO3dCQUNSRCxVQUFVO3dCQUNWSCxPQUFPO3dCQUNQdEQsT0FBTzs0QkFDTHdELGFBQWE7d0JBQ2Y7b0JBQ0YsR0FDQTt3QkFDRUosTUFBTTt3QkFDTkMsTUFBTTt3QkFDTkksVUFBVTt3QkFDVkgsT0FBTzt3QkFDUHRELE9BQU87NEJBQ0x3RCxhQUFhO3dCQUNmO29CQUNGO29CQUVGO2dCQUNGLEtBQUs7b0JBQ0h6RCxnQkFBZ0JvRCxNQUFNLENBQUNlLElBQUksQ0FBQzt3QkFDMUJkLE1BQU07d0JBQ05DLE1BQU07d0JBQ05PLGNBQWM7d0JBQ2ROLE9BQU87d0JBQ1B0RCxPQUFPOzRCQUNMd0QsYUFBYTt3QkFDZjtvQkFDRjtvQkFDQTtnQkFDRixLQUFLO29CQUNIekQsZ0JBQWdCb0QsTUFBTSxDQUFDZSxJQUFJLENBQ3pCO3dCQUNFZCxNQUFNO3dCQUNOQyxNQUFNO3dCQUNOQyxPQUFPO3dCQUNQdEQsT0FBTzs0QkFDTHdELGFBQWE7d0JBQ2Y7b0JBQ0YsR0FDQTt3QkFDRUosTUFBTTt3QkFDTkMsTUFBTTt3QkFDTk8sY0FBYzt3QkFDZE4sT0FBTzt3QkFDUHRELE9BQU87NEJBQ0x3RCxhQUFhO3dCQUNmO29CQUNGO29CQUVGO2dCQUNGLEtBQUs7b0JBQ0h6RCxnQkFBZ0JvRCxNQUFNLENBQUNlLElBQUksQ0FDekI7d0JBQ0VkLE1BQU07d0JBQ05DLE1BQU07d0JBQ05PLGNBQWM7d0JBQ2ROLE9BQU87d0JBQ1B0RCxPQUFPOzRCQUNMd0QsYUFBYTt3QkFDZjtvQkFDRixHQUNBO3dCQUNFSixNQUFNO3dCQUNOQyxNQUFNO3dCQUNOQyxPQUFPO3dCQUNQdEQsT0FBTzs0QkFDTHdELGFBQWE7d0JBQ2Y7b0JBQ0YsR0FDQTt3QkFDRUosTUFBTTt3QkFDTkMsTUFBTTt3QkFDTkMsT0FBTzt3QkFDUHRELE9BQU87NEJBQ0x3RCxhQUFhO3dCQUNmO29CQUNGO29CQUVGO2dCQUNGLEtBQUs7b0JBQ0h6RCxnQkFBZ0JvRCxNQUFNLENBQUNlLElBQUksQ0FBQzt3QkFDMUJkLE1BQU07d0JBQ05DLE1BQU07d0JBQ05JLFVBQVU7d0JBQ1ZDLFFBQVE7d0JBQ1IxRCxPQUFPOzRCQUNMb0UsVUFBVTs0QkFDVlosYUFBYTt3QkFDZjtvQkFDRjtvQkFDQTtnQkFDRjtvQkFDRTtZQUNKO1FBQ0Y7SUFDRjtJQUVBLElBQUk3RSxjQUFjRyxLQUFLLEVBQUV1RixxQkFBcUI7UUFDNUN0RSxrQkFBa0JwQixjQUFjRyxLQUFLLENBQUN1RixtQkFBbUIsQ0FBQztZQUN4RHhFLFlBQVlFO1FBQ2Q7SUFDRjtJQUVBLE9BQU9BO0FBQ1QifQ==
|
package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { BetterAuthPluginOptions, SanitizedBetterAuthOptions } from '@/better-auth/plugin/types';
|
|
1
2
|
import type { Config, Payload } from 'payload';
|
|
2
|
-
import type { SanitizedBetterAuthOptions, BetterAuthPluginOptions } from '@/better-auth/plugin/types';
|
|
3
3
|
/**
|
|
4
4
|
* Sets up a middleware that enforces the saveToJwt configuration when setting session data.
|
|
5
5
|
* This ensures that only fields specified in saveToJwt are included in the cookie cache
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-to-jwt-middleware.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"save-to-jwt-middleware.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACrG,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAE9C;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,gBAAgB,EAChB,aAAa,EACb,aAAa,EACd,EAAE;IACD,gBAAgB,EAAE,0BAA0B,CAAA;IAC5C,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAA;IAC/E,aAAa,EAAE,uBAAuB,CAAA;CACvC,QA0BA"}
|
package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { setCookieCache } from "better-auth/cookies";
|
|
2
|
-
import { createAuthMiddleware } from "better-auth/api";
|
|
3
1
|
import { prepareSessionData } from "../../../helpers/prepare-session-data";
|
|
2
|
+
import { createAuthMiddleware } from "better-auth/api";
|
|
3
|
+
import { setSessionCookie } from "better-auth/cookies";
|
|
4
|
+
import { baseCollectionSlugs } from "../../../constants";
|
|
4
5
|
/**
|
|
5
6
|
* Sets up a middleware that enforces the saveToJwt configuration when setting session data.
|
|
6
7
|
* This ensures that only fields specified in saveToJwt are included in the cookie cache
|
|
@@ -12,18 +13,19 @@ import { prepareSessionData } from "../../../helpers/prepare-session-data";
|
|
|
12
13
|
if (typeof sanitizedOptions.hooks !== 'object') sanitizedOptions.hooks = {};
|
|
13
14
|
const originalAfter = sanitizedOptions.hooks.after;
|
|
14
15
|
sanitizedOptions.hooks.after = createAuthMiddleware(async (ctx)=>{
|
|
15
|
-
const newSession = ctx.context
|
|
16
|
-
if (
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
const newSession = ctx.context.newSession;
|
|
17
|
+
if (newSession) {
|
|
18
|
+
const filteredSessionData = await prepareSessionData({
|
|
19
|
+
sessionData: newSession,
|
|
20
|
+
payloadConfig,
|
|
21
|
+
collectionSlugs: {
|
|
22
|
+
userCollectionSlug: pluginOptions.users?.slug ?? baseCollectionSlugs.users,
|
|
23
|
+
sessionCollectionSlug: pluginOptions.sessions?.slug ?? baseCollectionSlugs.sessions
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
if (filteredSessionData) {
|
|
27
|
+
await setSessionCookie(ctx, filteredSessionData);
|
|
23
28
|
}
|
|
24
|
-
});
|
|
25
|
-
if (filteredSessionData) {
|
|
26
|
-
await setCookieCache(ctx, filteredSessionData);
|
|
27
29
|
}
|
|
28
30
|
if (typeof originalAfter === 'function') {
|
|
29
31
|
return originalAfter(ctx);
|
|
@@ -32,4 +34,4 @@ import { prepareSessionData } from "../../../helpers/prepare-session-data";
|
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
36
|
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL3Nhbml0aXplLWJldHRlci1hdXRoLW9wdGlvbnMvdXRpbHMvc2F2ZS10by1qd3QtbWlkZGxld2FyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmVwYXJlU2Vzc2lvbkRhdGEgfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi9oZWxwZXJzL3ByZXBhcmUtc2Vzc2lvbi1kYXRhJ1xuaW1wb3J0IHsgY3JlYXRlQXV0aE1pZGRsZXdhcmUgfSBmcm9tICdiZXR0ZXItYXV0aC9hcGknXG5pbXBvcnQgeyBzZXRTZXNzaW9uQ29va2llIH0gZnJvbSAnYmV0dGVyLWF1dGgvY29va2llcydcblxuaW1wb3J0IHR5cGUgeyBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9ucywgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi90eXBlcydcbmltcG9ydCB0eXBlIHsgQ29uZmlnLCBQYXlsb2FkIH0gZnJvbSAncGF5bG9hZCdcbmltcG9ydCB7IGJhc2VDb2xsZWN0aW9uU2x1Z3MgfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi9jb25zdGFudHMnXG4vKipcbiAqIFNldHMgdXAgYSBtaWRkbGV3YXJlIHRoYXQgZW5mb3JjZXMgdGhlIHNhdmVUb0p3dCBjb25maWd1cmF0aW9uIHdoZW4gc2V0dGluZyBzZXNzaW9uIGRhdGEuXG4gKiBUaGlzIGVuc3VyZXMgdGhhdCBvbmx5IGZpZWxkcyBzcGVjaWZpZWQgaW4gc2F2ZVRvSnd0IGFyZSBpbmNsdWRlZCBpbiB0aGUgY29va2llIGNhY2hlXG4gKiBmb3IgYm90aCB1c2VyIGFuZCBzZXNzaW9uIG9iamVjdHMuXG4gKlxuICogVGhlIG1pZGRsZXdhcmUgcnVucyBhZnRlciBhdXRoZW50aWNhdGlvbiBhbmQgZmlsdGVycyB0aGUgc2Vzc2lvbiBkYXRhIGJhc2VkIG9uXG4gKiB0aGUgY29sbGVjdGlvbiBjb25maWd1cmF0aW9ucyBiZWZvcmUgc3RvcmluZyBpdCBpbiB0aGUgY29va2llIGNhY2hlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2F2ZVRvSnd0TWlkZGxld2FyZSh7XG4gIHNhbml0aXplZE9wdGlvbnMsXG4gIHBheWxvYWRDb25maWcsXG4gIHBsdWdpbk9wdGlvbnNcbn06IHtcbiAgc2FuaXRpemVkT3B0aW9uczogU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnNcbiAgcGF5bG9hZENvbmZpZzogUGF5bG9hZFsnY29uZmlnJ10gfCBDb25maWcgfCBQcm9taXNlPFBheWxvYWRbJ2NvbmZpZyddIHwgQ29uZmlnPlxuICBwbHVnaW5PcHRpb25zOiBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9uc1xufSkge1xuICBpZiAodHlwZW9mIHNhbml0aXplZE9wdGlvbnMuaG9va3MgIT09ICdvYmplY3QnKSBzYW5pdGl6ZWRPcHRpb25zLmhvb2tzID0ge31cbiAgY29uc3Qgb3JpZ2luYWxBZnRlciA9IHNhbml0aXplZE9wdGlvbnMuaG9va3MuYWZ0ZXJcbiAgc2FuaXRpemVkT3B0aW9ucy5ob29rcy5hZnRlciA9IGNyZWF0ZUF1dGhNaWRkbGV3YXJlKGFzeW5jIChjdHgpID0+IHtcbiAgICBjb25zdCBuZXdTZXNzaW9uID0gY3R4LmNvbnRleHQubmV3U2Vzc2lvblxuICAgIGlmIChuZXdTZXNzaW9uKSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZFNlc3Npb25EYXRhID0gYXdhaXQgcHJlcGFyZVNlc3Npb25EYXRhKHtcbiAgICAgICAgc2Vzc2lvbkRhdGE6IG5ld1Nlc3Npb24sXG4gICAgICAgIHBheWxvYWRDb25maWcsXG4gICAgICAgIGNvbGxlY3Rpb25TbHVnczoge1xuICAgICAgICAgIHVzZXJDb2xsZWN0aW9uU2x1ZzogcGx1Z2luT3B0aW9ucy51c2Vycz8uc2x1ZyA/PyBiYXNlQ29sbGVjdGlvblNsdWdzLnVzZXJzLFxuICAgICAgICAgIHNlc3Npb25Db2xsZWN0aW9uU2x1ZzogcGx1Z2luT3B0aW9ucy5zZXNzaW9ucz8uc2x1ZyA/PyBiYXNlQ29sbGVjdGlvblNsdWdzLnNlc3Npb25zXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIGlmIChmaWx0ZXJlZFNlc3Npb25EYXRhKSB7XG4gICAgICAgIGF3YWl0IHNldFNlc3Npb25Db29raWUoY3R4LCBmaWx0ZXJlZFNlc3Npb25EYXRhKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxBZnRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsQWZ0ZXIoY3R4KVxuICAgIH1cblxuICAgIHJldHVyblxuICB9KVxufVxuIl0sIm5hbWVzIjpbInByZXBhcmVTZXNzaW9uRGF0YSIsImNyZWF0ZUF1dGhNaWRkbGV3YXJlIiwic2V0U2Vzc2lvbkNvb2tpZSIsImJhc2VDb2xsZWN0aW9uU2x1Z3MiLCJzYXZlVG9Kd3RNaWRkbGV3YXJlIiwic2FuaXRpemVkT3B0aW9ucyIsInBheWxvYWRDb25maWciLCJwbHVnaW5PcHRpb25zIiwiaG9va3MiLCJvcmlnaW5hbEFmdGVyIiwiYWZ0ZXIiLCJjdHgiLCJuZXdTZXNzaW9uIiwiY29udGV4dCIsImZpbHRlcmVkU2Vzc2lvbkRhdGEiLCJzZXNzaW9uRGF0YSIsImNvbGxlY3Rpb25TbHVncyIsInVzZXJDb2xsZWN0aW9uU2x1ZyIsInVzZXJzIiwic2x1ZyIsInNlc3Npb25Db2xsZWN0aW9uU2x1ZyIsInNlc3Npb25zIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxrQkFBa0IsUUFBUSx3Q0FBbUQ7QUFDdEYsU0FBU0Msb0JBQW9CLFFBQVEsa0JBQWlCO0FBQ3RELFNBQVNDLGdCQUFnQixRQUFRLHNCQUFxQjtBQUl0RCxTQUFTQyxtQkFBbUIsUUFBUSxxQkFBZ0M7QUFDcEU7Ozs7Ozs7Q0FPQyxHQUNELE9BQU8sU0FBU0Msb0JBQW9CLEVBQ2xDQyxnQkFBZ0IsRUFDaEJDLGFBQWEsRUFDYkMsYUFBYSxFQUtkO0lBQ0MsSUFBSSxPQUFPRixpQkFBaUJHLEtBQUssS0FBSyxVQUFVSCxpQkFBaUJHLEtBQUssR0FBRyxDQUFDO0lBQzFFLE1BQU1DLGdCQUFnQkosaUJBQWlCRyxLQUFLLENBQUNFLEtBQUs7SUFDbERMLGlCQUFpQkcsS0FBSyxDQUFDRSxLQUFLLEdBQUdULHFCQUFxQixPQUFPVTtRQUN6RCxNQUFNQyxhQUFhRCxJQUFJRSxPQUFPLENBQUNELFVBQVU7UUFDekMsSUFBSUEsWUFBWTtZQUNkLE1BQU1FLHNCQUFzQixNQUFNZCxtQkFBbUI7Z0JBQ25EZSxhQUFhSDtnQkFDYk47Z0JBQ0FVLGlCQUFpQjtvQkFDZkMsb0JBQW9CVixjQUFjVyxLQUFLLEVBQUVDLFFBQVFoQixvQkFBb0JlLEtBQUs7b0JBQzFFRSx1QkFBdUJiLGNBQWNjLFFBQVEsRUFBRUYsUUFBUWhCLG9CQUFvQmtCLFFBQVE7Z0JBQ3JGO1lBQ0Y7WUFFQSxJQUFJUCxxQkFBcUI7Z0JBQ3ZCLE1BQU1aLGlCQUFpQlMsS0FBS0c7WUFDOUI7UUFDRjtRQUVBLElBQUksT0FBT0wsa0JBQWtCLFlBQVk7WUFDdkMsT0FBT0EsY0FBY0U7UUFDdkI7UUFFQTtJQUNGO0FBQ0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/components/two-factor-auth/index.tsx"],"names":[],"mappings":"AAEA,OAAO,cAAc,CAAA;AAErB,OAAO,KAA4B,MAAM,OAAO,CAAA;AAahD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAqPjC,CAAA"}
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import "./index.scss";
|
|
4
|
+
import React, { useMemo, useState } from "react";
|
|
5
|
+
import { XIcon, Copy } from "lucide-react";
|
|
6
|
+
import { Button, Modal, toast, useModal, useTranslation, useFormFields, useField } from "@payloadcms/ui";
|
|
7
|
+
import { createAuthClient } from "better-auth/react";
|
|
8
|
+
import { twoFactorClient } from "better-auth/client/plugins";
|
|
9
|
+
import { Form, FormInputWrap } from "../../../../../shared/form/ui";
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
import { passwordField } from "../../../../../shared/form/validation";
|
|
12
|
+
import { QRCodeSVG } from "qrcode.react";
|
|
13
|
+
import { useAppForm } from "../../../../../shared/form";
|
|
14
|
+
const baseClass = 'two-factor-auth-modal';
|
|
15
|
+
export const TwoFactorAuth = ()=>{
|
|
16
|
+
const [totpURI, setTotpURI] = useState('');
|
|
17
|
+
const [backupCodes, setBackupCodes] = useState(null);
|
|
18
|
+
const [formState, setFormState] = useState('enable');
|
|
19
|
+
const { openModal, closeModal } = useModal();
|
|
20
|
+
const { t } = useTranslation();
|
|
21
|
+
const twoFactorEnabledField = useFormFields(([fields])=>fields.twoFactorEnabled);
|
|
22
|
+
const twoFactorEnabled = Boolean(twoFactorEnabledField?.value);
|
|
23
|
+
const { setValue: setTwoFactorEnabled } = useField({
|
|
24
|
+
path: 'twoFactorEnabled'
|
|
25
|
+
});
|
|
26
|
+
const authClient = useMemo(()=>createAuthClient({
|
|
27
|
+
plugins: [
|
|
28
|
+
twoFactorClient()
|
|
29
|
+
]
|
|
30
|
+
}), []);
|
|
31
|
+
const copyURI = async ()=>{
|
|
32
|
+
if (!totpURI) return;
|
|
33
|
+
try {
|
|
34
|
+
await navigator.clipboard.writeText(totpURI);
|
|
35
|
+
toast.success('Copied');
|
|
36
|
+
} catch {
|
|
37
|
+
toast.error('Failed to copy');
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
// Form Schemas
|
|
41
|
+
const passwordSchema = z.object({
|
|
42
|
+
password: passwordField({
|
|
43
|
+
t
|
|
44
|
+
})
|
|
45
|
+
});
|
|
46
|
+
const otpSchema = z.object({
|
|
47
|
+
otp: z.string().length(6, 'Code must be 6 digits').refine((val)=>/^\d{6}$/.test(val), 'Code must be numeric')
|
|
48
|
+
});
|
|
49
|
+
const EnableForm = ()=>{
|
|
50
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
51
|
+
const form = useAppForm({
|
|
52
|
+
defaultValues: {
|
|
53
|
+
password: ''
|
|
54
|
+
},
|
|
55
|
+
onSubmit: async ({ value })=>{
|
|
56
|
+
setIsLoading(true);
|
|
57
|
+
const { data, error } = await authClient.twoFactor.enable({
|
|
58
|
+
password: value.password
|
|
59
|
+
});
|
|
60
|
+
setIsLoading(false);
|
|
61
|
+
if (error) {
|
|
62
|
+
toast.error(error.message);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
setTotpURI(data.totpURI);
|
|
66
|
+
if (data && 'backupCodes' in data && data.backupCodes) {
|
|
67
|
+
setBackupCodes(Array.isArray(data.backupCodes) ? data.backupCodes : String(data.backupCodes).split(/\s+/).filter(Boolean));
|
|
68
|
+
} else {
|
|
69
|
+
setBackupCodes(null);
|
|
70
|
+
}
|
|
71
|
+
setFormState('verify');
|
|
72
|
+
},
|
|
73
|
+
validators: {
|
|
74
|
+
onSubmit: passwordSchema
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
return /*#__PURE__*/ _jsxs(Form, {
|
|
78
|
+
onSubmit: (e)=>{
|
|
79
|
+
e.preventDefault();
|
|
80
|
+
void form.handleSubmit();
|
|
81
|
+
},
|
|
82
|
+
className: "two-factor-enable-form",
|
|
83
|
+
children: [
|
|
84
|
+
/*#__PURE__*/ _jsx(FormInputWrap, {
|
|
85
|
+
className: "two-factor-enable-form__inputWrap",
|
|
86
|
+
children: /*#__PURE__*/ _jsx(form.AppField, {
|
|
87
|
+
name: "password",
|
|
88
|
+
children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
|
|
89
|
+
type: "password",
|
|
90
|
+
className: "password",
|
|
91
|
+
label: "Password",
|
|
92
|
+
required: true
|
|
93
|
+
})
|
|
94
|
+
})
|
|
95
|
+
}),
|
|
96
|
+
/*#__PURE__*/ _jsx(form.AppForm, {
|
|
97
|
+
children: /*#__PURE__*/ _jsx(form.Submit, {
|
|
98
|
+
label: "Enable",
|
|
99
|
+
loadingLabel: "Enabling"
|
|
100
|
+
})
|
|
101
|
+
})
|
|
102
|
+
]
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
const VerifyForm = ()=>{
|
|
106
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
107
|
+
const form = useAppForm({
|
|
108
|
+
defaultValues: {
|
|
109
|
+
otp: ''
|
|
110
|
+
},
|
|
111
|
+
onSubmit: async ({ value })=>{
|
|
112
|
+
setIsLoading(true);
|
|
113
|
+
const { data, error } = await authClient.twoFactor.verifyTotp({
|
|
114
|
+
code: value.otp
|
|
115
|
+
});
|
|
116
|
+
setIsLoading(false);
|
|
117
|
+
if (error) {
|
|
118
|
+
toast.error(error.message);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (data && 'backupCodes' in data && data.backupCodes) {
|
|
122
|
+
setBackupCodes(Array.isArray(data.backupCodes) ? data.backupCodes : String(data.backupCodes).split(/\s+/).filter(Boolean));
|
|
123
|
+
}
|
|
124
|
+
toast.success('Two‑factor verified & enabled');
|
|
125
|
+
setTwoFactorEnabled(true);
|
|
126
|
+
setFormState('backupCodes');
|
|
127
|
+
},
|
|
128
|
+
validators: {
|
|
129
|
+
onSubmit: otpSchema
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
return /*#__PURE__*/ _jsxs(Form, {
|
|
133
|
+
onSubmit: (e)=>{
|
|
134
|
+
e.preventDefault();
|
|
135
|
+
void form.handleSubmit();
|
|
136
|
+
},
|
|
137
|
+
className: "two-factor-verify-form",
|
|
138
|
+
children: [
|
|
139
|
+
/*#__PURE__*/ _jsx(FormInputWrap, {
|
|
140
|
+
className: "tf__inputWrap",
|
|
141
|
+
children: /*#__PURE__*/ _jsx(form.AppField, {
|
|
142
|
+
name: "otp",
|
|
143
|
+
children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
|
|
144
|
+
type: "text",
|
|
145
|
+
className: "text otp",
|
|
146
|
+
label: "6‑digit Code",
|
|
147
|
+
required: true
|
|
148
|
+
})
|
|
149
|
+
})
|
|
150
|
+
}),
|
|
151
|
+
/*#__PURE__*/ _jsx(form.AppForm, {
|
|
152
|
+
children: /*#__PURE__*/ _jsx(form.Submit, {
|
|
153
|
+
label: "Verify",
|
|
154
|
+
loadingLabel: "Verifying"
|
|
155
|
+
})
|
|
156
|
+
})
|
|
157
|
+
]
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
const DisableForm = ()=>{
|
|
161
|
+
const form = useAppForm({
|
|
162
|
+
defaultValues: {
|
|
163
|
+
password: ''
|
|
164
|
+
},
|
|
165
|
+
onSubmit: async ({ value })=>{
|
|
166
|
+
await authClient.twoFactor.disable({
|
|
167
|
+
password: value.password
|
|
168
|
+
}, {
|
|
169
|
+
onSuccess () {
|
|
170
|
+
toast.success('Two‑factor disabled');
|
|
171
|
+
setTwoFactorEnabled(false);
|
|
172
|
+
closeModal('two-factor-auth-modal');
|
|
173
|
+
return undefined;
|
|
174
|
+
},
|
|
175
|
+
onError (ctx) {
|
|
176
|
+
toast.error(ctx.error.message);
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
},
|
|
180
|
+
validators: {
|
|
181
|
+
onSubmit: passwordSchema
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
return /*#__PURE__*/ _jsxs(Form, {
|
|
185
|
+
onSubmit: (e)=>{
|
|
186
|
+
e.preventDefault();
|
|
187
|
+
void form.handleSubmit();
|
|
188
|
+
},
|
|
189
|
+
className: "two-factor-disable-form mt-4",
|
|
190
|
+
children: [
|
|
191
|
+
/*#__PURE__*/ _jsx(FormInputWrap, {
|
|
192
|
+
className: "two-factor-disable-form__inputWrap",
|
|
193
|
+
children: /*#__PURE__*/ _jsx(form.AppField, {
|
|
194
|
+
name: "password",
|
|
195
|
+
children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
|
|
196
|
+
type: "password",
|
|
197
|
+
className: "password",
|
|
198
|
+
label: "Password",
|
|
199
|
+
required: true
|
|
200
|
+
})
|
|
201
|
+
})
|
|
202
|
+
}),
|
|
203
|
+
/*#__PURE__*/ _jsx(form.AppForm, {
|
|
204
|
+
children: /*#__PURE__*/ _jsx(form.Submit, {
|
|
205
|
+
label: "Disable Two‑Factor",
|
|
206
|
+
loadingLabel: "Disabling"
|
|
207
|
+
})
|
|
208
|
+
})
|
|
209
|
+
]
|
|
210
|
+
});
|
|
211
|
+
};
|
|
212
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
213
|
+
className: "two-factor-auth-field",
|
|
214
|
+
children: [
|
|
215
|
+
twoFactorEnabled ? /*#__PURE__*/ _jsx(Button, {
|
|
216
|
+
onClick: ()=>{
|
|
217
|
+
setFormState('disable');
|
|
218
|
+
openModal('two-factor-auth-modal');
|
|
219
|
+
},
|
|
220
|
+
size: "medium",
|
|
221
|
+
buttonStyle: "pill",
|
|
222
|
+
children: "Disable Two-Factor"
|
|
223
|
+
}) : /*#__PURE__*/ _jsx(Button, {
|
|
224
|
+
onClick: ()=>{
|
|
225
|
+
setFormState('enable');
|
|
226
|
+
openModal('two-factor-auth-modal');
|
|
227
|
+
},
|
|
228
|
+
size: "medium",
|
|
229
|
+
buttonStyle: "pill",
|
|
230
|
+
children: "Enable Two-Factor"
|
|
231
|
+
}),
|
|
232
|
+
/*#__PURE__*/ _jsx(Modal, {
|
|
233
|
+
slug: "two-factor-auth-modal",
|
|
234
|
+
className: baseClass,
|
|
235
|
+
closeOnBlur: true,
|
|
236
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
237
|
+
className: `${baseClass}__wrapper`,
|
|
238
|
+
children: [
|
|
239
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
240
|
+
onClick: ()=>closeModal('two-factor-auth-modal'),
|
|
241
|
+
buttonStyle: "icon-label",
|
|
242
|
+
size: "small",
|
|
243
|
+
className: `${baseClass}__close-button`,
|
|
244
|
+
children: /*#__PURE__*/ _jsx(XIcon, {
|
|
245
|
+
size: 24
|
|
246
|
+
})
|
|
247
|
+
}),
|
|
248
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
249
|
+
className: `${baseClass}__content`,
|
|
250
|
+
style: {
|
|
251
|
+
maxWidth: '38rem'
|
|
252
|
+
},
|
|
253
|
+
children: [
|
|
254
|
+
formState === 'enable' && /*#__PURE__*/ _jsxs(_Fragment, {
|
|
255
|
+
children: [
|
|
256
|
+
/*#__PURE__*/ _jsx("h2", {
|
|
257
|
+
children: "Enable Two‑Factor"
|
|
258
|
+
}),
|
|
259
|
+
/*#__PURE__*/ _jsx(EnableForm, {})
|
|
260
|
+
]
|
|
261
|
+
}),
|
|
262
|
+
formState === 'verify' && /*#__PURE__*/ _jsxs(_Fragment, {
|
|
263
|
+
children: [
|
|
264
|
+
/*#__PURE__*/ _jsx("h2", {
|
|
265
|
+
children: "Verify Two‑Factor"
|
|
266
|
+
}),
|
|
267
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
268
|
+
className: "two-factor-auth-modal__verify-block",
|
|
269
|
+
children: [
|
|
270
|
+
/*#__PURE__*/ _jsx("p", {
|
|
271
|
+
children: "Scan the QR code with your authenticator app or copy the URI."
|
|
272
|
+
}),
|
|
273
|
+
/*#__PURE__*/ _jsx("div", {
|
|
274
|
+
className: "two-factor-auth-modal__qrcode",
|
|
275
|
+
children: /*#__PURE__*/ _jsx(QRCodeSVG, {
|
|
276
|
+
value: totpURI,
|
|
277
|
+
size: 200
|
|
278
|
+
})
|
|
279
|
+
}),
|
|
280
|
+
/*#__PURE__*/ _jsxs(Button, {
|
|
281
|
+
size: "small",
|
|
282
|
+
buttonStyle: "transparent",
|
|
283
|
+
onClick: copyURI,
|
|
284
|
+
className: "two-factor-auth-modal__copy-btn",
|
|
285
|
+
children: [
|
|
286
|
+
/*#__PURE__*/ _jsx(Copy, {
|
|
287
|
+
size: 18,
|
|
288
|
+
className: "two-factor-auth-modal__copy-icon"
|
|
289
|
+
}),
|
|
290
|
+
" Copy URI"
|
|
291
|
+
]
|
|
292
|
+
}),
|
|
293
|
+
/*#__PURE__*/ _jsx(VerifyForm, {})
|
|
294
|
+
]
|
|
295
|
+
})
|
|
296
|
+
]
|
|
297
|
+
}),
|
|
298
|
+
formState === 'backupCodes' && backupCodes && /*#__PURE__*/ _jsxs(_Fragment, {
|
|
299
|
+
children: [
|
|
300
|
+
/*#__PURE__*/ _jsx("h2", {
|
|
301
|
+
children: "Backup Codes"
|
|
302
|
+
}),
|
|
303
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
304
|
+
className: "two-factor-auth-modal__backup-codes",
|
|
305
|
+
children: [
|
|
306
|
+
/*#__PURE__*/ _jsx("ul", {
|
|
307
|
+
children: backupCodes.map((code, i)=>/*#__PURE__*/ _jsx("li", {
|
|
308
|
+
className: "two-factor-auth-modal__backup-code",
|
|
309
|
+
children: code
|
|
310
|
+
}, i))
|
|
311
|
+
}),
|
|
312
|
+
/*#__PURE__*/ _jsx("p", {
|
|
313
|
+
className: "two-factor-auth-modal__backup-desc",
|
|
314
|
+
children: "Store these codes in a safe place. Each code can be used once if you lose access to your authenticator."
|
|
315
|
+
})
|
|
316
|
+
]
|
|
317
|
+
}),
|
|
318
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
319
|
+
onClick: ()=>closeModal('two-factor-auth-modal'),
|
|
320
|
+
buttonStyle: "primary",
|
|
321
|
+
size: "large",
|
|
322
|
+
className: "two-factor-auth-modal__backup-codes-close-button",
|
|
323
|
+
children: "Saved them!"
|
|
324
|
+
})
|
|
325
|
+
]
|
|
326
|
+
}),
|
|
327
|
+
formState === 'disable' && /*#__PURE__*/ _jsxs(_Fragment, {
|
|
328
|
+
children: [
|
|
329
|
+
/*#__PURE__*/ _jsx("h2", {
|
|
330
|
+
children: "Two‑Factor Authentication"
|
|
331
|
+
}),
|
|
332
|
+
/*#__PURE__*/ _jsx(DisableForm, {})
|
|
333
|
+
]
|
|
334
|
+
})
|
|
335
|
+
]
|
|
336
|
+
})
|
|
337
|
+
]
|
|
338
|
+
})
|
|
339
|
+
})
|
|
340
|
+
]
|
|
341
|
+
});
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9jb21wb25lbnRzL3R3by1mYWN0b3ItYXV0aC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFhJY29uLCBDb3B5IH0gZnJvbSAnbHVjaWRlLXJlYWN0J1xuaW1wb3J0IHsgQnV0dG9uLCBNb2RhbCwgdG9hc3QsIHVzZU1vZGFsLCB1c2VUcmFuc2xhdGlvbiwgdXNlRm9ybUZpZWxkcywgdXNlRmllbGQgfSBmcm9tICdAcGF5bG9hZGNtcy91aSdcbmltcG9ydCB7IGNyZWF0ZUF1dGhDbGllbnQgfSBmcm9tICdiZXR0ZXItYXV0aC9yZWFjdCdcbmltcG9ydCB7IHR3b0ZhY3RvckNsaWVudCB9IGZyb20gJ2JldHRlci1hdXRoL2NsaWVudC9wbHVnaW5zJ1xuaW1wb3J0IHsgRm9ybSwgRm9ybUlucHV0V3JhcCB9IGZyb20gJ0Avc2hhcmVkL2Zvcm0vdWknXG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJ1xuaW1wb3J0IHsgcGFzc3dvcmRGaWVsZCB9IGZyb20gJ0Avc2hhcmVkL2Zvcm0vdmFsaWRhdGlvbidcbmltcG9ydCB7IFFSQ29kZVNWRyB9IGZyb20gJ3FyY29kZS5yZWFjdCdcbmltcG9ydCB7IHVzZUFwcEZvcm0gfSBmcm9tICdAL3NoYXJlZC9mb3JtJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAndHdvLWZhY3Rvci1hdXRoLW1vZGFsJ1xuXG5leHBvcnQgY29uc3QgVHdvRmFjdG9yQXV0aDogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IFt0b3RwVVJJLCBzZXRUb3RwVVJJXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbYmFja3VwQ29kZXMsIHNldEJhY2t1cENvZGVzXSA9IHVzZVN0YXRlPHN0cmluZ1tdIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2Zvcm1TdGF0ZSwgc2V0Rm9ybVN0YXRlXSA9IHVzZVN0YXRlPCdlbmFibGUnIHwgJ3ZlcmlmeScgfCAnYmFja3VwQ29kZXMnIHwgJ2Rpc2FibGUnPignZW5hYmxlJylcbiAgY29uc3QgeyBvcGVuTW9kYWwsIGNsb3NlTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IHR3b0ZhY3RvckVuYWJsZWRGaWVsZCA9IHVzZUZvcm1GaWVsZHMoKFtmaWVsZHNdKSA9PiBmaWVsZHMudHdvRmFjdG9yRW5hYmxlZClcbiAgY29uc3QgdHdvRmFjdG9yRW5hYmxlZCA9IEJvb2xlYW4odHdvRmFjdG9yRW5hYmxlZEZpZWxkPy52YWx1ZSlcbiAgY29uc3QgeyBzZXRWYWx1ZTogc2V0VHdvRmFjdG9yRW5hYmxlZCB9ID0gdXNlRmllbGQoeyBwYXRoOiAndHdvRmFjdG9yRW5hYmxlZCcgfSlcblxuICBjb25zdCBhdXRoQ2xpZW50ID0gdXNlTWVtbygoKSA9PiBjcmVhdGVBdXRoQ2xpZW50KHsgcGx1Z2luczogW3R3b0ZhY3RvckNsaWVudCgpXSB9KSwgW10pXG5cbiAgY29uc3QgY29weVVSSSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIXRvdHBVUkkpIHJldHVyblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0b3RwVVJJKVxuICAgICAgdG9hc3Quc3VjY2VzcygnQ29waWVkJylcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRvYXN0LmVycm9yKCdGYWlsZWQgdG8gY29weScpXG4gICAgfVxuICB9XG5cbiAgLy8gRm9ybSBTY2hlbWFzXG4gIGNvbnN0IHBhc3N3b3JkU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIHBhc3N3b3JkOiBwYXNzd29yZEZpZWxkKHsgdCB9KVxuICB9KVxuXG4gIGNvbnN0IG90cFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBvdHA6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLmxlbmd0aCg2LCAnQ29kZSBtdXN0IGJlIDYgZGlnaXRzJylcbiAgICAgIC5yZWZpbmUoKHZhbCkgPT4gL15cXGR7Nn0kLy50ZXN0KHZhbCksICdDb2RlIG11c3QgYmUgbnVtZXJpYycpXG4gIH0pXG5cbiAgY29uc3QgRW5hYmxlRm9ybSA9ICgpID0+IHtcbiAgICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgZm9ybSA9IHVzZUFwcEZvcm0oe1xuICAgICAgZGVmYXVsdFZhbHVlczogeyBwYXNzd29yZDogJycgfSxcbiAgICAgIG9uU3VibWl0OiBhc3luYyAoeyB2YWx1ZSB9OiB7IHZhbHVlOiB7IHBhc3N3b3JkOiBzdHJpbmcgfSB9KSA9PiB7XG4gICAgICAgIHNldElzTG9hZGluZyh0cnVlKVxuICAgICAgICBjb25zdCB7IGRhdGEsIGVycm9yIH0gPSBhd2FpdCBhdXRoQ2xpZW50LnR3b0ZhY3Rvci5lbmFibGUoeyBwYXNzd29yZDogdmFsdWUucGFzc3dvcmQgfSlcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHNldFRvdHBVUkkoZGF0YS50b3RwVVJJKVxuICAgICAgICBpZiAoZGF0YSAmJiAnYmFja3VwQ29kZXMnIGluIGRhdGEgJiYgZGF0YS5iYWNrdXBDb2Rlcykge1xuICAgICAgICAgIHNldEJhY2t1cENvZGVzKEFycmF5LmlzQXJyYXkoZGF0YS5iYWNrdXBDb2RlcykgPyBkYXRhLmJhY2t1cENvZGVzIDogU3RyaW5nKGRhdGEuYmFja3VwQ29kZXMpLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEJhY2t1cENvZGVzKG51bGwpXG4gICAgICAgIH1cbiAgICAgICAgc2V0Rm9ybVN0YXRlKCd2ZXJpZnknKVxuICAgICAgfSxcbiAgICAgIHZhbGlkYXRvcnM6IHsgb25TdWJtaXQ6IHBhc3N3b3JkU2NoZW1hIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGb3JtXG4gICAgICAgIG9uU3VibWl0PXsoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHZvaWQgZm9ybS5oYW5kbGVTdWJtaXQoKVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWVuYWJsZS1mb3JtXCI+XG4gICAgICAgIDxGb3JtSW5wdXRXcmFwIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItZW5hYmxlLWZvcm1fX2lucHV0V3JhcFwiPlxuICAgICAgICAgIDxmb3JtLkFwcEZpZWxkXG4gICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgY2hpbGRyZW49eyhmaWVsZDogYW55KSA9PiA8ZmllbGQuVGV4dEZpZWxkIHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzTmFtZT1cInBhc3N3b3JkXCIgbGFiZWw9XCJQYXNzd29yZFwiIHJlcXVpcmVkIC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRm9ybUlucHV0V3JhcD5cbiAgICAgICAgPGZvcm0uQXBwRm9ybSBjaGlsZHJlbj17PGZvcm0uU3VibWl0IGxhYmVsPVwiRW5hYmxlXCIgbG9hZGluZ0xhYmVsPVwiRW5hYmxpbmdcIiAvPn0gLz5cbiAgICAgIDwvRm9ybT5cbiAgICApXG4gIH1cblxuICBjb25zdCBWZXJpZnlGb3JtID0gKCkgPT4ge1xuICAgIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgICBjb25zdCBmb3JtID0gdXNlQXBwRm9ybSh7XG4gICAgICBkZWZhdWx0VmFsdWVzOiB7IG90cDogJycgfSxcbiAgICAgIG9uU3VibWl0OiBhc3luYyAoeyB2YWx1ZSB9OiB7IHZhbHVlOiB7IG90cDogc3RyaW5nIH0gfSkgPT4ge1xuICAgICAgICBzZXRJc0xvYWRpbmcodHJ1ZSlcbiAgICAgICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gYXdhaXQgYXV0aENsaWVudC50d29GYWN0b3IudmVyaWZ5VG90cCh7IGNvZGU6IHZhbHVlLm90cCB9KVxuICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEgJiYgJ2JhY2t1cENvZGVzJyBpbiBkYXRhICYmIGRhdGEuYmFja3VwQ29kZXMpIHtcbiAgICAgICAgICBzZXRCYWNrdXBDb2RlcyhBcnJheS5pc0FycmF5KGRhdGEuYmFja3VwQ29kZXMpID8gZGF0YS5iYWNrdXBDb2RlcyA6IFN0cmluZyhkYXRhLmJhY2t1cENvZGVzKS5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKSlcbiAgICAgICAgfVxuICAgICAgICB0b2FzdC5zdWNjZXNzKCdUd2/igJFmYWN0b3IgdmVyaWZpZWQgJiBlbmFibGVkJylcbiAgICAgICAgc2V0VHdvRmFjdG9yRW5hYmxlZCh0cnVlKVxuICAgICAgICBzZXRGb3JtU3RhdGUoJ2JhY2t1cENvZGVzJylcbiAgICAgIH0sXG4gICAgICB2YWxpZGF0b3JzOiB7IG9uU3VibWl0OiBvdHBTY2hlbWEgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZvcm1cbiAgICAgICAgb25TdWJtaXQ9eyhlKSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgdm9pZCBmb3JtLmhhbmRsZVN1Ym1pdCgpXG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItdmVyaWZ5LWZvcm1cIj5cbiAgICAgICAgPEZvcm1JbnB1dFdyYXAgY2xhc3NOYW1lPVwidGZfX2lucHV0V3JhcFwiPlxuICAgICAgICAgIDxmb3JtLkFwcEZpZWxkXG4gICAgICAgICAgICBuYW1lPVwib3RwXCJcbiAgICAgICAgICAgIGNoaWxkcmVuPXsoZmllbGQ6IGFueSkgPT4gPGZpZWxkLlRleHRGaWVsZCB0eXBlPVwidGV4dFwiIGNsYXNzTmFtZT1cInRleHQgb3RwXCIgbGFiZWw9XCI24oCRZGlnaXQgQ29kZVwiIHJlcXVpcmVkIC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRm9ybUlucHV0V3JhcD5cbiAgICAgICAgPGZvcm0uQXBwRm9ybSBjaGlsZHJlbj17PGZvcm0uU3VibWl0IGxhYmVsPVwiVmVyaWZ5XCIgbG9hZGluZ0xhYmVsPVwiVmVyaWZ5aW5nXCIgLz59IC8+XG4gICAgICA8L0Zvcm0+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgRGlzYWJsZUZvcm0gPSAoKSA9PiB7XG4gICAgY29uc3QgZm9ybSA9IHVzZUFwcEZvcm0oe1xuICAgICAgZGVmYXVsdFZhbHVlczogeyBwYXNzd29yZDogJycgfSxcbiAgICAgIG9uU3VibWl0OiBhc3luYyAoeyB2YWx1ZSB9OiB7IHZhbHVlOiB7IHBhc3N3b3JkOiBzdHJpbmcgfSB9KSA9PiB7XG4gICAgICAgIGF3YWl0IGF1dGhDbGllbnQudHdvRmFjdG9yLmRpc2FibGUoXG4gICAgICAgICAgeyBwYXNzd29yZDogdmFsdWUucGFzc3dvcmQgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgICAgICAgIHRvYXN0LnN1Y2Nlc3MoJ1R3b+KAkWZhY3RvciBkaXNhYmxlZCcpXG4gICAgICAgICAgICAgIHNldFR3b0ZhY3RvckVuYWJsZWQoZmFsc2UpXG4gICAgICAgICAgICAgIGNsb3NlTW9kYWwoJ3R3by1mYWN0b3ItYXV0aC1tb2RhbCcpXG4gICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkVycm9yKGN0eDogYW55KSB7XG4gICAgICAgICAgICAgIHRvYXN0LmVycm9yKGN0eC5lcnJvci5tZXNzYWdlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHZhbGlkYXRvcnM6IHsgb25TdWJtaXQ6IHBhc3N3b3JkU2NoZW1hIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGb3JtXG4gICAgICAgIG9uU3VibWl0PXsoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHZvaWQgZm9ybS5oYW5kbGVTdWJtaXQoKVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWRpc2FibGUtZm9ybSBtdC00XCI+XG4gICAgICAgIDxGb3JtSW5wdXRXcmFwIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItZGlzYWJsZS1mb3JtX19pbnB1dFdyYXBcIj5cbiAgICAgICAgICA8Zm9ybS5BcHBGaWVsZFxuICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIGNoaWxkcmVuPXsoZmllbGQ6IGFueSkgPT4gPGZpZWxkLlRleHRGaWVsZCB0eXBlPVwicGFzc3dvcmRcIiBjbGFzc05hbWU9XCJwYXNzd29yZFwiIGxhYmVsPVwiUGFzc3dvcmRcIiByZXF1aXJlZCAvPn1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0Zvcm1JbnB1dFdyYXA+XG4gICAgICAgIDxmb3JtLkFwcEZvcm0gY2hpbGRyZW49ezxmb3JtLlN1Ym1pdCBsYWJlbD1cIkRpc2FibGUgVHdv4oCRRmFjdG9yXCIgbG9hZGluZ0xhYmVsPVwiRGlzYWJsaW5nXCIgLz59IC8+XG4gICAgICA8L0Zvcm0+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1maWVsZFwiPlxuICAgICAge3R3b0ZhY3RvckVuYWJsZWQgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRGb3JtU3RhdGUoJ2Rpc2FibGUnKVxuICAgICAgICAgICAgb3Blbk1vZGFsKCd0d28tZmFjdG9yLWF1dGgtbW9kYWwnKVxuICAgICAgICAgIH19XG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgYnV0dG9uU3R5bGU9XCJwaWxsXCI+XG4gICAgICAgICAgRGlzYWJsZSBUd28tRmFjdG9yXG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldEZvcm1TdGF0ZSgnZW5hYmxlJylcbiAgICAgICAgICAgIG9wZW5Nb2RhbCgndHdvLWZhY3Rvci1hdXRoLW1vZGFsJylcbiAgICAgICAgICB9fVxuICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgIGJ1dHRvblN0eWxlPVwicGlsbFwiPlxuICAgICAgICAgIEVuYWJsZSBUd28tRmFjdG9yXG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxNb2RhbCBzbHVnPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsXCIgY2xhc3NOYW1lPXtiYXNlQ2xhc3N9IGNsb3NlT25CbHVyPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcHBlcmB9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNsb3NlTW9kYWwoJ3R3by1mYWN0b3ItYXV0aC1tb2RhbCcpfVxuICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJpY29uLWxhYmVsXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2Nsb3NlLWJ1dHRvbmB9PlxuICAgICAgICAgICAgPFhJY29uIHNpemU9ezI0fSAvPlxuICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2NvbnRlbnRgfSBzdHlsZT17eyBtYXhXaWR0aDogJzM4cmVtJyB9fT5cbiAgICAgICAgICAgIHtmb3JtU3RhdGUgPT09ICdlbmFibGUnICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8aDI+RW5hYmxlIFR3b+KAkUZhY3RvcjwvaDI+XG4gICAgICAgICAgICAgICAgPEVuYWJsZUZvcm0gLz5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2Zvcm1TdGF0ZSA9PT0gJ3ZlcmlmeScgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxoMj5WZXJpZnkgVHdv4oCRRmFjdG9yPC9oMj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1tb2RhbF9fdmVyaWZ5LWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICA8cD5TY2FuIHRoZSBRUiBjb2RlIHdpdGggeW91ciBhdXRoZW50aWNhdG9yIGFwcCBvciBjb3B5IHRoZSBVUkkuPC9wPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWF1dGgtbW9kYWxfX3FyY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICA8UVJDb2RlU1ZHIHZhbHVlPXt0b3RwVVJJfSBzaXplPXsyMDB9IC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gc2l6ZT1cInNtYWxsXCIgYnV0dG9uU3R5bGU9XCJ0cmFuc3BhcmVudFwiIG9uQ2xpY2s9e2NvcHlVUkl9IGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1tb2RhbF9fY29weS1idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPENvcHkgc2l6ZT17MTh9IGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1tb2RhbF9fY29weS1pY29uXCIgLz4gQ29weSBVUklcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPFZlcmlmeUZvcm0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2Zvcm1TdGF0ZSA9PT0gJ2JhY2t1cENvZGVzJyAmJiBiYWNrdXBDb2RlcyAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPGgyPkJhY2t1cCBDb2RlczwvaDI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWF1dGgtbW9kYWxfX2JhY2t1cC1jb2Rlc1wiPlxuICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICB7YmFja3VwQ29kZXMubWFwKChjb2RlLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIGtleT17aX0gY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsX19iYWNrdXAtY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NvZGV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsX19iYWNrdXAtZGVzY1wiPlxuICAgICAgICAgICAgICAgICAgICBTdG9yZSB0aGVzZSBjb2RlcyBpbiBhIHNhZmUgcGxhY2UuIEVhY2ggY29kZSBjYW4gYmUgdXNlZCBvbmNlIGlmIHlvdSBsb3NlIGFjY2VzcyB0byB5b3VyIGF1dGhlbnRpY2F0b3IuXG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY2xvc2VNb2RhbCgndHdvLWZhY3Rvci1hdXRoLW1vZGFsJyl9XG4gICAgICAgICAgICAgICAgICBidXR0b25TdHlsZT1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1tb2RhbF9fYmFja3VwLWNvZGVzLWNsb3NlLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgU2F2ZWQgdGhlbSFcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2Zvcm1TdGF0ZSA9PT0gJ2Rpc2FibGUnICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8aDI+VHdv4oCRRmFjdG9yIEF1dGhlbnRpY2F0aW9uPC9oMj5cbiAgICAgICAgICAgICAgICA8RGlzYWJsZUZvcm0gLz5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvTW9kYWw+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsIlhJY29uIiwiQ29weSIsIkJ1dHRvbiIsIk1vZGFsIiwidG9hc3QiLCJ1c2VNb2RhbCIsInVzZVRyYW5zbGF0aW9uIiwidXNlRm9ybUZpZWxkcyIsInVzZUZpZWxkIiwiY3JlYXRlQXV0aENsaWVudCIsInR3b0ZhY3RvckNsaWVudCIsIkZvcm0iLCJGb3JtSW5wdXRXcmFwIiwieiIsInBhc3N3b3JkRmllbGQiLCJRUkNvZGVTVkciLCJ1c2VBcHBGb3JtIiwiYmFzZUNsYXNzIiwiVHdvRmFjdG9yQXV0aCIsInRvdHBVUkkiLCJzZXRUb3RwVVJJIiwiYmFja3VwQ29kZXMiLCJzZXRCYWNrdXBDb2RlcyIsImZvcm1TdGF0ZSIsInNldEZvcm1TdGF0ZSIsIm9wZW5Nb2RhbCIsImNsb3NlTW9kYWwiLCJ0IiwidHdvRmFjdG9yRW5hYmxlZEZpZWxkIiwiZmllbGRzIiwidHdvRmFjdG9yRW5hYmxlZCIsIkJvb2xlYW4iLCJ2YWx1ZSIsInNldFZhbHVlIiwic2V0VHdvRmFjdG9yRW5hYmxlZCIsInBhdGgiLCJhdXRoQ2xpZW50IiwicGx1Z2lucyIsImNvcHlVUkkiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJzdWNjZXNzIiwiZXJyb3IiLCJwYXNzd29yZFNjaGVtYSIsIm9iamVjdCIsInBhc3N3b3JkIiwib3RwU2NoZW1hIiwib3RwIiwic3RyaW5nIiwibGVuZ3RoIiwicmVmaW5lIiwidmFsIiwidGVzdCIsIkVuYWJsZUZvcm0iLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJmb3JtIiwiZGVmYXVsdFZhbHVlcyIsIm9uU3VibWl0IiwiZGF0YSIsInR3b0ZhY3RvciIsImVuYWJsZSIsIm1lc3NhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJTdHJpbmciLCJzcGxpdCIsImZpbHRlciIsInZhbGlkYXRvcnMiLCJlIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVTdWJtaXQiLCJjbGFzc05hbWUiLCJBcHBGaWVsZCIsIm5hbWUiLCJjaGlsZHJlbiIsImZpZWxkIiwiVGV4dEZpZWxkIiwidHlwZSIsImxhYmVsIiwicmVxdWlyZWQiLCJBcHBGb3JtIiwiU3VibWl0IiwibG9hZGluZ0xhYmVsIiwiVmVyaWZ5Rm9ybSIsInZlcmlmeVRvdHAiLCJjb2RlIiwiRGlzYWJsZUZvcm0iLCJkaXNhYmxlIiwib25TdWNjZXNzIiwidW5kZWZpbmVkIiwib25FcnJvciIsImN0eCIsImRpdiIsIm9uQ2xpY2siLCJzaXplIiwiYnV0dG9uU3R5bGUiLCJzbHVnIiwiY2xvc2VPbkJsdXIiLCJzdHlsZSIsIm1heFdpZHRoIiwiaDIiLCJwIiwidWwiLCJtYXAiLCJpIiwibGkiXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBLE9BQU8sZUFBYztBQUVyQixPQUFPQSxTQUFTQyxPQUFPLEVBQUVDLFFBQVEsUUFBUSxR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
|