@tscircuit/fake-snippets 0.0.166 → 0.0.167
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/bundle.js +2 -1
- package/dist/index.js +1 -0
- package/dist/schema.d.ts +3 -0
- package/dist/schema.js +1 -0
- package/package.json +4 -3
package/dist/bundle.js
CHANGED
|
@@ -452,6 +452,7 @@ var publicOrgSchema = z.object({
|
|
|
452
452
|
package_count: z.number(),
|
|
453
453
|
avatar_url: z.string().nullable().optional(),
|
|
454
454
|
github_handle: z.string().nullable(),
|
|
455
|
+
github_installation_handles: z.array(z.string()).optional(),
|
|
455
456
|
tscircuit_handle: z.string().nullable(),
|
|
456
457
|
created_at: z.string(),
|
|
457
458
|
user_permissions: userPermissionsSchema.optional()
|
|
@@ -10585,4 +10586,4 @@ var stdin_default = winterSpec;
|
|
|
10585
10586
|
export {
|
|
10586
10587
|
stdin_default as default
|
|
10587
10588
|
};
|
|
10588
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2VlZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvYXV0b2xvYWQtZGV2LXBhY2thZ2VzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX2ZpbGUvZ2VuZXJhdGUtZnMtc2hhLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtZGIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1jdHgtZXJyb3IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1vcHRpb25hbC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1lcnJvci1oYW5kbGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXJlcXVlc3QtbG9nZ2luZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL2FpX3Jldmlld3MvcHJvY2Vzc19yZXZpZXcudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYXRhc2hlZXRzL3Byb2Nlc3NfYWxsX2RhdGFzaGVldHMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYi50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL21vdmVfb3JkZXJzX2ZvcndhcmQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvb3JkZXItc3RlcHMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9yZWNlaXZlZF9xdW90ZXMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9ydW5fYXN5bmNfdGFza3MudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9zZWVkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0X2FjY291bnRfYmFsYW5jZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3NlYXJjaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3VwZGF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpX3Jldmlld3MvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWlfcmV2aWV3cy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haV9yZXZpZXdzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS9bLi4uYW55cm91dGVdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWkudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haXN0cmVhbS9bLi4uYW55cm91dGVdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYXV0b2NvbXBsZXRlL2NyZWF0ZV9hdXRvY29tcGxldGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9idWdfcmVwb3J0cy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9idWdfcmVwb3J0cy9kb3dubG9hZF96aXAudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9idWdfcmVwb3J0cy91cGxvYWRfZmlsZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9ub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9kYXRhc2hlZXRzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2RhdGFzaGVldHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZGF0YXNoZWV0cy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZ2l0aHViL2luc3RhbGxhdGlvbnMvY3JlYXRlX25ld19pbnN0YWxsYXRpb25fcmVkaXJlY3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9naXRodWIvcmVwb3MvbGlzdF9hdmFpbGFibGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9naXRodWIvcmVwb3MvcmVmcmVzaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2hlYWx0aC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy91cGxvYWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX3F1b3Rlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9hZGRfbWVtYmVyLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtb3JnLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9kZWxldGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2dldF9tZW1iZXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvaW52aXRhdGlvbnMvYWNjZXB0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9pbnZpdGF0aW9ucy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2ludml0YXRpb25zL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvaW52aXRhdGlvbnMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvaW52aXRhdGlvbnMvcmV2b2tlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9saXN0X21lbWJlcnMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL3JlbW92ZV9tZW1iZXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL3VwZGF0ZV9tZW1iZXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL3VwZGF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvdXBsb2FkX2F2YXRhci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfYnVpbGRzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLWJ1aWxkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9idWlsZHMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGVfb3JfdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9maWxlL2dldC1wYWNrYWdlLWZpbGUtaWQtZnJvbS1maWxlLWRlc2NyaXB0b3IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvcmVidWlsZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvYWRkX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ZvcmsudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9pbWFnZXMvW293bmVyX2dpdGh1Yl91c2VybmFtZV0vW3Vuc2NvcGVkX25hbWVdL1t2aWV3X2Zvcm1hdF0udHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0X2xhdGVzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2xpc3RfdHJlbmRpbmcudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9zZWFyY2gudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGVfYWlfZGVzY3JpcHRpb24udHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wcm94eS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3Nlc3Npb25zL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2FkZF9zdGFyLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZGVsZXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZG93bmxvYWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2UudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF9sYXRlc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9saXN0X3RyZW5kaW5nLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvc2VhcmNoLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvdXBkYXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge2dldFJvdXRlTWF0Y2hlcn0gZnJvbSBcIm5leHQtcm91dGUtbWF0Y2hlclwiXG5pbXBvcnQgeyBtYWtlUmVxdWVzdEFnYWluc3RXaW50ZXJTcGVjIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuXG5pbXBvcnQgKiBhcyBzZHpob2Z3Z2FrcG9oeGFxIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9haV9yZXZpZXdzL3Byb2Nlc3NfcmV2aWV3LnRzXCJcbmltcG9ydCAqIGFzIGFzbGR6Y3hpdGFvdWtlbWwgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL2RhdGFzaGVldHMvcHJvY2Vzc19hbGxfZGF0YXNoZWV0cy50c1wiXG5pbXBvcnQgKiBhcyBkZmtpcHVlaGVhcnl2a3dwIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYi50c1wiXG5pbXBvcnQgKiBhcyBrc3pzc3h3eG1rb3ZvdGt5IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9tb3ZlX29yZGVyc19mb3J3YXJkLnRzXCJcbmltcG9ydCAqIGFzIHhxcnFkcnJvd3Ftanp1d2MgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3JlY2VpdmVkX3F1b3Rlcy50c1wiXG5pbXBvcnQgKiBhcyBybWp5a2Jydnpsa3VpeWNyIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9ydW5fYXN5bmNfdGFza3MudHNcIlxuaW1wb3J0ICogYXMgd2h6bGVuZ3RsdXV2Z3lvbyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2Uvc2VlZC50c1wiXG5pbXBvcnQgKiBhcyBramlsYnFkcmhuemF3aXVnIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9hY2NvdW50cy9nZXRfYWNjb3VudF9iYWxhbmNlLnRzXCJcbmltcG9ydCAqIGFzIG1ycWpoanZ0eGZvZW5wdXggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBycXlzZWtkbGZ1Y3pmZHdiIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9hY2NvdW50cy9zZWFyY2gudHNcIlxuaW1wb3J0ICogYXMgbXRheHVkdHZibmFwaHZwbiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIHpvc21lYWFsZHpmbmd0YnYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpX3Jldmlld3MvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIHBjY29uZHhpc3dhc3lhbGogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpX3Jldmlld3MvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIGJuY3BtYWJqdXh3b3Fmd2EgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpX3Jldmlld3MvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBreGFqdGF6a252dHRveXprIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS50c1wiXG5pbXBvcnQgKiBhcyB6YnVpeXZ6eXlyYXFmcmF6IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS9bLi4uYW55cm91dGVdLnRzXCJcbmltcG9ydCAqIGFzIGtjbWhiY3B3cnB2ZXlzZXUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2Fpc3RyZWFtL1suLi5hbnlyb3V0ZV0udHNcIlxuaW1wb3J0ICogYXMgdWljbGhvbXdtYnd0bmtvdiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYXV0b2NvbXBsZXRlL2NyZWF0ZV9hdXRvY29tcGxldGUudHNcIlxuaW1wb3J0ICogYXMgdGRrd2F3eXplaWNzZHBoZiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYnVnX3JlcG9ydHMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGNsb3RjbXR2YXJ5Y2dzbHYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2J1Z19yZXBvcnRzL2Rvd25sb2FkX3ppcC50c1wiXG5pbXBvcnQgKiBhcyB6eXBndHVpd29zbW1kbnVuIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9idWdfcmVwb3J0cy91cGxvYWRfZmlsZS50c1wiXG5pbXBvcnQgKiBhcyB4dGlkYXhkbG5qeWRuc2JoIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9kYXRhc2hlZXRzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyB6enNodm11YnFxZGZtb2tqIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9kYXRhc2hlZXRzL2dldC50c1wiXG5pbXBvcnQgKiBhcyB1cG9qb2F3aWp5eWp0cGx3IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9kYXRhc2hlZXRzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgb2RicWl1YXNtbXpsam9hayBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZ2l0aHViL2luc3RhbGxhdGlvbnMvY3JlYXRlX25ld19pbnN0YWxsYXRpb25fcmVkaXJlY3QudHNcIlxuaW1wb3J0ICogYXMgbHpxd2pudHBzYmpvaGt5YSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZ2l0aHViL3JlcG9zL2xpc3RfYXZhaWxhYmxlLnRzXCJcbmltcG9ydCAqIGFzIGVianZ3amlocmxsdWJxdWYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2dpdGh1Yi9yZXBvcy9yZWZyZXNoLnRzXCJcbmltcG9ydCAqIGFzIGtrbHV3YWphaG9pa2diZmggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2hlYWx0aC50c1wiXG5pbXBvcnQgKiBhcyBkdWtyeXJseXB0cnN2Z213IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9pbnRlcm5hbC9zZXNzaW9ucy9jcmVhdGVfd2l0aG91dF9hdXRoLnRzXCJcbmltcG9ydCAqIGFzIGx5ZWJzdmpldWx0dmFydHEgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX2ZpbGVzL2dldC50c1wiXG5pbXBvcnQgKiBhcyB1aHFjb3B1emtteHl4Y3V6IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy91cGxvYWQudHNcIlxuaW1wb3J0ICogYXMgYW5waW9rY2Rrb2p2ZGJuZiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZV9hbGxfdmVuZG9yX3F1b3Rlcy50c1wiXG5pbXBvcnQgKiBhcyB5a3h6cGhoeGFkdHBmb3B1IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGlkb2ZlbHJ4ZWJ5ZXV0Y2ogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX3F1b3Rlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgd2NhdHFmdGZ4cGZ4cXZ6bCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyBrZ3hocGZybHZlbmhvaWJjIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHBocWZxem5ldHBycHNpZmUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIG94b2RicGxjam52emxvdXYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvYWRkX21lbWJlci50c1wiXG5pbXBvcnQgKiBhcyBydGJrdmJpcXpwZWtibmhnIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyB3YmZrbXRweXd0bWRkamhzIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2RlbGV0ZS50c1wiXG5pbXBvcnQgKiBhcyBocXB4aHZkc2d0cWVjYXF1IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2dldF9tZW1iZXIudHNcIlxuaW1wb3J0ICogYXMgYXd1ZHBhaHB2Y25zd2ludCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9nZXQudHNcIlxuaW1wb3J0ICogYXMgbGpldHBsaXl1a2Z1bGhtYiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9pbnZpdGF0aW9ucy9hY2NlcHQudHNcIlxuaW1wb3J0ICogYXMgaHZzbWViY3lzd3FqeWdxeCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9pbnZpdGF0aW9ucy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgcGV4bHVmZHlqbGV3anlkdCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9pbnZpdGF0aW9ucy9nZXQudHNcIlxuaW1wb3J0ICogYXMgbGRqbHVxbHh3Y29hdXJjaiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9pbnZpdGF0aW9ucy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIG5jY3V5bXNncmJvd2xqbXYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvaW52aXRhdGlvbnMvcmV2b2tlLnRzXCJcbmltcG9ydCAqIGFzIGRqaHB4amNvcWdma2V3d3AgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvbGlzdF9tZW1iZXJzLnRzXCJcbmltcG9ydCAqIGFzIHB4bGRpbWd2aHVoYmFnbXMgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBnem9zYnV5dGpseW1nbmNnIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL3JlbW92ZV9tZW1iZXIudHNcIlxuaW1wb3J0ICogYXMgZW1jb3NleG9na3FqaHZsbCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy91cGRhdGVfbWVtYmVyLnRzXCJcbmltcG9ydCAqIGFzIG9ibWtpbnh6YWV3d2psb2ggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIGt6cHdwanplenlxbm9od3UgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvdXBsb2FkX2F2YXRhci50c1wiXG5pbXBvcnQgKiBhcyB4dWpzcXVtbWF2bWtodnByIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2J1aWxkcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgaGpoY3Z2dmxpb3hlb3R0ZCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9idWlsZHMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBpbnpvdWtqbHhsbWdvbmdrIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZV9vcl91cGRhdGUudHNcIlxuaW1wb3J0ICogYXMgeWdqa21nZnBqZGF4Z2xycSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgc3d6dmNzZGVlaG12bmR0biBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9kZWxldGUudHNcIlxuaW1wb3J0ICogYXMgY21zdnZubndxY3dzZ2Z2YyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9kb3dubG9hZC50c1wiXG5pbXBvcnQgKiBhcyB6d3p0cHVscXpudWtrcXJ5IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2dldC50c1wiXG5pbXBvcnQgKiBhcyB4ZWF1dHNlbnZsb3RvYmpsIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgZHNhanJzdGp2ZW5sdWl1eSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgaHVoc29sY3VjdXB2ZGtsZiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgbXd1b3RzY25wdnJiYW96eSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIHFlY2h1YXF6ZG9la2xyZWsgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvcmVidWlsZC50c1wiXG5pbXBvcnQgKiBhcyBra3RqYmN4eXJrbmlrZWVpIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL3VwZGF0ZS50c1wiXG5pbXBvcnQgKiBhcyBsYWZnZnFyZHV6eW5uZmtjIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9hZGRfc3Rhci50c1wiXG5pbXBvcnQgKiBhcyBybXRvdHBmcW9icHhqd21iIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgdnN0eXlidGp5Y3ZncHFzdSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvZGVsZXRlLnRzXCJcbmltcG9ydCAqIGFzIGVwY3dlaW9tb3d2em1oaGsgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ZvcmsudHNcIlxuaW1wb3J0ICogYXMgYmtvd2Rnb3NycWtva3RvcSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHJ5aWtteHdxeHlpZnZhdWcgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ltYWdlcy9bb3duZXJfZ2l0aHViX3VzZXJuYW1lXS9bdW5zY29wZWRfbmFtZV0vW3ZpZXdfZm9ybWF0XS50c1wiXG5pbXBvcnQgKiBhcyBmY3R6b3F4Y3p1eXFqeXdmIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0X2xhdGVzdC50c1wiXG5pbXBvcnQgKiBhcyBra3hianBheG5jZnNtYW56IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0X3RyZW5kaW5nLnRzXCJcbmltcG9ydCAqIGFzIHdpaHN6dm5tdWF2cXl4ZmEgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgZ3RvbnFqY3Z0bGphbHpyayBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXIudHNcIlxuaW1wb3J0ICogYXMgdmlkeXZ0bXBqb21ldXd4ZiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvc2VhcmNoLnRzXCJcbmltcG9ydCAqIGFzIG1iYnpvbnF0d2NwdGtpZnEgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL3VwZGF0ZV9haV9kZXNjcmlwdGlvbi50c1wiXG5pbXBvcnQgKiBhcyBjcWNiaW12d2ttaG9jaHh0IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGUudHNcIlxuaW1wb3J0ICogYXMgY29jeGlna252bWdqeHZ5YiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcHJveHkudHNcIlxuaW1wb3J0ICogYXMgZ2Z1dHlrdnNteGtqY3BsdyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc2Vzc2lvbnMvZGVsZXRlLnRzXCJcbmltcG9ydCAqIGFzIHhnbHVtbGZrZnhvcG11bnogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2FkZF9zdGFyLnRzXCJcbmltcG9ydCAqIGFzIGJicG5ocmZzY2lwbnNwdXEgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyBseXR4bXRqa3p5cm1hdWJoIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kZWxldGUudHNcIlxuaW1wb3J0ICogYXMgYmRlZm54YWRlbnJwamRnZSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZG93bmxvYWQudHNcIlxuaW1wb3J0ICogYXMgb2JqZmtheWJscWxwbnNkdSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0X2ltYWdlLnRzXCJcbmltcG9ydCAqIGFzIHRsZ3BnamlpcXNpeGV4YXIgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBib3V1bGdvcXRqemhqZ2FoIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdLnRzXCJcbmltcG9ydCAqIGFzIGxwZ2F3end1emtxaGdwbGcgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3RfbGF0ZXN0LnRzXCJcbmltcG9ydCAqIGFzIHZvbGtzb2NtcWVlaXdsY2EgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3RfdHJlbmRpbmcudHNcIlxuaW1wb3J0ICogYXMgZm5ka2p6cWF1cHZ1Ymx1eCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBud3NkbGtkbnVmZHJ2emxtIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9yZW1vdmVfc3Rhci50c1wiXG5pbXBvcnQgKiBhcyB6bWphdXZobXFsbm16ZmtyIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9zZWFyY2gudHNcIlxuaW1wb3J0ICogYXMgdWJ2dmFibHF6bHpuaXZicyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvdXBkYXRlLnRzXCJcblxuY29uc3Qgcm91dGVNYXBXaXRoSGFuZGxlcnMgPSB7XG4gIFwiL2FwaS9fZmFrZS9haV9yZXZpZXdzL3Byb2Nlc3NfcmV2aWV3XCI6IHNkemhvZndnYWtwb2h4YXEuZGVmYXVsdCxcIi9hcGkvX2Zha2UvZGF0YXNoZWV0cy9wcm9jZXNzX2FsbF9kYXRhc2hlZXRzXCI6IGFzbGR6Y3hpdGFvdWtlbWwuZGVmYXVsdCxcIi9hcGkvX2Zha2UvZGJcIjogZGZraXB1ZWhlYXJ5dmt3cC5kZWZhdWx0LFwiL2FwaS9fZmFrZS9tb3ZlX29yZGVyc19mb3J3YXJkXCI6IGtzenNzeHd4bWtvdm90a3kuZGVmYXVsdCxcIi9hcGkvX2Zha2UvcmVjZWl2ZWRfcXVvdGVzXCI6IHhxcnFkcnJvd3Ftanp1d2MuZGVmYXVsdCxcIi9hcGkvX2Zha2UvcnVuX2FzeW5jX3Rhc2tzXCI6IHJtanlrYnJ2emxrdWl5Y3IuZGVmYXVsdCxcIi9hcGkvX2Zha2Uvc2VlZFwiOiB3aHpsZW5ndGx1dXZneW9vLmRlZmF1bHQsXCIvYXBpL2FjY291bnRzL2dldF9hY2NvdW50X2JhbGFuY2VcIjoga2ppbGJxZHJobnphd2l1Zy5kZWZhdWx0LFwiL2FwaS9hY2NvdW50cy9nZXRcIjogbXJxamhqdnR4Zm9lbnB1eC5kZWZhdWx0LFwiL2FwaS9hY2NvdW50cy9zZWFyY2hcIjogcnF5c2VrZGxmdWN6ZmR3Yi5kZWZhdWx0LFwiL2FwaS9hY2NvdW50cy91cGRhdGVcIjogbXRheHVkdHZibmFwaHZwbi5kZWZhdWx0LFwiL2FwaS9haV9yZXZpZXdzL2NyZWF0ZVwiOiB6b3NtZWFhbGR6Zm5ndGJ2LmRlZmF1bHQsXCIvYXBpL2FpX3Jldmlld3MvZ2V0XCI6IHBjY29uZHhpc3dhc3lhbGouZGVmYXVsdCxcIi9hcGkvYWlfcmV2aWV3cy9saXN0XCI6IGJuY3BtYWJqdXh3b3Fmd2EuZGVmYXVsdCxcIi9hcGkvYWlcIjoga3hhanRhemtudnR0b3l6ay5kZWZhdWx0LFwiL2FwaS9haS9bLi4uYW55cm91dGVdXCI6IHpidWl5dnp5eXJhcWZyYXouZGVmYXVsdCxcIi9hcGkvYWlzdHJlYW0vWy4uLmFueXJvdXRlXVwiOiBrY21oYmNwd3JwdmV5c2V1LmRlZmF1bHQsXCIvYXBpL2F1dG9jb21wbGV0ZS9jcmVhdGVfYXV0b2NvbXBsZXRlXCI6IHVpY2xob213bWJ3dG5rb3YuZGVmYXVsdCxcIi9hcGkvYnVnX3JlcG9ydHMvY3JlYXRlXCI6IHRka3dhd3l6ZWljc2RwaGYuZGVmYXVsdCxcIi9hcGkvYnVnX3JlcG9ydHMvZG93bmxvYWRfemlwXCI6IGNsb3RjbXR2YXJ5Y2dzbHYuZGVmYXVsdCxcIi9hcGkvYnVnX3JlcG9ydHMvdXBsb2FkX2ZpbGVcIjogenlwZ3R1aXdvc21tZG51bi5kZWZhdWx0LFwiL2FwaS9kYXRhc2hlZXRzL2NyZWF0ZVwiOiB4dGlkYXhkbG5qeWRuc2JoLmRlZmF1bHQsXCIvYXBpL2RhdGFzaGVldHMvZ2V0XCI6IHp6c2h2bXVicXFkZm1va2ouZGVmYXVsdCxcIi9hcGkvZGF0YXNoZWV0cy9saXN0XCI6IHVwb2pvYXdpanl5anRwbHcuZGVmYXVsdCxcIi9hcGkvZ2l0aHViL2luc3RhbGxhdGlvbnMvY3JlYXRlX25ld19pbnN0YWxsYXRpb25fcmVkaXJlY3RcIjogb2RicWl1YXNtbXpsam9hay5kZWZhdWx0LFwiL2FwaS9naXRodWIvcmVwb3MvbGlzdF9hdmFpbGFibGVcIjogbHpxd2pudHBzYmpvaGt5YS5kZWZhdWx0LFwiL2FwaS9naXRodWIvcmVwb3MvcmVmcmVzaFwiOiBlYmp2d2ppaHJsbHVicXVmLmRlZmF1bHQsXCIvYXBpL2hlYWx0aFwiOiBra2x1d2FqYWhvaWtnYmZoLmRlZmF1bHQsXCIvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGhcIjogZHVrcnlybHlwdHJzdmdtdy5kZWZhdWx0LFwiL2FwaS9vcmRlcl9maWxlcy9nZXRcIjogbHllYnN2amV1bHR2YXJ0cS5kZWZhdWx0LFwiL2FwaS9vcmRlcl9maWxlcy91cGxvYWRcIjogdWhxY29wdXprbXh5eGN1ei5kZWZhdWx0LFwiL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzXCI6IGFucGlva2Nka29qdmRibmYuZGVmYXVsdCxcIi9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZVwiOiB5a3h6cGhoeGFkdHBmb3B1LmRlZmF1bHQsXCIvYXBpL29yZGVyX3F1b3Rlcy9nZXRcIjogaWRvZmVscnhlYnlldXRjai5kZWZhdWx0LFwiL2FwaS9vcmRlcnMvY3JlYXRlXCI6IHdjYXRxZnRmeHBmeHF2emwuZGVmYXVsdCxcIi9hcGkvb3JkZXJzL2dldFwiOiBrZ3hocGZybHZlbmhvaWJjLmRlZmF1bHQsXCIvYXBpL29yZGVycy9saXN0XCI6IHBocWZxem5ldHBycHNpZmUuZGVmYXVsdCxcIi9hcGkvb3Jncy9hZGRfbWVtYmVyXCI6IG94b2RicGxjam52emxvdXYuZGVmYXVsdCxcIi9hcGkvb3Jncy9jcmVhdGVcIjogcnRia3ZiaXF6cGVrYm5oZy5kZWZhdWx0LFwiL2FwaS9vcmdzL2RlbGV0ZVwiOiB3YmZrbXRweXd0bWRkamhzLmRlZmF1bHQsXCIvYXBpL29yZ3MvZ2V0X21lbWJlclwiOiBocXB4aHZkc2d0cWVjYXF1LmRlZmF1bHQsXCIvYXBpL29yZ3MvZ2V0XCI6IGF3dWRwYWhwdmNuc3dpbnQuZGVmYXVsdCxcIi9hcGkvb3Jncy9pbnZpdGF0aW9ucy9hY2NlcHRcIjogbGpldHBsaXl1a2Z1bGhtYi5kZWZhdWx0LFwiL2FwaS9vcmdzL2ludml0YXRpb25zL2NyZWF0ZVwiOiBodnNtZWJjeXN3cWp5Z3F4LmRlZmF1bHQsXCIvYXBpL29yZ3MvaW52aXRhdGlvbnMvZ2V0XCI6IHBleGx1ZmR5amxld2p5ZHQuZGVmYXVsdCxcIi9hcGkvb3Jncy9pbnZpdGF0aW9ucy9saXN0XCI6IGxkamx1cWx4d2NvYXVyY2ouZGVmYXVsdCxcIi9hcGkvb3Jncy9pbnZpdGF0aW9ucy9yZXZva2VcIjogbmNjdXltc2dyYm93bGptdi5kZWZhdWx0LFwiL2FwaS9vcmdzL2xpc3RfbWVtYmVyc1wiOiBkamhweGpjb3FnZmtld3dwLmRlZmF1bHQsXCIvYXBpL29yZ3MvbGlzdFwiOiBweGxkaW1ndmh1aGJhZ21zLmRlZmF1bHQsXCIvYXBpL29yZ3MvcmVtb3ZlX21lbWJlclwiOiBnem9zYnV5dGpseW1nbmNnLmRlZmF1bHQsXCIvYXBpL29yZ3MvdXBkYXRlX21lbWJlclwiOiBlbWNvc2V4b2drcWpodmxsLmRlZmF1bHQsXCIvYXBpL29yZ3MvdXBkYXRlXCI6IG9ibWtpbnh6YWV3d2psb2guZGVmYXVsdCxcIi9hcGkvb3Jncy91cGxvYWRfYXZhdGFyXCI6IGt6cHdwanplenlxbm9od3UuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9idWlsZHMvZ2V0XCI6IHh1anNxdW1tYXZta2h2cHIuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9idWlsZHMvbGlzdFwiOiBoamhjdnZ2bGlveGVvdHRkLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlX29yX3VwZGF0ZVwiOiBpbnpvdWtqbHhsbWdvbmdrLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlXCI6IHlnamttZ2ZwamRheGdscnEuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9kZWxldGVcIjogc3d6dmNzZGVlaG12bmR0bi5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkXCI6IGNtc3Z2bm53cWN3c2dmdmMuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9nZXRcIjogend6dHB1bHF6bnVra3FyeS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3RcIjogeGVhdXRzZW52bG90b2JqbC5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2NyZWF0ZVwiOiBkc2FqcnN0anZlbmx1aXV5LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfcmVsZWFzZXMvZ2V0XCI6IGh1aHNvbGN1Y3VwdmRrbGYuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy9saXN0XCI6IG13dW90c2NucHZyYmFvenkuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy9yZWJ1aWxkXCI6IHFlY2h1YXF6ZG9la2xyZWsuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy91cGRhdGVcIjoga2t0amJjeHlya25pa2VlaS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9hZGRfc3RhclwiOiBsYWZnZnFyZHV6eW5uZmtjLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2NyZWF0ZVwiOiBybXRvdHBmcW9icHhqd21iLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2RlbGV0ZVwiOiB2c3R5eWJ0anljdmdwcXN1LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2ZvcmtcIjogZXBjd2Vpb21vd3Z6bWhoay5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9nZXRcIjogYmtvd2Rnb3NycWtva3RvcS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9pbWFnZXMvW293bmVyX2dpdGh1Yl91c2VybmFtZV0vW3Vuc2NvcGVkX25hbWVdL1t2aWV3X2Zvcm1hdF1cIjogcnlpa214d3F4eWlmdmF1Zy5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9saXN0X2xhdGVzdFwiOiBmY3R6b3F4Y3p1eXFqeXdmLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2xpc3RfdHJlbmRpbmdcIjoga2t4YmpwYXhuY2ZzbWFuei5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9saXN0XCI6IHdpaHN6dm5tdWF2cXl4ZmEuZGVmYXVsdCxcIi9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXJcIjogZ3RvbnFqY3Z0bGphbHpyay5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9zZWFyY2hcIjogdmlkeXZ0bXBqb21ldXd4Zi5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy91cGRhdGVfYWlfZGVzY3JpcHRpb25cIjogbWJiem9ucXR3Y3B0a2lmcS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy91cGRhdGVcIjogY3FjYmltdndrbWhvY2h4dC5kZWZhdWx0LFwiL2FwaS9wcm94eVwiOiBjb2N4aWdrbnZtZ2p4dnliLmRlZmF1bHQsXCIvYXBpL3Nlc3Npb25zL2RlbGV0ZVwiOiBnZnV0eWt2c214a2pjcGx3LmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2FkZF9zdGFyXCI6IHhnbHVtbGZrZnhvcG11bnouZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvY3JlYXRlXCI6IGJicG5ocmZzY2lwbnNwdXEuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZGVsZXRlXCI6IGx5dHhtdGprenlybWF1YmguZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZG93bmxvYWRcIjogYmRlZm54YWRlbnJwamRnZS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2VcIjogb2JqZmtheWJscWxwbnNkdS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9nZXRcIjogdGxncGdqaWlxc2l4ZXhhci5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdXCI6IGJvdXVsZ29xdGp6aGpnYWguZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvbGlzdF9sYXRlc3RcIjogbHBnYXd6d3V6a3FoZ3BsZy5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9saXN0X3RyZW5kaW5nXCI6IHZvbGtzb2NtcWVlaXdsY2EuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvbGlzdFwiOiBmbmRranpxYXVwdnVibHV4LmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyXCI6IG53c2Rsa2RudWZkcnZ6bG0uZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvc2VhcmNoXCI6IHptamF1dmhtcWxubXpma3IuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvdXBkYXRlXCI6IHVidnZhYmxxemx6bml2YnMuZGVmYXVsdFxufVxuXG5jb25zdCB3aW50ZXJTcGVjID0ge1xuICByb3V0ZU1hdGNoZXI6IGdldFJvdXRlTWF0Y2hlcihPYmplY3Qua2V5cyhyb3V0ZU1hcFdpdGhIYW5kbGVycykpLFxuICByb3V0ZU1hcFdpdGhIYW5kbGVycyxcbiAgbWFrZVJlcXVlc3Q6IGFzeW5jIChyZXEsIG9wdGlvbnMpID0+IG1ha2VSZXF1ZXN0QWdhaW5zdFdpbnRlclNwZWMod2ludGVyU3BlYywgb3B0aW9ucykocmVxKVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aW50ZXJTcGVjIiwgImltcG9ydCB7IGNyZWF0ZVdpdGhXaW50ZXJTcGVjIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuaW1wb3J0IHsgd2l0aERiIH0gZnJvbSBcIi4vd2l0aC1kYlwiXG5pbXBvcnQgeyBjcmVhdGVXaXRoRGVmYXVsdEV4Y2VwdGlvbkhhbmRsaW5nIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQgeyB3aXRoQ3R4RXJyb3IgfSBmcm9tIFwiLi93aXRoLWN0eC1lcnJvclwiXG5pbXBvcnQgeyB3aXRoU2Vzc2lvbkF1dGggfSBmcm9tIFwiLi93aXRoLXNlc3Npb24tYXV0aFwiXG5pbXBvcnQgeyB3aXRoT3B0aW9uYWxTZXNzaW9uQXV0aCB9IGZyb20gXCIuL3dpdGgtb3B0aW9uYWwtc2Vzc2lvbi1hdXRoXCJcbmltcG9ydCB7IHdpdGhFcnJvckhhbmRsaW5nIH0gZnJvbSBcIi4vd2l0aC1lcnJvci1oYW5kbGluZ1wiXG5pbXBvcnQgeyB3aXRoUmVxdWVzdExvZ2dpbmcgfSBmcm9tIFwiLi93aXRoLXJlcXVlc3QtbG9nZ2luZ1wiXG5cbmV4cG9ydCBjb25zdCB3aXRoUm91dGVTcGVjID0gY3JlYXRlV2l0aFdpbnRlclNwZWMoe1xuICBhcGlOYW1lOiBcInRzY2lyY3VpdCBTbmlwcGV0cyBBUElcIixcbiAgcHJvZHVjdGlvblNlcnZlclVybDogXCJodHRwczovL3NuaXBwZXRzLnRzY2lyY3VpdC5jb20vYXBpXCIsXG4gIGJlZm9yZUF1dGhNaWRkbGV3YXJlOiBbd2l0aFJlcXVlc3RMb2dnaW5nLCB3aXRoRXJyb3JIYW5kbGluZywgd2l0aEN0eEVycm9yXSxcbiAgYXV0aE1pZGRsZXdhcmU6IHtcbiAgICBzZXNzaW9uOiB3aXRoU2Vzc2lvbkF1dGgsXG4gICAgb3B0aW9uYWxfc2Vzc2lvbjogd2l0aE9wdGlvbmFsU2Vzc2lvbkF1dGgsXG4gIH0sXG4gIGFmdGVyQXV0aE1pZGRsZXdhcmU6IFtcbiAgICB3aXRoRGIsXG4gICAgY3JlYXRlV2l0aERlZmF1bHRFeGNlcHRpb25IYW5kbGluZyh7XG4gICAgICBpbmNsdWRlU3RhY2tUcmFjZUluUmVzcG9uc2U6IHRydWUsXG4gICAgfSksXG4gIF0sXG59KVxuIiwgImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBob2lzdCB9IGZyb20gXCJ6dXN0YW5kLWhvaXN0XCJcbmltcG9ydCB7IGNyZWF0ZVN0b3JlIH0gZnJvbSBcInp1c3RhbmQvdmFuaWxsYVwiXG5cbmltcG9ydCB7IGNvbWJpbmUgfSBmcm9tIFwienVzdGFuZC9taWRkbGV3YXJlXCJcbmltcG9ydCB7XG4gIHR5cGUgQWNjb3VudCxcbiAgdHlwZSBBY2NvdW50UGFja2FnZSxcbiAgdHlwZSBKbGNwY2JPcmRlclN0YXRlLFxuICB0eXBlIEpsY3BjYk9yZGVyU3RlcFJ1bixcbiAgdHlwZSBMb2dpblBhZ2UsXG4gIHR5cGUgT3JkZXIsXG4gIHR5cGUgT3JkZXJGaWxlLFxuICBPcmRlclF1b3RlLFxuICB0eXBlIEJ1Z1JlcG9ydCxcbiAgYnVnUmVwb3J0U2NoZW1hLFxuICB0eXBlIEJ1Z1JlcG9ydEZpbGUsXG4gIGJ1Z1JlcG9ydEZpbGVTY2hlbWEsXG4gIHR5cGUgUGFja2FnZSxcbiAgdHlwZSBQYWNrYWdlRmlsZSxcbiAgdHlwZSBQYWNrYWdlUmVsZWFzZSxcbiAgcGFja2FnZVJlbGVhc2VTY2hlbWEsXG4gIHR5cGUgUGFja2FnZUJ1aWxkLFxuICBwYWNrYWdlQnVpbGRTY2hlbWEsXG4gIHR5cGUgQWlSZXZpZXcsXG4gIGFpUmV2aWV3U2NoZW1hLFxuICB0eXBlIERhdGFzaGVldCxcbiAgZGF0YXNoZWV0U2NoZW1hLFxuICB0eXBlIFNlc3Npb24sXG4gIHR5cGUgU25pcHBldCxcbiAgZGF0YWJhc2VTY2hlbWEsXG4gIHR5cGUgcGFja2FnZVNjaGVtYSxcbiAgdHlwZSBzbmlwcGV0U2NoZW1hLFxuICBPcmdhbml6YXRpb24sXG4gIE9yZ0FjY291bnQsXG4gIE9yZ0ludml0YXRpb24sXG4gIFVzZXJQZXJtaXNzaW9ucyxcbn0gZnJvbSBcIi4vc2NoZW1hLnRzXCJcbmltcG9ydCB7IHNlZWQgYXMgc2VlZEZuIH0gZnJvbSBcIi4vc2VlZFwiXG5pbXBvcnQgeyBnZW5lcmF0ZUZzU2hhIH0gZnJvbSBcIi4uL3BhY2thZ2VfZmlsZS9nZW5lcmF0ZS1mcy1zaGFcIlxuXG5leHBvcnQgY29uc3QgY3JlYXRlRGF0YWJhc2UgPSAoeyBzZWVkIH06IHsgc2VlZD86IGJvb2xlYW4gfSA9IHt9KSA9PiB7XG4gIGNvbnN0IGRiID0gaG9pc3QoY3JlYXRlU3RvcmUoaW5pdGlhbGl6ZXIpKVxuICBpZiAoc2VlZCkge1xuICAgIHNlZWRGbihkYilcbiAgfVxuICByZXR1cm4gZGJcbn1cblxuZXhwb3J0IHR5cGUgRGJDbGllbnQgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVEYXRhYmFzZT5cblxuY29uc3QgaW5pdGlhbGl6ZXIgPSBjb21iaW5lKGRhdGFiYXNlU2NoZW1hLnBhcnNlKHt9KSwgKHNldCwgZ2V0KSA9PiAoe1xuICBhZGRPcmRlcjogKG9yZGVyOiBPbWl0PE9yZGVyLCBcIm9yZGVyX2lkXCI+KTogT3JkZXIgPT4ge1xuICAgIGNvbnN0IG5ld09yZGVyID0geyBvcmRlcl9pZDogYG9yZGVyXyR7Z2V0KCkuaWRDb3VudGVyICsgMX1gLCAuLi5vcmRlciB9XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JkZXJzOiBbLi4uc3RhdGUub3JkZXJzLCBuZXdPcmRlcl0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdPcmRlclxuICB9LFxuICBnZXRPcmRlckJ5SWQ6IChvcmRlcklkOiBzdHJpbmcpOiBPcmRlciB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlcnMuZmluZCgob3JkZXIpID0+IG9yZGVyLm9yZGVyX2lkID09PSBvcmRlcklkKVxuICB9LFxuICBnZXRPcmRlckZpbGVzQnlPcmRlcklkOiAob3JkZXJJZDogc3RyaW5nKTogT3JkZXJGaWxlW10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUub3JkZXJGaWxlcy5maWx0ZXIoKGZpbGUpID0+IGZpbGUub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGFkZE9yZGVyUXVvdGU6ICh7XG4gICAgYWNjb3VudF9pZCxcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgdmVuZG9yX25hbWUsXG4gIH06IHtcbiAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ/OiBzdHJpbmdcbiAgICB2ZW5kb3JfbmFtZTogc3RyaW5nXG4gIH0pOiBzdHJpbmcgPT4ge1xuICAgIC8vIERldGFpbHMgZm9yIHRoZSBvcmRlciBxdW90ZSB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhlIGpvYiB3aXRoIHRoZSBjb3N0XG4gICAgY29uc3QgbmV3T3JkZXJRdW90ZSA9IHtcbiAgICAgIG9yZGVyX3F1b3RlX2lkOiBgb3JkZXJfcXVvdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICBhY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlX3JlbGVhc2VfaWQgPz8gbnVsbCxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGNvbXBsZXRlZF9hdDogbnVsbCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaGFzX2Vycm9yOiBmYWxzZSxcbiAgICAgIGlzX2NvbXBsZXRlZDogZmFsc2UsXG4gICAgICBpc19wcm9jZXNzaW5nOiB0cnVlLFxuICAgICAgdmVuZG9yX25hbWUsXG4gICAgICBxdW90ZWRfY29tcG9uZW50czogW10sXG4gICAgICBiYXJlX3BjYl9jb3N0OiAwLFxuICAgICAgc2hpcHBpbmdfb3B0aW9uczogW10sXG4gICAgICB0b3RhbF9jb3N0X3dpdGhvdXRfc2hpcHBpbmc6IDAsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyUXVvdGVzOiBbLi4uc3RhdGUub3JkZXJRdW90ZXMsIG5ld09yZGVyUXVvdGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJRdW90ZS5vcmRlcl9xdW90ZV9pZFxuICB9LFxuICBnZXRPcmRlclF1b3RlQnlJZDogKG9yZGVyUXVvdGVJZDogc3RyaW5nKTogT3JkZXJRdW90ZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlclF1b3Rlcy5maW5kKFxuICAgICAgKHF1b3RlKSA9PiBxdW90ZS5vcmRlcl9xdW90ZV9pZCA9PT0gb3JkZXJRdW90ZUlkLFxuICAgIClcbiAgfSxcbiAgZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQ6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICk6IEpsY3BjYk9yZGVyU3RhdGUgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuamxjcGNiT3JkZXJTdGF0ZS5maW5kKChzdGF0ZSkgPT4gc3RhdGUub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGdldEpsY3BjYk9yZGVyU3RlcFJ1bnNCeUpsY3BjYk9yZGVyU3RhdGVJZDogKFxuICAgIGpsY3BjYk9yZGVyU3RhdGVJZDogc3RyaW5nLFxuICApOiBKbGNwY2JPcmRlclN0ZXBSdW5bXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5qbGNwY2JPcmRlclN0ZXBSdW5zXG4gICAgICAuZmlsdGVyKChzdGVwUnVuKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBzdGF0ZS5qbGNwY2JPcmRlclN0YXRlLmZpbmQoXG4gICAgICAgICAgKHN0YXRlKSA9PlxuICAgICAgICAgICAgc3RhdGUuamxjcGNiX29yZGVyX3N0YXRlX2lkID09PSBzdGVwUnVuLmpsY3BjYl9vcmRlcl9zdGF0ZV9pZCxcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gb3JkZXJTdGF0ZT8ub3JkZXJfaWQgPT09IGpsY3BjYk9yZGVyU3RhdGVJZFxuICAgICAgfSlcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgICAgKVxuICB9LFxuICB1cGRhdGVPcmRlcjogKG9yZGVySWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxPcmRlcj4pID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgb3JkZXJzOiBzdGF0ZS5vcmRlcnMubWFwKChvcmRlcikgPT5cbiAgICAgICAgb3JkZXIub3JkZXJfaWQgPT09IG9yZGVySWQgPyB7IC4uLm9yZGVyLCAuLi51cGRhdGVzIH0gOiBvcmRlcixcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZEpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlclN0YXRlOiBPbWl0PEpsY3BjYk9yZGVyU3RhdGUsIFwiamxjcGNiX29yZGVyX3N0YXRlX2lkXCI+LFxuICApOiBKbGNwY2JPcmRlclN0YXRlID0+IHtcbiAgICBjb25zdCBuZXdPcmRlclN0YXRlID0ge1xuICAgICAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiBgb3JkZXJfc3RhdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlclN0YXRlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBqbGNwY2JPcmRlclN0YXRlOiBbLi4uc3RhdGUuamxjcGNiT3JkZXJTdGF0ZSwgbmV3T3JkZXJTdGF0ZV0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdPcmRlclN0YXRlXG4gIH0sXG4gIHVwZGF0ZUpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxKbGNwY2JPcmRlclN0YXRlPixcbiAgKSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGpsY3BjYk9yZGVyU3RhdGU6IHN0YXRlLmpsY3BjYk9yZGVyU3RhdGUubWFwKChvcmRlclN0YXRlKSA9PlxuICAgICAgICBvcmRlclN0YXRlLm9yZGVyX2lkID09PSBvcmRlcklkXG4gICAgICAgICAgPyB7IC4uLm9yZGVyU3RhdGUsIC4uLnVwZGF0ZXMgfVxuICAgICAgICAgIDogb3JkZXJTdGF0ZSxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZE9yZGVyRmlsZTogKG9yZGVyRmlsZTogT21pdDxPcmRlckZpbGUsIFwib3JkZXJfZmlsZV9pZFwiPik6IE9yZGVyRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3T3JkZXJGaWxlID0ge1xuICAgICAgb3JkZXJfZmlsZV9pZDogYG9yZGVyX2ZpbGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlckZpbGUsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyRmlsZXM6IFsuLi5zdGF0ZS5vcmRlckZpbGVzLCBuZXdPcmRlckZpbGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJGaWxlXG4gIH0sXG4gIGdldE9yZGVyRmlsZUJ5SWQ6IChvcmRlckZpbGVJZDogc3RyaW5nKTogT3JkZXJGaWxlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLm9yZGVyRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5vcmRlcl9maWxlX2lkID09PSBvcmRlckZpbGVJZClcbiAgfSxcbiAgYWRkQnVnUmVwb3J0OiAoe1xuICAgIHJlcG9ydGVyX2FjY291bnRfaWQsXG4gICAgdGV4dCxcbiAgICBpc19hdXRvX2RlbGV0ZWQsXG4gICAgZGVsZXRlX2F0LFxuICB9OiB7XG4gICAgcmVwb3J0ZXJfYWNjb3VudF9pZDogc3RyaW5nXG4gICAgdGV4dD86IHN0cmluZyB8IG51bGxcbiAgICBpc19hdXRvX2RlbGV0ZWQ/OiBib29sZWFuXG4gICAgZGVsZXRlX2F0Pzogc3RyaW5nIHwgbnVsbFxuICB9KTogQnVnUmVwb3J0ID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkSXNBdXRvRGVsZXRlZCA9IEJvb2xlYW4oaXNfYXV0b19kZWxldGVkKVxuICAgIGlmIChub3JtYWxpemVkSXNBdXRvRGVsZXRlZCAmJiAhZGVsZXRlX2F0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkZWxldGVfYXQgaXMgcmVxdWlyZWQgd2hlbiBpc19hdXRvX2RlbGV0ZWQgaXMgdHJ1ZVwiKVxuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVkRGVsZXRlQXQgPSBub3JtYWxpemVkSXNBdXRvRGVsZXRlZFxuICAgICAgPyAoZGVsZXRlX2F0ID8/IG51bGwpXG4gICAgICA6IG51bGxcblxuICAgIGNvbnN0IGJ1Z1JlcG9ydCA9IGJ1Z1JlcG9ydFNjaGVtYS5wYXJzZSh7XG4gICAgICBidWdfcmVwb3J0X2lkOiByYW5kb21VVUlEKCksXG4gICAgICByZXBvcnRlcl9hY2NvdW50X2lkLFxuICAgICAgdGV4dDogdGV4dCA/PyBudWxsLFxuICAgICAgaXNfYXV0b19kZWxldGVkOiBub3JtYWxpemVkSXNBdXRvRGVsZXRlZCxcbiAgICAgIGRlbGV0ZV9hdDogbm9ybWFsaXplZERlbGV0ZUF0LFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgZmlsZV9jb3VudDogMCxcbiAgICB9KVxuXG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGJ1Z1JlcG9ydHM6IFsuLi5zdGF0ZS5idWdSZXBvcnRzLCBidWdSZXBvcnRdLFxuICAgIH0pKVxuXG4gICAgcmV0dXJuIGJ1Z1JlcG9ydFxuICB9LFxuICBnZXRCdWdSZXBvcnRCeUlkOiAoYnVnUmVwb3J0SWQ6IHN0cmluZyk6IEJ1Z1JlcG9ydCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5idWdSZXBvcnRzLmZpbmQoXG4gICAgICAoYnVnUmVwb3J0KSA9PiBidWdSZXBvcnQuYnVnX3JlcG9ydF9pZCA9PT0gYnVnUmVwb3J0SWQsXG4gICAgKVxuICB9LFxuICBhZGRCdWdSZXBvcnRGaWxlOiAoe1xuICAgIGJ1Z19yZXBvcnRfaWQsXG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfbWltZXR5cGUsXG4gICAgaXNfdGV4dCxcbiAgICBjb250ZW50X3RleHQsXG4gICAgY29udGVudF9ieXRlcyxcbiAgfToge1xuICAgIGJ1Z19yZXBvcnRfaWQ6IHN0cmluZ1xuICAgIGZpbGVfcGF0aDogc3RyaW5nXG4gICAgY29udGVudF9taW1ldHlwZTogc3RyaW5nXG4gICAgaXNfdGV4dDogYm9vbGVhblxuICAgIGNvbnRlbnRfdGV4dDogc3RyaW5nIHwgbnVsbFxuICAgIGNvbnRlbnRfYnl0ZXM6IFVpbnQ4QXJyYXkgfCBudWxsXG4gIH0pOiBCdWdSZXBvcnRGaWxlID0+IHtcbiAgICBjb25zdCBidWdSZXBvcnRGaWxlID0gYnVnUmVwb3J0RmlsZVNjaGVtYS5wYXJzZSh7XG4gICAgICBidWdfcmVwb3J0X2ZpbGVfaWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgIGJ1Z19yZXBvcnRfaWQsXG4gICAgICBmaWxlX3BhdGgsXG4gICAgICBjb250ZW50X21pbWV0eXBlLFxuICAgICAgaXNfdGV4dCxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGNvbnRlbnRfdGV4dCxcbiAgICAgIGNvbnRlbnRfYnl0ZXMsXG4gICAgfSlcblxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBidWdSZXBvcnRGaWxlczogWy4uLnN0YXRlLmJ1Z1JlcG9ydEZpbGVzLCBidWdSZXBvcnRGaWxlXSxcbiAgICAgIGJ1Z1JlcG9ydHM6IHN0YXRlLmJ1Z1JlcG9ydHMubWFwKChidWdSZXBvcnQpID0+XG4gICAgICAgIGJ1Z1JlcG9ydC5idWdfcmVwb3J0X2lkID09PSBidWdfcmVwb3J0X2lkXG4gICAgICAgICAgPyB7IC4uLmJ1Z1JlcG9ydCwgZmlsZV9jb3VudDogYnVnUmVwb3J0LmZpbGVfY291bnQgKyAxIH1cbiAgICAgICAgICA6IGJ1Z1JlcG9ydCxcbiAgICAgICksXG4gICAgfSkpXG5cbiAgICByZXR1cm4gYnVnUmVwb3J0RmlsZVxuICB9LFxuICBnZXRCdWdSZXBvcnRGaWxlc0J5QnVnUmVwb3J0SWQ6IChidWdSZXBvcnRJZDogc3RyaW5nKTogQnVnUmVwb3J0RmlsZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmJ1Z1JlcG9ydEZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PiBmaWxlLmJ1Z19yZXBvcnRfaWQgPT09IGJ1Z1JlcG9ydElkLFxuICAgIClcbiAgfSxcbiAgYWRkQWNjb3VudDogKFxuICAgIGFjY291bnQ6IE9taXQ8XG4gICAgICBBY2NvdW50LFxuICAgICAgXCJhY2NvdW50X2lkXCIgfCBcImlzX3RzY2lyY3VpdF9zdGFmZlwiIHwgXCJjcmVhdGVkX2F0XCIgfCBcInBlcnNvbmFsX29yZ19pZFwiXG4gICAgPiAmXG4gICAgICBQYXJ0aWFsPFxuICAgICAgICBQaWNrPEFjY291bnQsIFwiYWNjb3VudF9pZFwiIHwgXCJpc190c2NpcmN1aXRfc3RhZmZcIiB8IFwicGVyc29uYWxfb3JnX2lkXCI+XG4gICAgICA+LFxuICApID0+IHtcbiAgICBjb25zdCBuZXdBY2NvdW50ID0ge1xuICAgICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkIHx8IGBhY2NvdW50XyR7Z2V0KCkuaWRDb3VudGVyICsgMX1gLFxuICAgICAgLi4uYWNjb3VudCxcbiAgICAgIGlzX3RzY2lyY3VpdF9zdGFmZjogQm9vbGVhbihhY2NvdW50LmlzX3RzY2lyY3VpdF9zdGFmZiksXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLFxuICAgICAgcGVyc29uYWxfb3JnX2lkOiBhY2NvdW50LnBlcnNvbmFsX29yZ19pZCB8fCBgcG9yZ18ke2dldCgpLmlkQ291bnRlciArIDF9YCxcbiAgICB9XG5cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50czogWy4uLnN0YXRlLmFjY291bnRzLCBuZXdBY2NvdW50XSxcbiAgICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gbmV3QWNjb3VudFxuICB9LFxuICBhZGRBY2NvdW50UGFja2FnZTogKFxuICAgIGFjY291bnRQYWNrYWdlOiBPbWl0PEFjY291bnRQYWNrYWdlLCBcImFjY291bnRfcGFja2FnZV9pZFwiPixcbiAgKTogQWNjb3VudFBhY2thZ2UgPT4ge1xuICAgIGNvbnN0IG5ld0FjY291bnRQYWNrYWdlID0ge1xuICAgICAgYWNjb3VudF9wYWNrYWdlX2lkOiBgYXBfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5hY2NvdW50UGFja2FnZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjb3VudFBhY2thZ2VzOiBbLi4uc3RhdGUuYWNjb3VudFBhY2thZ2VzLCBuZXdBY2NvdW50UGFja2FnZV0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdBY2NvdW50UGFja2FnZVxuICB9LFxuICBnZXRBY2NvdW50UGFja2FnZUJ5SWQ6IChcbiAgICBhY2NvdW50UGFja2FnZUlkOiBzdHJpbmcsXG4gICk6IEFjY291bnRQYWNrYWdlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgICAgKGFwKSA9PiBhcC5hY2NvdW50X3BhY2thZ2VfaWQgPT09IGFjY291bnRQYWNrYWdlSWQsXG4gICAgKVxuICB9LFxuICB1cGRhdGVBY2NvdW50UGFja2FnZTogKFxuICAgIGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPEFjY291bnRQYWNrYWdlPixcbiAgKTogdm9pZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGFjY291bnRQYWNrYWdlczogc3RhdGUuYWNjb3VudFBhY2thZ2VzLm1hcCgoYXApID0+XG4gICAgICAgIGFwLmFjY291bnRfcGFja2FnZV9pZCA9PT0gYWNjb3VudFBhY2thZ2VJZCA/IHsgLi4uYXAsIC4uLnVwZGF0ZXMgfSA6IGFwLFxuICAgICAgKSxcbiAgICB9KSlcbiAgfSxcbiAgZGVsZXRlQWNjb3VudFBhY2thZ2U6IChhY2NvdW50UGFja2FnZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAoYXApID0+IGFwLmFjY291bnRfcGFja2FnZV9pZCA9PT0gYWNjb3VudFBhY2thZ2VJZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc3RhdGUuYWNjb3VudFBhY2thZ2VzLnNwbGljZShpbmRleCwgMSlcbiAgICAgICAgZGVsZXRlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdGF0ZVxuICAgIH0pXG4gICAgcmV0dXJuIGRlbGV0ZWRcbiAgfSxcbiAgYWRkU25pcHBldDogKFxuICAgIHNuaXBwZXQ6IE9taXQ8XG4gICAgICB6LmlucHV0PHR5cGVvZiBzbmlwcGV0U2NoZW1hPixcbiAgICAgIFwic25pcHBldF9pZFwiIHwgXCJwYWNrYWdlX3JlbGVhc2VfaWRcIlxuICAgID4gJiB7XG4gICAgICBjcmVhdG9yX2FjY291bnRfaWQ/OiBzdHJpbmdcbiAgICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZT86IHN0cmluZ1xuICAgICAgYnJhbmNoX25hbWU/OiBzdHJpbmdcbiAgICAgIGNvbW1pdF9tZXNzYWdlPzogc3RyaW5nXG4gICAgICBjb21taXRfYXV0aG9yPzogc3RyaW5nXG4gICAgfSxcbiAgKTogU25pcHBldCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKVxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgICBjb25zdCBuZXdTdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgbmV4dElkID0gbmV3U3RhdGUuaWRDb3VudGVyICsgMVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIHRoYXQgd2lsbCBzZXJ2ZSBhcyBvdXIgc25pcHBldFxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSB7XG4gICAgICBwYWNrYWdlX2lkOiBgcGtnXyR7bmV4dElkfWAsXG4gICAgICBjcmVhdG9yX2FjY291bnRfaWQ6IHNuaXBwZXQuY3JlYXRvcl9hY2NvdW50X2lkID8/IHNuaXBwZXQub3duZXJfbmFtZSwgLy8gVXNpbmcgb3duZXJfbmFtZSBhcyBhY2NvdW50X2lkIHNpbmNlIHdlIGRvbid0IGhhdmUgY29udGV4dFxuICAgICAgb3duZXJfb3JnX2lkOiBcIlwiLCAvLyBFbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiBudWxsIHRvIG1hdGNoIHR5cGVcbiAgICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogc25pcHBldC5vd25lcl9uYW1lLFxuICAgICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBzbmlwcGV0LmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBuYW1lOiBgJHtzbmlwcGV0Lm93bmVyX25hbWV9LyR7c25pcHBldC51bnNjb3BlZF9uYW1lfWAsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBzbmlwcGV0LnVuc2NvcGVkX25hbWUsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgbGljZW5zZTogbnVsbCxcbiAgICAgIHdlYnNpdGU6IG51bGwsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogc25pcHBldC5naXRodWJfcmVwb19mdWxsX25hbWUgfHwgbnVsbCxcbiAgICAgIGFpX2Rlc2NyaXB0aW9uOiBcInBsYWNlaG9sZGVyIGFpIGRlc2NyaXB0aW9uXCIsXG4gICAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwicGxhY2Vob2xkZXIgYWkgdXNhZ2UgaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICBpc19zbmlwcGV0OiB0cnVlLFxuICAgICAgaXNfYm9hcmQ6IHNuaXBwZXQuc25pcHBldF90eXBlID09PSBcImJvYXJkXCIsXG4gICAgICBpc19wYWNrYWdlOiBzbmlwcGV0LnNuaXBwZXRfdHlwZSA9PT0gXCJwYWNrYWdlXCIsXG4gICAgICBpc19tb2RlbDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwibW9kZWxcIixcbiAgICAgIGlzX2Zvb3RwcmludDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwiZm9vdHByaW50XCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXQuc25pcHBldF90eXBlLFxuICAgICAgaXNfcHJpdmF0ZTogZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogZmFsc2UsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBgcGFja2FnZV9yZWxlYXNlXyR7bmV4dElkfWAsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2ZzX3NoYTogbnVsbCxcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgcGFja2FnZSByZWxlYXNlXG4gICAgY29uc3QgbmV3UGFja2FnZVJlbGVhc2UgPSBwYWNrYWdlUmVsZWFzZVNjaGVtYS5wYXJzZSh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGBwYWNrYWdlX3JlbGVhc2VfJHtuZXh0SWR9YCxcbiAgICAgIHBhY2thZ2VfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHVwZGF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgYnJhbmNoX25hbWU6IHNuaXBwZXQuYnJhbmNoX25hbWUsXG4gICAgICBjb21taXRfbWVzc2FnZTogc25pcHBldC5jb21taXRfbWVzc2FnZSxcbiAgICAgIGNvbW1pdF9hdXRob3I6IHNuaXBwZXQuY29tbWl0X2F1dGhvcixcbiAgICAgIGhhc190cmFuc3BpbGVkOiB0cnVlLFxuICAgICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogbnVsbCxcbiAgICAgIC4uLihzbmlwcGV0Lm5hbWUgPT0gXCJ0ZXN0dXNlci9teS10ZXN0LWJvYXJkXCJcbiAgICAgICAgPyB7IGlzX3ByX3ByZXZpZXc6IHRydWUsIGdpdGh1Yl9wcl9udW1iZXI6IDY5IH1cbiAgICAgICAgOiB7fSksXG4gICAgfSlcblxuICAgIC8vIEFkZCBhbGwgdGhlIGZpbGVzXG4gICAgY29uc3QgcGFja2FnZUZpbGVzOiBQYWNrYWdlRmlsZVtdID0gW11cbiAgICBsZXQgZmlsZUlkQ291bnRlciA9IG5leHRJZFxuXG4gICAgLy8gQWRkIG1haW4gY29kZSBmaWxlXG4gICAgcGFja2FnZUZpbGVzLnB1c2goe1xuICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7ZmlsZUlkQ291bnRlcisrfWAsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIGZpbGVfcGF0aDogXCJpbmRleC50c3hcIixcbiAgICAgIGNvbnRlbnRfdGV4dDogc25pcHBldC5jb2RlIHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICB9KVxuXG4gICAgLy8gQWRkIERUUyBmaWxlIGlmIHByb3ZpZGVkXG4gICAgaWYgKHNuaXBwZXQuZHRzKSB7XG4gICAgICBwYWNrYWdlRmlsZXMucHVzaCh7XG4gICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke2ZpbGVJZENvdW50ZXIrK31gLFxuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgY29udGVudF90ZXh0OiBzbmlwcGV0LmR0cyxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIEFkZCBjb21waWxlZCBKUyBpZiBwcm92aWRlZFxuICAgIGlmIChzbmlwcGV0LmNvbXBpbGVkX2pzKSB7XG4gICAgICBwYWNrYWdlRmlsZXMucHVzaCh7XG4gICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke2ZpbGVJZENvdW50ZXIrK31gLFxuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogc25pcHBldC5jb21waWxlZF9qcyxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIEFkZCBjaXJjdWl0IEpTT04gaWYgcHJvdmlkZWRcbiAgICBpZiAoc25pcHBldC5jaXJjdWl0X2pzb24gJiYgc25pcHBldC5jaXJjdWl0X2pzb24ubGVuZ3RoID4gMCkge1xuICAgICAgcGFja2FnZUZpbGVzLnB1c2goe1xuICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtmaWxlSWRDb3VudGVyKyt9YCxcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICAgY29udGVudF90ZXh0OiBKU09OLnN0cmluZ2lmeShzbmlwcGV0LmNpcmN1aXRfanNvbiksXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIGRhdGFiYXNlIHN0YXRlIGF0b21pY2FsbHlcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBwYWNrYWdlczogWy4uLnN0YXRlLnBhY2thZ2VzLCBuZXdQYWNrYWdlXSxcbiAgICAgIHBhY2thZ2VSZWxlYXNlczogWy4uLnN0YXRlLnBhY2thZ2VSZWxlYXNlcywgbmV3UGFja2FnZVJlbGVhc2VdLFxuICAgICAgcGFja2FnZUZpbGVzOiBbLi4uc3RhdGUucGFja2FnZUZpbGVzLCAuLi5wYWNrYWdlRmlsZXNdLFxuICAgICAgaWRDb3VudGVyOiBmaWxlSWRDb3VudGVyLFxuICAgIH0pKVxuXG4gICAgLy8gVXBkYXRlIGZzX3NoYSBmb3IgdGhlIG5ldyBwYWNrYWdlIHJlbGVhc2VcbiAgICBjb25zdCBkYlN0YXRlID0gZ2V0KClcbiAgICBjb25zdCByZWxlYXNlRmlsZXMgPSBkYlN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAocGYpID0+IHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcbiAgICBjb25zdCBmc1NoYSA9IGdlbmVyYXRlRnNTaGEocmVsZWFzZUZpbGVzKVxuXG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgcGFja2FnZVJlbGVhc2VzOiBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMubWFwKChwcikgPT5cbiAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgICAgICAgICA/IHsgLi4ucHIsIGZzX3NoYTogZnNTaGEgfVxuICAgICAgICAgIDogcHIsXG4gICAgICApLFxuICAgICAgcGFja2FnZXM6IHN0YXRlLnBhY2thZ2VzLm1hcCgocGtnKSA9PlxuICAgICAgICBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9PT0gbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gICAgICAgICAgPyB7IC4uLnBrZywgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9mc19zaGE6IGZzU2hhIH1cbiAgICAgICAgICA6IHBrZyxcbiAgICAgICksXG4gICAgfSkpXG5cbiAgICAvLyBSZXR1cm4gaW4gdGhlIHNhbWUgZm9ybWF0IGFzIGNyZWF0ZSBlbmRwb2ludFxuICAgIHJldHVybiB7XG4gICAgICBzbmlwcGV0X2lkOiBuZXdQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIG5hbWU6IG5ld1BhY2thZ2UubmFtZSxcbiAgICAgIHVuc2NvcGVkX25hbWU6IG5ld1BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG93bmVyX25hbWU6IHNuaXBwZXQub3duZXJfbmFtZSxcbiAgICAgIGNvZGU6IHNuaXBwZXQuY29kZSB8fCBcIlwiLFxuICAgICAgZHRzOiBzbmlwcGV0LmR0cyxcbiAgICAgIGNvbXBpbGVkX2pzOiBzbmlwcGV0LmNvbXBpbGVkX2pzLFxuICAgICAgc3Rhcl9jb3VudDogMCxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXQuc25pcHBldF90eXBlLFxuICAgICAgY2lyY3VpdF9qc29uOiBzbmlwcGV0LmNpcmN1aXRfanNvbiB8fCBbXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBzbmlwcGV0LmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGlzX3ByaXZhdGU6IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiB0cnVlLFxuICAgICAgaXNfdW5saXN0ZWQ6IGZhbHNlLFxuICAgIH1cbiAgfSxcbiAgZ2V0TGF0ZXN0U25pcHBldHM6IChsaW1pdDogbnVtYmVyKTogU25pcHBldFtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG5cbiAgICAvLyBHZXQgYWxsIHBhY2thZ2VzIHRoYXQgYXJlIHNuaXBwZXRzXG4gICAgY29uc3Qgc25pcHBldFBhY2thZ2VzID0gc3RhdGUucGFja2FnZXNcbiAgICAgIC5maWx0ZXIoKHBrZykgPT4gcGtnLmlzX3NuaXBwZXQgPT09IHRydWUpXG4gICAgICAubWFwKChwa2cpID0+IHtcbiAgICAgICAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICAgICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgICAocHIpID0+XG4gICAgICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgICAgICBwci5pc19sYXRlc3QgPT09IHRydWUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkgcmV0dXJuIG51bGxcblxuICAgICAgICAvLyBHZXQgdGhlIHBhY2thZ2UgZmlsZXNcbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICAvLyBHZXQgdGhlIGNvZGUgZmlsZVxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHN0YXJyZWRcbiAgICAgICAgY29uc3QgaXNTdGFycmVkID0gc3RhdGUuYWNjb3VudFBhY2thZ2VzLnNvbWUoXG4gICAgICAgICAgKGFwKSA9PiBhcC5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBhcC5pc19zdGFycmVkLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gQ29udmVydCB0byBzbmlwcGV0IGZvcm1hdFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHBrZy5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgICAgIHNuaXBwZXRfdHlwZTogcGtnLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGR0czpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gICAgICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgICBzdGFyX2NvdW50OiBwa2cuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgICAgIGlzX3N0YXJyZWQ6IGlzU3RhcnJlZCxcbiAgICAgICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICAgIGNpcmN1aXRfanNvbjpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlc1xuICAgICAgICAgICAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIilcbiAgICAgICAgICAgICAgLmZsYXRNYXAoKGZpbGUpID0+IEpTT04ucGFyc2UoZmlsZS5jb250ZW50X3RleHQgfHwgXCJbXVwiKSkgfHwgW10sXG4gICAgICAgICAgaXNfcHJpdmF0ZTogcGtnLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICAgICAgaXNfcHVibGljOiBwa2cuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICAgICAgaXNfdW5saXN0ZWQ6IHBrZy5pc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChzbmlwcGV0KTogc25pcHBldCBpcyBOb25OdWxsYWJsZTx0eXBlb2Ygc25pcHBldD4gPT4gc25pcHBldCAhPT0gbnVsbCxcbiAgICAgIClcbiAgICAgIC5tYXAoKHNuaXBwZXQpID0+ICh7XG4gICAgICAgIC4uLnNuaXBwZXQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBzbmlwcGV0LmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICB9KSlcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgICAgKVxuICAgICAgLnNsaWNlKDAsIGxpbWl0KVxuXG4gICAgcmV0dXJuIHNuaXBwZXRQYWNrYWdlc1xuICB9LFxuICBnZXRUcmVuZGluZ1NuaXBwZXRzOiAobGltaXQ6IG51bWJlciwgc2luY2U6IHN0cmluZyk6IFNuaXBwZXRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHNpbmNlRGF0ZSA9IG5ldyBEYXRlKHNpbmNlKS5nZXRUaW1lKClcblxuICAgIC8vIEdldCBzdGFyIGNvdW50cyB3aXRoaW4gdGltZSBwZXJpb2RcbiAgICBjb25zdCByZWNlbnRTdGFycyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KClcbiAgICBzdGF0ZS5hY2NvdW50UGFja2FnZXMuZm9yRWFjaCgoYXApID0+IHtcbiAgICAgIGlmIChhcC5pc19zdGFycmVkICYmIG5ldyBEYXRlKGFwLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSA+PSBzaW5jZURhdGUpIHtcbiAgICAgICAgcmVjZW50U3RhcnMuc2V0KFxuICAgICAgICAgIGFwLnBhY2thZ2VfaWQsXG4gICAgICAgICAgKHJlY2VudFN0YXJzLmdldChhcC5wYWNrYWdlX2lkKSB8fCAwKSArIDEsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgY29uc3QgcGFja2FnZXNXaXRoU3RhckNvdW50ID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgLm1hcCgocGtnKSA9PiAoe1xuICAgICAgICAuLi5wa2csXG4gICAgICAgIHN0YXJfY291bnQ6IHJlY2VudFN0YXJzLmdldChwa2cucGFja2FnZV9pZCkgfHwgMCxcbiAgICAgIH0pKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIuc3Rhcl9jb3VudCAtIGEuc3Rhcl9jb3VudClcbiAgICAgIC5zbGljZSgwLCBsaW1pdClcblxuICAgIGNvbnN0IHRyZW5kaW5nU25pcHBldHMgPSBwYWNrYWdlc1dpdGhTdGFyQ291bnRcbiAgICAgIC5tYXAoKHBrZykgPT4ge1xuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT5cbiAgICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG5cbiAgICAgICAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgICAgY29kZTogY29kZUZpbGUgPyBjb2RlRmlsZS5jb250ZW50X3RleHQgfHwgXCJcIiA6IFwiXCIsXG4gICAgICAgICAgY3JlYXRlZF9hdDogcGtnLmNyZWF0ZWRfYXQsXG4gICAgICAgICAgdXBkYXRlZF9hdDogcGtnLnVwZGF0ZWRfYXQsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuaXNfc25pcHBldCA/IFwiYm9hcmRcIiA6IFwicGFja2FnZVwiLFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50LFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoc25pcHBldCkgPT4gc25pcHBldCAhPT0gbnVsbClcblxuICAgIHJldHVybiB0cmVuZGluZ1NuaXBwZXRzIGFzIFNuaXBwZXRbXVxuICB9LFxuICBnZXRQYWNrYWdlc0J5QXV0aG9yOiAoYXV0aG9yTmFtZT86IHN0cmluZyk6IFBhY2thZ2VbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHBhY2thZ2VzID0gYXV0aG9yTmFtZVxuICAgICAgPyBzdGF0ZS5wYWNrYWdlcy5maWx0ZXIoKHBrZykgPT4gcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gYXV0aG9yTmFtZSlcbiAgICAgIDogc3RhdGUucGFja2FnZXNcbiAgICByZXR1cm4gcGFja2FnZXMubWFwKChwa2cpID0+ICh7XG4gICAgICAuLi5wa2csXG4gICAgICBzdGFyX2NvdW50OiBzdGF0ZS5hY2NvdW50UGFja2FnZXMuZmlsdGVyKFxuICAgICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICApLmxlbmd0aCxcbiAgICB9KSlcbiAgfSxcbiAgZ2V0U25pcHBldEJ5QXV0aG9yQW5kTmFtZTogKFxuICAgIGF1dGhvck5hbWU6IHN0cmluZyxcbiAgICBzbmlwcGV0TmFtZTogc3RyaW5nLFxuICApOiBTbmlwcGV0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgLy8gTG9vayBmb3IgdGhlIHBhY2thZ2UgdGhhdCByZXByZXNlbnRzIHRoaXMgc25pcHBldCB3aXRoIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmdcbiAgICBjb25zdCBfcGFja2FnZSA9IHN0YXRlLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lPy50b0xvd2VyQ2FzZSgpID09PSBhdXRob3JOYW1lLnRvTG93ZXJDYXNlKCkgJiZcbiAgICAgICAgcGtnLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gc25pcHBldE5hbWUudG9Mb3dlckNhc2UoKSAmJlxuICAgICAgICBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSxcbiAgICApXG4gICAgaWYgKCFfcGFja2FnZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgZmlsZXNcbiAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBjb2RlIGZpbGUgKGluZGV4LnRzIG9yIGluZGV4LnRzeClcbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuXG4gICAgLy8gTWFwIHRoZSBwYWNrYWdlIGRhdGEgdG8gbWF0Y2ggdGhlIFNuaXBwZXQgc3RydWN0dXJlXG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IF9wYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IF9wYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiBfcGFja2FnZS5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogX3BhY2thZ2UuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogX3BhY2thZ2Uuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBfcGFja2FnZS5jcmVhdGVkX2F0LFxuICAgICAgdXBkYXRlZF9hdDogX3BhY2thZ2UudXBkYXRlZF9hdCxcbiAgICAgIHN0YXJfY291bnQ6IF9wYWNrYWdlLnN0YXJfY291bnQgfHwgMCxcbiAgICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogX3BhY2thZ2UubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgY2lyY3VpdF9qc29uOiBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICAgICAgKT8uY29udGVudF90ZXh0XG4gICAgICAgID8gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJbXVwiLFxuICAgICAgICAgIClcbiAgICAgICAgOiBbXSxcbiAgICAgIGlzX3ByaXZhdGU6IF9wYWNrYWdlLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IF9wYWNrYWdlLmlzX3B1YmxpYyB8fCB0cnVlLFxuICAgICAgaXNfdW5saXN0ZWQ6IF9wYWNrYWdlLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgIH1cbiAgfSxcbiAgdXBkYXRlU25pcHBldDogKFxuICAgIHNuaXBwZXRJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8U25pcHBldD4sXG4gICk6IFNuaXBwZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VJbmRleCA9IHN0YXRlLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAgICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRJZCAmJiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSxcbiAgICAgIClcbiAgICAgIGlmIChwYWNrYWdlSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpXG4gICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCkudG9JU09TdHJpbmcoKVxuXG4gICAgICAvLyBVcGRhdGUgdGhlIHBhY2thZ2VcbiAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgIGNvbnN0IGN1cnJlbnRQYWNrYWdlID0gdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF1cbiAgICAgIHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdID0ge1xuICAgICAgICAuLi5jdXJyZW50UGFja2FnZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHVwZGF0ZXMuZGVzY3JpcHRpb24gPz8gY3VycmVudFBhY2thZ2UuZGVzY3JpcHRpb24sXG4gICAgICAgIGlzX3ByaXZhdGU6IHVwZGF0ZXMuaXNfcHJpdmF0ZSA/PyBjdXJyZW50UGFja2FnZS5pc19wcml2YXRlLFxuICAgICAgICBpc19wdWJsaWM6XG4gICAgICAgICAgdXBkYXRlcy5pc19wcml2YXRlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gIXVwZGF0ZXMuaXNfcHJpdmF0ZVxuICAgICAgICAgICAgOiBjdXJyZW50UGFja2FnZS5pc19wdWJsaWMsXG4gICAgICAgIGlzX3VubGlzdGVkOiB1cGRhdGVzLmlzX3ByaXZhdGVcbiAgICAgICAgICA/IHRydWVcbiAgICAgICAgICA6ICh1cGRhdGVzLmlzX3VubGlzdGVkID8/IGN1cnJlbnRQYWNrYWdlLmlzX3VubGlzdGVkKSxcbiAgICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9XG5cbiAgICAgIC8vIEdldCB0aGUgY3VycmVudCBwYWNrYWdlIHJlbGVhc2VcbiAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcikgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IGN1cnJlbnRQYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICApXG4gICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gc3RhdGVcblxuICAgICAgLy8gVXBkYXRlIHBhY2thZ2UgZmlsZXMgaWYgY29kZS9kdHMvanMgY2hhbmdlZFxuICAgICAgY29uc3QgdXBkYXRlZEZpbGVzID0gWy4uLnN0YXRlLnBhY2thZ2VGaWxlc11cbiAgICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHVwZGF0ZWRGaWxlcy5maWx0ZXIoXG4gICAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgKVxuXG4gICAgICBpZiAodXBkYXRlcy5jb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgY29kZUZpbGVJbmRleCA9IHBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiLFxuICAgICAgICApXG4gICAgICAgIGlmIChjb2RlRmlsZUluZGV4ID49IDApIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXNbY29kZUZpbGVJbmRleF0gPSB7XG4gICAgICAgICAgICAuLi5wYWNrYWdlRmlsZXNbY29kZUZpbGVJbmRleF0sXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29kZSxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXMucHVzaCh7XG4gICAgICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHt0aW1lc3RhbXB9YCxcbiAgICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICAgICAgZmlsZV9wYXRoOiBcImluZGV4LnRzeFwiLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmNvZGUsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh1cGRhdGVzLmR0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGR0c0ZpbGVJbmRleCA9IHBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgKVxuICAgICAgICBpZiAoZHRzRmlsZUluZGV4ID49IDApIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXNbZHRzRmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tkdHNGaWxlSW5kZXhdLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmR0cyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXMucHVzaCh7XG4gICAgICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHt0aW1lc3RhbXB9YCxcbiAgICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5kdHMsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh1cGRhdGVzLmNvbXBpbGVkX2pzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QganNGaWxlSW5kZXggPSBwYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICApXG4gICAgICAgIGlmIChqc0ZpbGVJbmRleCA+PSAwKSB7XG4gICAgICAgICAgdXBkYXRlZEZpbGVzW2pzRmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tqc0ZpbGVJbmRleF0sXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29tcGlsZWRfanMsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBkYXRlZEZpbGVzLnB1c2goe1xuICAgICAgICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7dGltZXN0YW1wfWAsXG4gICAgICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmNvbXBpbGVkX2pzLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgY2lyY3VpdCBKU09OIGlmIHByb3ZpZGVkXG4gICAgICBpZiAodXBkYXRlcy5jaXJjdWl0X2pzb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBjaXJjdWl0RmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGNpcmN1aXRGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tjaXJjdWl0RmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tjaXJjdWl0RmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogSlNPTi5zdHJpbmdpZnkodXBkYXRlcy5jaXJjdWl0X2pzb24pLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZXR1cm4gdXBkYXRlZCBzdGF0ZVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBhY2thZ2VzOiB1cGRhdGVkUGFja2FnZXMsXG4gICAgICAgIHBhY2thZ2VGaWxlczogdXBkYXRlZEZpbGVzLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBHZXQgdGhlIHVwZGF0ZWQgc25pcHBldCB0byByZXR1cm5cbiAgICBjb25zdCB1cGRhdGVkUGFja2FnZSA9IGdldCgpLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkLFxuICAgIClcbiAgICBpZiAoIXVwZGF0ZWRQYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGdldCgpLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHVwZGF0ZWRQYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGdldCgpLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG5cbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuICAgIGNvbnN0IGR0c0ZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgKVxuICAgIGNvbnN0IGpzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgKVxuICAgIGNvbnN0IGNpcmN1aXRGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgKVxuXG4gICAgLy8gUmV0dXJuIGluIHNuaXBwZXQgZm9ybWF0XG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IHVwZGF0ZWRQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHVwZGF0ZWRQYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IHVwZGF0ZWRQYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiB1cGRhdGVkUGFja2FnZS5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogdXBkYXRlZFBhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogdXBkYXRlZFBhY2thZ2UuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogdXBkYXRlZFBhY2thZ2Uuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czogZHRzRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjb21waWxlZF9qczoganNGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IHVwZGF0ZWRQYWNrYWdlLmNyZWF0ZWRfYXQsXG4gICAgICB1cGRhdGVkX2F0OiB1cGRhdGVkUGFja2FnZS51cGRhdGVkX2F0LFxuICAgICAgc3Rhcl9jb3VudDogdXBkYXRlZFBhY2thZ2Uuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiB1cGRhdGVkUGFja2FnZS5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICBjaXJjdWl0X2pzb246IGNpcmN1aXRGaWxlXG4gICAgICAgID8gSlNPTi5wYXJzZShjaXJjdWl0RmlsZS5jb250ZW50X3RleHQgfHwgXCJbXVwiKVxuICAgICAgICA6IFtdLFxuICAgICAgaXNfcHJpdmF0ZTogdXBkYXRlZFBhY2thZ2UuaXNfcHJpdmF0ZSA/PyBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogdXBkYXRlZFBhY2thZ2UuaXNfcHVibGljID8/IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogdXBkYXRlZFBhY2thZ2UuaXNfdW5saXN0ZWQgPz8gZmFsc2UsXG4gICAgfVxuICB9LFxuICBnZXRTbmlwcGV0QnlJZDogKFxuICAgIHNuaXBwZXRJZDogc3RyaW5nLFxuICAgIGF1dGg/OiB7IGdpdGh1Yl91c2VybmFtZTogc3RyaW5nIH0sXG4gICk6IFNuaXBwZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICAvLyBMb29rIGZvciB0aGUgcGFja2FnZSB0aGF0IHJlcHJlc2VudHMgdGhpcyBzbmlwcGV0XG4gICAgY29uc3QgX3BhY2thZ2UgPSBzdGF0ZS5wYWNrYWdlcy5maW5kKFxuICAgICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRJZCAmJiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSxcbiAgICApXG4gICAgaWYgKCFfcGFja2FnZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgLy8gSGFuZGxlIHZpc2liaWxpdHkgYmFzZWQgb24gYXV0aGVudGljYXRpb25cbiAgICBpZiAoIWF1dGgpIHtcbiAgICAgIC8vIFVuYXV0aGVudGljYXRlZCB1c2VycyBjYW4gb25seSBzZWUgcHVibGljIGFuZCBub24tdW5saXN0ZWQgcGFja2FnZXNcbiAgICAgIGlmICghX3BhY2thZ2UuaXNfcHVibGljIHx8IF9wYWNrYWdlLmlzX3VubGlzdGVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXV0aGVudGljYXRlZCB1c2VycyBjYW4gc2VlOlxuICAgICAgLy8gMS4gUHVibGljIGFuZCBub24tdW5saXN0ZWQgcGFja2FnZXNcbiAgICAgIC8vIDIuIFRoZWlyIG93biB1bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgLy8gMy4gVGhlaXIgb3duIHByaXZhdGUgcGFja2FnZXNcbiAgICAgIGNvbnN0IGlzT3duUGFja2FnZSA9XG4gICAgICAgIF9wYWNrYWdlLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gYXV0aD8uZ2l0aHViX3VzZXJuYW1lXG4gICAgICBjb25zdCBpc1B1YmxpY0FuZE5vdFVubGlzdGVkID0gX3BhY2thZ2UuaXNfcHVibGljICYmICFfcGFja2FnZS5pc191bmxpc3RlZFxuICAgICAgY29uc3QgaXNPd25Vbmxpc3RlZCA9IF9wYWNrYWdlLmlzX3VubGlzdGVkICYmIGlzT3duUGFja2FnZVxuICAgICAgY29uc3QgaXNPd25Qcml2YXRlID0gX3BhY2thZ2UuaXNfcHJpdmF0ZSAmJiBpc093blBhY2thZ2VcblxuICAgICAgaWYgKCFpc1B1YmxpY0FuZE5vdFVubGlzdGVkICYmICFpc093blVubGlzdGVkICYmICFpc093blByaXZhdGUpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdldCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcikgPT5cbiAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBfcGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlIGZpbGVzXG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcblxuICAgIC8vIEdldCB0aGUgY29kZSBmaWxlIChpbmRleC50cyBvciBpbmRleC50c3gpXG4gICAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiLFxuICAgIClcblxuICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHN0YXJyZWQgdGhpcyBzbmlwcGV0XG4gICAgY29uc3QgaXNTdGFycmVkID0gc3RhdGUuYWNjb3VudFBhY2thZ2VzLnNvbWUoXG4gICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRJZCAmJiBhcC5pc19zdGFycmVkLFxuICAgIClcblxuICAgIC8vIE1hcCB0aGUgcGFja2FnZSBkYXRhIHRvIG1hdGNoIHRoZSBTbmlwcGV0IHN0cnVjdHVyZVxuICAgIHJldHVybiB7XG4gICAgICBzbmlwcGV0X2lkOiBfcGFja2FnZS5wYWNrYWdlX2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBfcGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IFwiXCIsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBfcGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgICAgbmFtZTogX3BhY2thZ2UubmFtZSxcbiAgICAgIG93bmVyX25hbWU6IF9wYWNrYWdlLm93bmVyX2dpdGh1Yl91c2VybmFtZSB8fCBcIlwiLFxuICAgICAgZGVzY3JpcHRpb246IF9wYWNrYWdlLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IF9wYWNrYWdlLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBkdHM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNvbXBpbGVkX2pzOlxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogX3BhY2thZ2UuY3JlYXRlZF9hdCxcbiAgICAgIHVwZGF0ZWRfYXQ6IF9wYWNrYWdlLnVwZGF0ZWRfYXQsXG4gICAgICBzdGFyX2NvdW50OiBfcGFja2FnZS5zdGFyX2NvdW50IHx8IDAsXG4gICAgICBpc19zdGFycmVkOiBpc1N0YXJyZWQsXG4gICAgICB2ZXJzaW9uOiBfcGFja2FnZS5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICBjaXJjdWl0X2pzb246IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICApPy5jb250ZW50X3RleHRcbiAgICAgICAgPyBKU09OLnBhcnNlKFxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIltdXCIsXG4gICAgICAgICAgKVxuICAgICAgICA6IFtdLFxuICAgICAgaXNfcHJpdmF0ZTogX3BhY2thZ2UuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogX3BhY2thZ2UuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogX3BhY2thZ2UuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuICB9LFxuICBzZWFyY2hTbmlwcGV0czogKHF1ZXJ5OiBzdHJpbmcpOiBTbmlwcGV0W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBjb25zdCBsb3dlcmNhc2VRdWVyeSA9IHF1ZXJ5LnRvTG93ZXJDYXNlKClcblxuICAgIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgc25pcHBldHNcbiAgICBjb25zdCBwYWNrYWdlcyA9IHN0YXRlLnBhY2thZ2VzLmZpbHRlcigocGtnKSA9PiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSlcblxuICAgIC8vIEZpbmQgcGFja2FnZXMgdGhhdCBtYXRjaCBieSBuYW1lIG9yIGRlc2NyaXB0aW9uXG4gICAgY29uc3QgbWF0Y2hpbmdQYWNrYWdlc0J5TWV0YWRhdGEgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSB8fFxuICAgICAgICBwa2cuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlUXVlcnkpLFxuICAgIClcblxuICAgIC8vIEZpbmQgcGFja2FnZXMgdGhhdCBtYXRjaCBieSBjb2RlIGNvbnRlbnQgaW4gYW55IGZpbGVcbiAgICBjb25zdCBtYXRjaGluZ0ZpbGVzQnlDb250ZW50ID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PlxuICAgICAgICBmaWxlLmNvbnRlbnRfdGV4dD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSkgPz8gZmFsc2UsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlcyBmb3IgbWF0Y2hpbmcgZmlsZXNcbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzQnlDb250ZW50ID0gbWF0Y2hpbmdGaWxlc0J5Q29udGVudFxuICAgICAgLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2UgZm9yIHRoaXMgZmlsZVxuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgZm9yIHRoaXMgcmVsZWFzZVxuICAgICAgICByZXR1cm4gcGFja2FnZXMuZmluZChcbiAgICAgICAgICAocGtnKSA9PlxuICAgICAgICAgICAgcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHBrZyk6IHBrZyBpcyBOb25OdWxsYWJsZTx0eXBlb2YgcGtnPiA9PiBwa2cgIT09IG51bGwpXG5cbiAgICAvLyBDb21iaW5lIGJvdGggc2V0cyBvZiBtYXRjaGluZyBwYWNrYWdlcyBhbmQgcmVtb3ZlIGR1cGxpY2F0ZXNcbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzID0gW1xuICAgICAgLi4ubmV3IFNldChbLi4ubWF0Y2hpbmdQYWNrYWdlc0J5TWV0YWRhdGEsIC4uLm1hdGNoaW5nUGFja2FnZXNCeUNvbnRlbnRdKSxcbiAgICBdXG5cbiAgICAvLyBDb252ZXJ0IG1hdGNoaW5nIHBhY2thZ2VzIHRvIHNuaXBwZXQgZm9ybWF0XG4gICAgcmV0dXJuIG1hdGNoaW5nUGFja2FnZXNcbiAgICAgIC5tYXAoKHBrZykgPT4ge1xuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT5cbiAgICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG5cbiAgICAgICAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHBrZy5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgICAgIHNuaXBwZXRfdHlwZTogcGtnLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGR0czpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gICAgICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgICBzdGFyX2NvdW50OiBwa2cuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgICAgIGlzX3N0YXJyZWQ6IGlzU3RhcnJlZCxcbiAgICAgICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICAgIGNpcmN1aXRfanNvbjpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlc1xuICAgICAgICAgICAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIilcbiAgICAgICAgICAgICAgLmZsYXRNYXAoKGZpbGUpID0+IEpTT04ucGFyc2UoZmlsZS5jb250ZW50X3RleHQgfHwgXCJbXVwiKSkgfHwgW10sXG4gICAgICAgIH0gYXMgU25pcHBldFxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHNuaXBwZXQpOiBzbmlwcGV0IGlzIFNuaXBwZXQgPT4gc25pcHBldCAhPT0gbnVsbClcbiAgfSxcbiAgc2VhcmNoUGFja2FnZXM6IChxdWVyeTogc3RyaW5nLCBhY2NvdW50X2lkPzogc3RyaW5nKTogUGFja2FnZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgbG93ZXJjYXNlUXVlcnkgPSBxdWVyeS50b0xvd2VyQ2FzZSgpXG5cbiAgICBjb25zdCB1c2VyT3JnSWRzID0gYWNjb3VudF9pZFxuICAgICAgPyBuZXcgU2V0KFxuICAgICAgICAgIHN0YXRlLm9yZ0FjY291bnRzXG4gICAgICAgICAgICAuZmlsdGVyKChvYSkgPT4gb2EuYWNjb3VudF9pZCA9PT0gYWNjb3VudF9pZClcbiAgICAgICAgICAgIC5tYXAoKG9hKSA9PiBvYS5vcmdfaWQpLFxuICAgICAgICApXG4gICAgICA6IG5ldyBTZXQ8c3RyaW5nPigpXG5cbiAgICBjb25zdCBwYWNrYWdlcyA9IHN0YXRlLnBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5pc19wdWJsaWMgPT09IHRydWUgfHxcbiAgICAgICAgKGFjY291bnRfaWQgJiYgcGtnLm93bmVyX29yZ19pZCAmJiB1c2VyT3JnSWRzLmhhcyhwa2cub3duZXJfb3JnX2lkKSksXG4gICAgKVxuXG4gICAgY29uc3QgbWF0Y2hpbmdQYWNrYWdlc0J5TWV0YWRhdGEgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSB8fFxuICAgICAgICBwa2cuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlUXVlcnkpLFxuICAgIClcblxuICAgIGNvbnN0IG1hdGNoaW5nRmlsZXNCeUNvbnRlbnQgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+XG4gICAgICAgIGZpbGUuY29udGVudF90ZXh0Py50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSA/PyBmYWxzZSxcbiAgICApXG5cbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzQnlDb250ZW50ID0gbWF0Y2hpbmdGaWxlc0J5Q29udGVudFxuICAgICAgLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIHJldHVybiBwYWNrYWdlcy5maW5kKFxuICAgICAgICAgIChwa2cpID0+XG4gICAgICAgICAgICBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG4gICAgICB9KVxuICAgICAgLmZpbHRlcigocGtnKTogcGtnIGlzIE5vbk51bGxhYmxlPHR5cGVvZiBwa2c+ID0+IHBrZyAhPT0gbnVsbClcblxuICAgIGNvbnN0IG1hdGNoaW5nUGFja2FnZXMgPSBbXG4gICAgICAuLi5uZXcgU2V0KFsuLi5tYXRjaGluZ1BhY2thZ2VzQnlNZXRhZGF0YSwgLi4ubWF0Y2hpbmdQYWNrYWdlc0J5Q29udGVudF0pLFxuICAgIF1cblxuICAgIHJldHVybiBtYXRjaGluZ1BhY2thZ2VzXG4gIH0sXG4gIHNlYXJjaEFjY291bnRzOiAocXVlcnk6IHN0cmluZywgbGltaXQ/OiBudW1iZXIpOiBBY2NvdW50W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBjb25zdCBsb3dlcmNhc2VRdWVyeSA9IHF1ZXJ5LnRvTG93ZXJDYXNlKClcblxuICAgIGNvbnN0IGFjY291bnRzV2l0aFB1YmxpY1BhY2thZ2VzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgICBzdGF0ZS5wYWNrYWdlc1xuICAgICAgLmZpbHRlcigocGtnKSA9PiBwa2cuaXNfcHVibGljID09PSB0cnVlKVxuICAgICAgLmZvckVhY2goKHBrZykgPT4ge1xuICAgICAgICBpZiAocGtnLmNyZWF0b3JfYWNjb3VudF9pZCkge1xuICAgICAgICAgIGFjY291bnRzV2l0aFB1YmxpY1BhY2thZ2VzLmFkZChwa2cuY3JlYXRvcl9hY2NvdW50X2lkKVxuICAgICAgICB9XG4gICAgICAgIGlmIChwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgICAgICAgY29uc3QgYWNjb3VudCA9IHN0YXRlLmFjY291bnRzLmZpbmQoXG4gICAgICAgICAgICAoYWNjKSA9PiBhY2MuZ2l0aHViX3VzZXJuYW1lID09PSBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAoYWNjb3VudCkge1xuICAgICAgICAgICAgYWNjb3VudHNXaXRoUHVibGljUGFja2FnZXMuYWRkKGFjY291bnQuYWNjb3VudF9pZClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICBjb25zdCBtYXRjaGluZ0FjY291bnRzID0gc3RhdGUuYWNjb3VudHNcbiAgICAgIC5maWx0ZXIoKGFjY291bnQpID0+IHtcbiAgICAgICAgaWYgKCFhY2NvdW50c1dpdGhQdWJsaWNQYWNrYWdlcy5oYXMoYWNjb3VudC5hY2NvdW50X2lkKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgYWNjb3VudC5naXRodWJfdXNlcm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSkgfHxcbiAgICAgICAgICAoYWNjb3VudC50c2NpcmN1aXRfaGFuZGxlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSA/P1xuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgICAuc2xpY2UoMCwgbGltaXQgfHwgNTApXG5cbiAgICByZXR1cm4gbWF0Y2hpbmdBY2NvdW50c1xuICB9LFxuICBkZWxldGVTbmlwcGV0OiAoc25pcHBldElkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5zbmlwcGV0cy5maW5kSW5kZXgoKHMpID0+IHMuc25pcHBldF9pZCA9PT0gc25pcHBldElkKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5zbmlwcGV0cy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFNlc3Npb246IChzZXNzaW9uOiBPbWl0PFNlc3Npb24sIFwic2Vzc2lvbl9pZFwiPik6IFNlc3Npb24gPT4ge1xuICAgIGNvbnN0IG5ld1Nlc3Npb24gPSB7IHNlc3Npb25faWQ6IGBzZXNzaW9uXyR7RGF0ZS5ub3coKX1gLCAuLi5zZXNzaW9uIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgc2Vzc2lvbnM6IFsuLi5zdGF0ZS5zZXNzaW9ucywgbmV3U2Vzc2lvbl0sXG4gICAgfSkpXG4gICAgcmV0dXJuIG5ld1Nlc3Npb25cbiAgfSxcbiAgZ2V0U2Vzc2lvbnM6ICh7XG4gICAgYWNjb3VudF9pZCxcbiAgICBpc19jbGlfc2Vzc2lvbixcbiAgfTogeyBhY2NvdW50X2lkOiBzdHJpbmc7IGlzX2NsaV9zZXNzaW9uPzogYm9vbGVhbiB9KTogU2Vzc2lvbltdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnNlc3Npb25zLmZpbHRlcihcbiAgICAgIChzZXNzaW9uKSA9PlxuICAgICAgICBzZXNzaW9uLmFjY291bnRfaWQgPT09IGFjY291bnRfaWQgJiZcbiAgICAgICAgKGlzX2NsaV9zZXNzaW9uID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICBzZXNzaW9uLmlzX2NsaV9zZXNzaW9uID09PSBpc19jbGlfc2Vzc2lvbiksXG4gICAgKVxuICB9LFxuICBjcmVhdGVMb2dpblBhZ2U6ICgpOiBMb2dpblBhZ2UgPT4ge1xuICAgIGNvbnN0IG5ld0xvZ2luUGFnZTogTG9naW5QYWdlID0ge1xuICAgICAgbG9naW5fcGFnZV9pZDogYGxvZ2luX3BhZ2VfJHtEYXRlLm5vdygpfWAsXG4gICAgICBsb2dpbl9wYWdlX2F1dGhfdG9rZW46IGB0b2tlbl8ke0RhdGUubm93KCl9YCxcbiAgICAgIHdhc19sb2dpbl9zdWNjZXNzZnVsOiBmYWxzZSxcbiAgICAgIGhhc19iZWVuX3VzZWRfdG9fY3JlYXRlX3Nlc3Npb246IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgZXhwaXJlc19hdDogbmV3IERhdGUoRGF0ZS5ub3coKSArIDMwICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygpLCAvLyAzMCBtaW51dGVzIGV4cGlyYXRpb25cbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IFsuLi5zdGF0ZS5sb2dpblBhZ2VzLCBuZXdMb2dpblBhZ2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdMb2dpblBhZ2VcbiAgfSxcbiAgZ2V0TG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZyk6IExvZ2luUGFnZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5sb2dpblBhZ2VzLmZpbmQoKGxwKSA9PiBscC5sb2dpbl9wYWdlX2lkID09PSBsb2dpblBhZ2VJZClcbiAgfSxcbiAgdXBkYXRlTG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxMb2dpblBhZ2U+KTogdm9pZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IHN0YXRlLmxvZ2luUGFnZXMubWFwKChscCkgPT5cbiAgICAgICAgbHAubG9naW5fcGFnZV9pZCA9PT0gbG9naW5QYWdlSWQgPyB7IC4uLmxwLCAuLi51cGRhdGVzIH0gOiBscCxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGdldEFjY291bnQ6IChhY2NvdW50SWQ6IHN0cmluZyk6IEFjY291bnQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudHMuZmluZCgoYWNjb3VudCkgPT4gYWNjb3VudC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQpXG4gIH0sXG4gIHVwZGF0ZUFjY291bnQ6IChcbiAgICBhY2NvdW50SWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPEFjY291bnQ+LFxuICApOiBBY2NvdW50IHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZEFjY291bnQ6IEFjY291bnQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBhY2NvdW50SW5kZXggPSBzdGF0ZS5hY2NvdW50cy5maW5kSW5kZXgoXG4gICAgICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRfaWQgPT09IGFjY291bnRJZCxcbiAgICAgIClcbiAgICAgIGlmIChhY2NvdW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi5zdGF0ZS5hY2NvdW50c1thY2NvdW50SW5kZXhdIH1cbiAgICAgICAgaWYgKHVwZGF0ZXMudHNjaXJjdWl0X2hhbmRsZSkge1xuICAgICAgICAgIHVwZGF0ZWRBY2NvdW50LnRzY2lyY3VpdF9oYW5kbGUgPSB1cGRhdGVzLnRzY2lyY3VpdF9oYW5kbGVcbiAgICAgICAgICBkZWxldGUgdXBkYXRlcy50c2NpcmN1aXRfaGFuZGxlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVwZGF0ZXMuc2hpcHBpbmdJbmZvKSB7XG4gICAgICAgICAgdXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvID0ge1xuICAgICAgICAgICAgLi4udXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvLFxuICAgICAgICAgICAgLi4udXBkYXRlcy5zaGlwcGluZ0luZm8sXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSB1cGRhdGVzLnNoaXBwaW5nSW5mb1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi51cGRhdGVkQWNjb3VudCwgLi4udXBkYXRlcyB9XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRBY2NvdW50cyA9IFsuLi5zdGF0ZS5hY2NvdW50c11cbiAgICAgICAgdXBkYXRlZEFjY291bnRzW2FjY291bnRJbmRleF0gPSB1cGRhdGVkQWNjb3VudFxuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYWNjb3VudHM6IHVwZGF0ZWRBY2NvdW50cyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiB1cGRhdGVkQWNjb3VudFxuICB9LFxuICBjcmVhdGVTZXNzaW9uOiAoc2Vzc2lvbjogT21pdDxTZXNzaW9uLCBcInNlc3Npb25faWRcIj4pOiBTZXNzaW9uID0+IHtcbiAgICBjb25zdCBuZXdTZXNzaW9uID0geyBzZXNzaW9uX2lkOiBgc2Vzc2lvbl8ke0RhdGUubm93KCl9YCwgLi4uc2Vzc2lvbiB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHNlc3Npb25zOiBbLi4uc3RhdGUuc2Vzc2lvbnMsIG5ld1Nlc3Npb25dLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdTZXNzaW9uXG4gIH0sXG4gIGRlbGV0ZVNlc3Npb246IChzZXNzaW9uSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCBkZWxldGVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLnNlc3Npb25zLmZpbmRJbmRleChcbiAgICAgICAgKHNlc3Npb24pID0+IHNlc3Npb24uc2Vzc2lvbl9pZCA9PT0gc2Vzc2lvbklkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5zZXNzaW9ucy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFN0YXI6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBBY2NvdW50UGFja2FnZSA9PiB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgY29uc3QgYWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke0RhdGUubm93KCl9YCxcbiAgICAgIGFjY291bnRfaWQ6IGFjY291bnRJZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VJZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBub3csXG4gICAgICB1cGRhdGVkX2F0OiBub3csXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGluY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgICAgLi4udXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0sXG4gICAgICAgICAgc3Rhcl9jb3VudDogKHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdLnN0YXJfY291bnQgfHwgMCkgKyAxLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYWNrYWdlczogdXBkYXRlZFBhY2thZ2VzLFxuICAgICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gYWNjb3VudFBhY2thZ2VcbiAgfSxcbiAgcmVtb3ZlU3RhcjogKGFjY291bnRJZDogc3RyaW5nLCBwYWNrYWdlSWQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGRlY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuXG4gICAgICBpZiAocGFja2FnZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgICB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSA9IHtcbiAgICAgICAgICAuLi51cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSxcbiAgICAgICAgICBzdGFyX2NvdW50OiBNYXRoLm1heChcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAodXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0uc3Rhcl9jb3VudCB8fCAwKSAtIDEsXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAoYXApID0+XG4gICAgICAgICAgICAgICEoYXAuYWNjb3VudF9pZCA9PT0gYWNjb3VudElkICYmIGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgKGFwKSA9PiAhKGFwLmFjY291bnRfaWQgPT09IGFjY291bnRJZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpLFxuICAgICAgICApLFxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIGhhc1N0YXJyZWQ6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5zb21lKFxuICAgICAgKGFwKSA9PlxuICAgICAgICBhcC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQgJiZcbiAgICAgICAgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkICYmXG4gICAgICAgIGFwLmlzX3N0YXJyZWQsXG4gICAgKVxuICB9LFxuICBhZGRQYWNrYWdlOiAoXG4gICAgX3BhY2thZ2U6IE9taXQ8XG4gICAgICB6LmlucHV0PHR5cGVvZiBwYWNrYWdlU2NoZW1hPixcbiAgICAgIFwicGFja2FnZV9pZFwiIHwgXCJnaXRodWJfcmVwb19mdWxsX25hbWVcIlxuICAgID4sXG4gICk6IFBhY2thZ2UgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBjb25zdCBuZXh0SWQgPSBzdGF0ZS5pZENvdW50ZXIgKyAxXG4gICAgY29uc3QgbmV3UGFja2FnZSA9IHtcbiAgICAgIHBhY2thZ2VfaWQ6IGBwYWNrYWdlXyR7bmV4dElkfWAsXG4gICAgICBnaXRodWJfcmVwb19mdWxsX25hbWU6IG51bGwsXG4gICAgICBsYXRlc3RfcGNiX3ByZXZpZXdfaW1hZ2VfdXJsOlxuICAgICAgICBfcGFja2FnZS5sYXRlc3RfcGNiX3ByZXZpZXdfaW1hZ2VfdXJsID8/XG4gICAgICAgIGAvYXBpL3BhY2thZ2VzL2ltYWdlcy8ke19wYWNrYWdlLm5hbWV9YCxcbiAgICAgIGxhdGVzdF9jYWRfcHJldmlld19pbWFnZV91cmw6XG4gICAgICAgIF9wYWNrYWdlLmxhdGVzdF9jYWRfcHJldmlld19pbWFnZV91cmwgPz9cbiAgICAgICAgYC9hcGkvcGFja2FnZXMvaW1hZ2VzLyR7X3BhY2thZ2UubmFtZX1gLFxuICAgICAgbGF0ZXN0X3NjaF9wcmV2aWV3X2ltYWdlX3VybDpcbiAgICAgICAgX3BhY2thZ2UubGF0ZXN0X3NjaF9wcmV2aWV3X2ltYWdlX3VybCA/P1xuICAgICAgICBgL2FwaS9wYWNrYWdlcy9pbWFnZXMvJHtfcGFja2FnZS5uYW1lfWAsXG4gICAgICAuLi5fcGFja2FnZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIHBhY2thZ2VzOiBbLi4uc3RhdGUucGFja2FnZXMsIG5ld1BhY2thZ2UgYXMgUGFja2FnZV0sXG4gICAgfSkpXG4gICAgcmV0dXJuIG5ld1BhY2thZ2UgYXMgUGFja2FnZVxuICB9LFxuICB1cGRhdGVQYWNrYWdlOiAoXG4gICAgcGFja2FnZUlkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxQYWNrYWdlPixcbiAgKTogUGFja2FnZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgbGV0IHVwZGF0ZWRQYWNrYWdlOiBQYWNrYWdlIHwgdW5kZWZpbmVkXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHJldHVybiBzdGF0ZVxuXG4gICAgICBjb25zdCB1cGRhdGVkUGFja2FnZXMgPSBbLi4uc3RhdGUucGFja2FnZXNdXG4gICAgICB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSA9IHtcbiAgICAgICAgLi4udXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0sXG4gICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICB9XG4gICAgICB1cGRhdGVkUGFja2FnZSA9IHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyB9XG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZFBhY2thZ2VcbiAgfSxcbiAgZ2V0UGFja2FnZUJ5SWQ6IChwYWNrYWdlSWQ6IHN0cmluZyk6IFBhY2thZ2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBjb25zdCBwa2cgPSBzdGF0ZS5wYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpXG4gICAgaWYgKCFwa2cpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGtnLFxuICAgIH1cbiAgfSxcbiAgZ2V0UGFja2FnZVJlbGVhc2VCeUlkOiAoXG4gICAgcGFja2FnZVJlbGVhc2VJZDogc3RyaW5nLFxuICApOiBQYWNrYWdlUmVsZWFzZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICAgIClcbiAgfSxcbiAgYWRkUGFja2FnZVJlbGVhc2U6IChcbiAgICBwYWNrYWdlUmVsZWFzZTogT21pdDxcbiAgICAgIHouaW5wdXQ8dHlwZW9mIHBhY2thZ2VSZWxlYXNlU2NoZW1hPixcbiAgICAgIFwicGFja2FnZV9yZWxlYXNlX2lkXCJcbiAgICA+LFxuICApOiBQYWNrYWdlUmVsZWFzZSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IG5leHRJZCA9IHN0YXRlLmlkQ291bnRlciArIDFcbiAgICBjb25zdCBwYXJzZWQgPSBwYWNrYWdlUmVsZWFzZVNjaGVtYS5wYXJzZSh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGBwYWNrYWdlX3JlbGVhc2VfJHtuZXh0SWR9YCxcbiAgICAgIC4uLnBhY2thZ2VSZWxlYXNlLFxuICAgIH0pXG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIHBhY2thZ2VSZWxlYXNlczogWy4uLnN0YXRlLnBhY2thZ2VSZWxlYXNlcywgcGFyc2VkXSxcbiAgICB9KSlcbiAgICByZXR1cm4gcGFyc2VkXG4gIH0sXG4gIHVwZGF0ZVBhY2thZ2VSZWxlYXNlOiAocGFja2FnZVJlbGVhc2U6IFBhY2thZ2VSZWxlYXNlKTogdm9pZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlczogc3RhdGUucGFja2FnZVJlbGVhc2VzLm1hcCgocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gICAgICAgICAgPyBwYWNrYWdlUmVsZWFzZVxuICAgICAgICAgIDogcHIsXG4gICAgICApLFxuICAgIH0pKVxuICB9LFxuICBkZWxldGVQYWNrYWdlRmlsZTogKHBhY2thZ2VGaWxlSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCBkZWxldGVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfZmlsZV9pZCA9PT0gcGFja2FnZUZpbGVJZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc3RhdGUucGFja2FnZUZpbGVzLnNwbGljZShpbmRleCwgMSlcbiAgICAgICAgZGVsZXRlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdGF0ZVxuICAgIH0pXG4gICAgcmV0dXJuIGRlbGV0ZWRcbiAgfSxcbiAgYWRkUGFja2FnZUZpbGU6IChcbiAgICBwYWNrYWdlRmlsZTogT21pdDxQYWNrYWdlRmlsZSwgXCJwYWNrYWdlX2ZpbGVfaWRcIj4sXG4gICk6IFBhY2thZ2VGaWxlID0+IHtcbiAgICBjb25zdCBuZXdQYWNrYWdlRmlsZSA9IHtcbiAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke2dldCgpLmlkQ291bnRlciArIDF9YCxcbiAgICAgIC4uLnBhY2thZ2VGaWxlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgcGFja2FnZUZpbGVzOiBbLi4uc3RhdGUucGFja2FnZUZpbGVzLCBuZXdQYWNrYWdlRmlsZV0sXG4gICAgfSkpXG4gICAgcmV0dXJuIG5ld1BhY2thZ2VGaWxlXG4gIH0sXG4gIHVwZGF0ZVBhY2thZ2VGaWxlOiAoXG4gICAgcGFja2FnZUZpbGVJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8T21pdDxQYWNrYWdlRmlsZSwgXCJwYWNrYWdlX2ZpbGVfaWRcIj4+LFxuICApOiBQYWNrYWdlRmlsZSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VGaWxlczogc3RhdGUucGFja2FnZUZpbGVzLm1hcCgoZmlsZSkgPT5cbiAgICAgICAgZmlsZS5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQgPyB7IC4uLmZpbGUsIC4uLnVwZGF0ZXMgfSA6IGZpbGUsXG4gICAgICApLFxuICAgIH0pKVxuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQsXG4gICAgKSFcbiAgfSxcbiAgZ2V0U3RhckNvdW50OiAocGFja2FnZUlkOiBzdHJpbmcpOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudFBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgKS5sZW5ndGhcbiAgfSxcbiAgZ2V0UGFja2FnZUZpbGVzQnlSZWxlYXNlSWQ6IChwYWNrYWdlUmVsZWFzZUlkOiBzdHJpbmcpOiBQYWNrYWdlRmlsZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAocGYpID0+IHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgICApXG4gIH0sXG4gIC8qKlxuICAgKiBVcGRhdGUgZnNfc2hhIGZvciBhIHBhY2thZ2UgcmVsZWFzZSBiYXNlZCBvbiBpdHMgZmlsZXNcbiAgICovXG4gIHVwZGF0ZVBhY2thZ2VSZWxlYXNlRnNTaGE6IChwYWNrYWdlUmVsZWFzZUlkOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChwZikgPT4gcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICAgIClcbiAgICBjb25zdCBmc1NoYSA9IGdlbmVyYXRlRnNTaGEocGFja2FnZUZpbGVzKVxuXG4gICAgc2V0KChjdXJyZW50U3RhdGUpID0+ICh7XG4gICAgICAuLi5jdXJyZW50U3RhdGUsXG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IGN1cnJlbnRTdGF0ZS5wYWNrYWdlUmVsZWFzZXMubWFwKChwcikgPT5cbiAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkXG4gICAgICAgICAgPyB7IC4uLnByLCBmc19zaGE6IGZzU2hhIH1cbiAgICAgICAgICA6IHByLFxuICAgICAgKSxcbiAgICAgIHBhY2thZ2VzOiBjdXJyZW50U3RhdGUucGFja2FnZXMubWFwKChwa2cpID0+XG4gICAgICAgIHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkXG4gICAgICAgICAgPyB7IC4uLnBrZywgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9mc19zaGE6IGZzU2hhIH1cbiAgICAgICAgICA6IHBrZyxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG5cbiAgYWRkQWlSZXZpZXc6IChyZXZpZXc6IE9taXQ8QWlSZXZpZXcsIFwiYWlfcmV2aWV3X2lkXCI+KTogQWlSZXZpZXcgPT4ge1xuICAgIGNvbnN0IGJhc2UgPSBhaVJldmlld1NjaGVtYS5vbWl0KHsgYWlfcmV2aWV3X2lkOiB0cnVlIH0pLnBhcnNlKHJldmlldylcbiAgICBjb25zdCBuZXdSZXZpZXcgPSB7XG4gICAgICBhaV9yZXZpZXdfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICAuLi5iYXNlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgYWlSZXZpZXdzOiBbLi4uc3RhdGUuYWlSZXZpZXdzLCBuZXdSZXZpZXddLFxuICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdSZXZpZXdcbiAgfSxcbiAgdXBkYXRlQWlSZXZpZXc6IChcbiAgICBhaVJldmlld0lkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxBaVJldmlldz4sXG4gICk6IEFpUmV2aWV3IHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZDogQWlSZXZpZXcgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmFpUmV2aWV3cy5maW5kSW5kZXgoXG4gICAgICAgIChhcikgPT4gYXIuYWlfcmV2aWV3X2lkID09PSBhaVJldmlld0lkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG4gICAgICBjb25zdCBhaVJldmlld3MgPSBbLi4uc3RhdGUuYWlSZXZpZXdzXVxuICAgICAgYWlSZXZpZXdzW2luZGV4XSA9IHsgLi4uYWlSZXZpZXdzW2luZGV4XSwgLi4udXBkYXRlcyB9XG4gICAgICB1cGRhdGVkID0gYWlSZXZpZXdzW2luZGV4XVxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFpUmV2aWV3cyB9XG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZFxuICB9LFxuICBnZXRBaVJldmlld0J5SWQ6IChhaVJldmlld0lkOiBzdHJpbmcpOiBBaVJldmlldyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5haVJldmlld3MuZmluZCgoYXIpID0+IGFyLmFpX3Jldmlld19pZCA9PT0gYWlSZXZpZXdJZClcbiAgfSxcbiAgbGlzdEFpUmV2aWV3czogKCk6IEFpUmV2aWV3W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWlSZXZpZXdzXG4gIH0sXG4gIGFkZERhdGFzaGVldDogKHsgY2hpcF9uYW1lIH06IHsgY2hpcF9uYW1lOiBzdHJpbmcgfSk6IERhdGFzaGVldCA9PiB7XG4gICAgY29uc3QgbmV3RGF0YXNoZWV0ID0gZGF0YXNoZWV0U2NoZW1hLnBhcnNlKHtcbiAgICAgIGRhdGFzaGVldF9pZDogY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICAgIGNoaXBfbmFtZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHBpbl9pbmZvcm1hdGlvbjogbnVsbCxcbiAgICAgIGRhdGFzaGVldF9wZGZfdXJsczogbnVsbCxcbiAgICAgIGFpX2Rlc2NyaXB0aW9uOiBudWxsLFxuICAgIH0pXG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGRhdGFzaGVldHM6IFsuLi5zdGF0ZS5kYXRhc2hlZXRzLCBuZXdEYXRhc2hlZXRdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdEYXRhc2hlZXRcbiAgfSxcbiAgZ2V0RGF0YXNoZWV0QnlJZDogKGRhdGFzaGVldElkOiBzdHJpbmcpOiBEYXRhc2hlZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuZGF0YXNoZWV0cy5maW5kKChkKSA9PiBkLmRhdGFzaGVldF9pZCA9PT0gZGF0YXNoZWV0SWQpXG4gIH0sXG4gIGdldERhdGFzaGVldEJ5Q2hpcE5hbWU6IChjaGlwTmFtZTogc3RyaW5nKTogRGF0YXNoZWV0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmRhdGFzaGVldHMuZmluZChcbiAgICAgIChkKSA9PiBkLmNoaXBfbmFtZS50b0xvd2VyQ2FzZSgpID09PSBjaGlwTmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgIClcbiAgfSxcbiAgbGlzdERhdGFzaGVldHM6ICh7XG4gICAgY2hpcF9uYW1lLFxuICAgIGlzX3BvcHVsYXIsXG4gIH06IHsgY2hpcF9uYW1lPzogc3RyaW5nOyBpc19wb3B1bGFyPzogYm9vbGVhbiB9ID0ge30pOiBEYXRhc2hlZXRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGlmIChpc19wb3B1bGFyKSB7XG4gICAgICByZXR1cm4gc3RhdGUuZGF0YXNoZWV0c1xuICAgIH1cblxuICAgIGlmIChjaGlwX25hbWUpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5kYXRhc2hlZXRzLmZpbHRlcihcbiAgICAgICAgKGQpID0+IGQuY2hpcF9uYW1lLnRvTG93ZXJDYXNlKCkgPT09IGNoaXBfbmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZS5kYXRhc2hlZXRzXG4gIH0sXG4gIHVwZGF0ZURhdGFzaGVldDogKFxuICAgIGRhdGFzaGVldElkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxEYXRhc2hlZXQ+LFxuICApOiBEYXRhc2hlZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGxldCB1cGRhdGVkOiBEYXRhc2hlZXQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmRhdGFzaGVldHMuZmluZEluZGV4KFxuICAgICAgICAoZCkgPT4gZC5kYXRhc2hlZXRfaWQgPT09IGRhdGFzaGVldElkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG4gICAgICBjb25zdCBkYXRhc2hlZXRzID0gWy4uLnN0YXRlLmRhdGFzaGVldHNdXG4gICAgICBkYXRhc2hlZXRzW2luZGV4XSA9IHsgLi4uZGF0YXNoZWV0c1tpbmRleF0sIC4uLnVwZGF0ZXMgfVxuICAgICAgdXBkYXRlZCA9IGRhdGFzaGVldHNbaW5kZXhdXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZGF0YXNoZWV0cyB9XG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZFxuICB9LFxuICBhZGRQYWNrYWdlQnVpbGQ6IChcbiAgICBwYWNrYWdlQnVpbGQ6IFBhcnRpYWw8XG4gICAgICBPbWl0PHouaW5wdXQ8dHlwZW9mIHBhY2thZ2VCdWlsZFNjaGVtYT4sIFwicGFja2FnZV9idWlsZF9pZFwiPlxuICAgID4gJiB7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHN0cmluZ1xuICAgIH0sXG4gICk6IFBhY2thZ2VCdWlsZCA9PiB7XG4gICAgY29uc3QgbmV3UGFja2FnZUJ1aWxkID0gcGFja2FnZUJ1aWxkU2NoZW1hLnBhcnNlKHtcbiAgICAgIHBhY2thZ2VfYnVpbGRfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICB1c2VyX2NvZGVfYnVpbGRfbG9nczogbnVsbCxcbiAgICAgIGltYWdlX2dlbmVyYXRpb25fbG9nczogbnVsbCxcbiAgICAgIC4uLnBhY2thZ2VCdWlsZCxcbiAgICB9KVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlQnVpbGRzOiBbLi4uc3RhdGUucGFja2FnZUJ1aWxkcywgbmV3UGFja2FnZUJ1aWxkXSxcbiAgICAgIC8vIEF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBwYWNrYWdlIHJlbGVhc2UgdG8gcmVmZXJlbmNlIHRoaXMgYXMgdGhlIGxhdGVzdCBidWlsZFxuICAgICAgcGFja2FnZVJlbGVhc2VzOiBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMubWFwKChyZWxlYXNlKSA9PlxuICAgICAgICByZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZUJ1aWxkLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5yZWxlYXNlLFxuICAgICAgICAgICAgICBsYXRlc3RfcGFja2FnZV9idWlsZF9pZDogbmV3UGFja2FnZUJ1aWxkLnBhY2thZ2VfYnVpbGRfaWQsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiByZWxlYXNlLFxuICAgICAgKSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3UGFja2FnZUJ1aWxkXG4gIH0sXG4gIGdldFBhY2thZ2VCdWlsZEJ5SWQ6IChwYWNrYWdlQnVpbGRJZDogc3RyaW5nKTogUGFja2FnZUJ1aWxkIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VCdWlsZHMuZmluZChcbiAgICAgIChwYikgPT4gcGIucGFja2FnZV9idWlsZF9pZCA9PT0gcGFja2FnZUJ1aWxkSWQsXG4gICAgKVxuICB9LFxuICBnZXRQYWNrYWdlQnVpbGRzQnlSZWxlYXNlSWQ6IChwYWNrYWdlUmVsZWFzZUlkOiBzdHJpbmcpOiBQYWNrYWdlQnVpbGRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5wYWNrYWdlQnVpbGRzXG4gICAgICAuZmlsdGVyKChwYikgPT4gcGIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkKVxuICAgICAgLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gICAgICApXG4gIH0sXG4gIHVwZGF0ZVBhY2thZ2VCdWlsZDogKFxuICAgIHBhY2thZ2VCdWlsZElkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxQYWNrYWdlQnVpbGQ+LFxuICApOiBQYWNrYWdlQnVpbGQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGxldCB1cGRhdGVkOiBQYWNrYWdlQnVpbGQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLnBhY2thZ2VCdWlsZHMuZmluZEluZGV4KFxuICAgICAgICAocGIpID0+IHBiLnBhY2thZ2VfYnVpbGRfaWQgPT09IHBhY2thZ2VCdWlsZElkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG4gICAgICBjb25zdCBwYWNrYWdlQnVpbGRzID0gWy4uLnN0YXRlLnBhY2thZ2VCdWlsZHNdXG4gICAgICBwYWNrYWdlQnVpbGRzW2luZGV4XSA9IHsgLi4ucGFja2FnZUJ1aWxkc1tpbmRleF0sIC4uLnVwZGF0ZXMgfVxuICAgICAgdXBkYXRlZCA9IHBhY2thZ2VCdWlsZHNbaW5kZXhdXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgcGFja2FnZUJ1aWxkcyB9XG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZFxuICB9LFxuICBhZGRPcmdhbml6YXRpb246IChvcmdhbml6YXRpb246IHtcbiAgICBuYW1lPzogc3RyaW5nXG4gICAgb3JnX2lkPzogc3RyaW5nXG4gICAgaXNfcGVyc29uYWxfb3JnPzogYm9vbGVhblxuICAgIG93bmVyX2FjY291bnRfaWQ6IHN0cmluZ1xuICAgIGdpdGh1Yl9oYW5kbGU/OiBzdHJpbmdcbiAgICBvcmdfZGlzcGxheV9uYW1lPzogc3RyaW5nXG4gICAgdHNjaXJjdWl0X2hhbmRsZT86IHN0cmluZ1xuICAgIGF2YXRhcl91cmw/OiBzdHJpbmcgfCBudWxsXG4gIH0pID0+IHtcbiAgICBjb25zdCBuZXdPcmdhbml6YXRpb246IE9yZ2FuaXphdGlvbiA9IHtcbiAgICAgIG9yZ19pZDogb3JnYW5pemF0aW9uLm9yZ19pZCB8fCBgb3JnXyR7Z2V0KCkuaWRDb3VudGVyICsgMX1gLFxuICAgICAgZ2l0aHViX2hhbmRsZTogb3JnYW5pemF0aW9uLmdpdGh1Yl9oYW5kbGUgPz8gbnVsbCxcbiAgICAgIGlzX3BlcnNvbmFsX29yZzogb3JnYW5pemF0aW9uLmlzX3BlcnNvbmFsX29yZyB8fCBmYWxzZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIG9yZ19kaXNwbGF5X25hbWU6XG4gICAgICAgIG9yZ2FuaXphdGlvbi5vcmdfZGlzcGxheV9uYW1lID8/XG4gICAgICAgIG9yZ2FuaXphdGlvbi50c2NpcmN1aXRfaGFuZGxlID8/XG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGF2YXRhcl91cmw6IG9yZ2FuaXphdGlvbi5hdmF0YXJfdXJsID8/IG51bGwsXG4gICAgICB0c2NpcmN1aXRfaGFuZGxlOlxuICAgICAgICBvcmdhbml6YXRpb24udHNjaXJjdWl0X2hhbmRsZSB8fCBvcmdhbml6YXRpb24ubmFtZSB8fCBudWxsLFxuICAgICAgLi4ub3JnYW5pemF0aW9uLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgb3JnYW5pemF0aW9uczogWy4uLnN0YXRlLm9yZ2FuaXphdGlvbnMsIG5ld09yZ2FuaXphdGlvbiBhcyBPcmdhbml6YXRpb25dLFxuICAgICAgLy8gQWRkIHRoZSBjcmVhdG9yIGFzIGEgbWVtYmVyIG9mIHRoZSBuZXcgb3JnIGJ5IHNldHRpbmcgdGhlaXIgcGVyc29uYWxfb3JnX2lkXG4gICAgICBhY2NvdW50czogc3RhdGUuYWNjb3VudHMubWFwKChhY2NvdW50KSA9PlxuICAgICAgICBhY2NvdW50LmFjY291bnRfaWQgPT09IG9yZ2FuaXphdGlvbi5vd25lcl9hY2NvdW50X2lkXG4gICAgICAgICAgPyB7IC4uLmFjY291bnQsIHBlcnNvbmFsX29yZ19pZDogbmV3T3JnYW5pemF0aW9uLm9yZ19pZCB9XG4gICAgICAgICAgOiBhY2NvdW50LFxuICAgICAgKSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3T3JnYW5pemF0aW9uXG4gIH0sXG4gIGdldE9yZ3M6IChcbiAgICBmaWx0ZXJzPzoge1xuICAgICAgb3duZXJfYWNjb3VudF9pZD86IHN0cmluZ1xuICAgICAgYWNjb3VudF9pZD86IHN0cmluZ1xuICAgICAgZ2l0aHViX2hhbmRsZT86IHN0cmluZ1xuICAgICAgdHNjaXJjdWl0X2hhbmRsZT86IHN0cmluZ1xuICAgICAgbmFtZT86IHN0cmluZ1xuICAgIH0sXG4gICAgYXV0aD86IHsgYWNjb3VudF9pZD86IHN0cmluZyB9LFxuICApID0+IHtcbiAgICBsZXQgb3JncyA9IGdldCgpLm9yZ2FuaXphdGlvbnNcbiAgICBpZiAoZmlsdGVycz8ub3duZXJfYWNjb3VudF9pZCkge1xuICAgICAgb3JncyA9IG9yZ3MuZmlsdGVyKFxuICAgICAgICAob3JnKSA9PiBvcmcub3duZXJfYWNjb3VudF9pZCA9PT0gZmlsdGVycy5vd25lcl9hY2NvdW50X2lkLFxuICAgICAgKVxuICAgIH1cbiAgICBpZiAoZmlsdGVycz8uYWNjb3VudF9pZCkge1xuICAgICAgb3JncyA9IG9yZ3MuZmlsdGVyKChvcmcpID0+IHtcbiAgICAgICAgY29uc3QgaXNNZW1iZXJWaWFPcmdBY2NvdW50cyA9IGdldCgpLm9yZ0FjY291bnRzLnNvbWUoXG4gICAgICAgICAgKG9hKSA9PlxuICAgICAgICAgICAgb2Eub3JnX2lkID09PSBvcmcub3JnX2lkICYmIG9hLmFjY291bnRfaWQgPT09IGZpbHRlcnMuYWNjb3VudF9pZCxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBpc1BlcnNvbmFsT3JnID1cbiAgICAgICAgICBvcmcuaXNfcGVyc29uYWxfb3JnICYmIG9yZy5vd25lcl9hY2NvdW50X2lkID09PSBmaWx0ZXJzLmFjY291bnRfaWRcbiAgICAgICAgcmV0dXJuIGlzTWVtYmVyVmlhT3JnQWNjb3VudHMgfHwgaXNQZXJzb25hbE9yZ1xuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGZpbHRlcnM/LmdpdGh1Yl9oYW5kbGUpIHtcbiAgICAgIG9yZ3MgPSBvcmdzLmZpbHRlcigob3JnKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjY291bnQgPSBnZXQoKS5hY2NvdW50cy5maW5kKFxuICAgICAgICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRfaWQgPT09IG9yZy5vd25lcl9hY2NvdW50X2lkLFxuICAgICAgICApXG4gICAgICAgIHJldHVybiBhY2NvdW50Py5naXRodWJfdXNlcm5hbWUgPT09IGZpbHRlcnMuZ2l0aHViX2hhbmRsZVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGZpbHRlcnM/LnRzY2lyY3VpdF9oYW5kbGUpIHtcbiAgICAgIGNvbnN0IGFjY291bnQgPSBnZXQoKS5hY2NvdW50cy5maW5kKFxuICAgICAgICAoYWNjb3VudCkgPT4gYWNjb3VudC50c2NpcmN1aXRfaGFuZGxlID09PSBmaWx0ZXJzLnRzY2lyY3VpdF9oYW5kbGUsXG4gICAgICApXG4gICAgICBvcmdzID0gb3Jncy5maWx0ZXIoKG9yZykgPT4ge1xuICAgICAgICBjb25zdCBvcmdBY2NvdW50ID0gZ2V0KCkub3JnQWNjb3VudHMuZmluZChcbiAgICAgICAgICAob2EpID0+XG4gICAgICAgICAgICBvYS5vcmdfaWQgPT09IG9yZy5vcmdfaWQgJiYgb2EuYWNjb3VudF9pZCA9PT0gYWNjb3VudD8uYWNjb3VudF9pZCxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBpc1BlcnNvbmFsT3JnID1cbiAgICAgICAgICBvcmcuaXNfcGVyc29uYWxfb3JnICYmIG9yZy5vd25lcl9hY2NvdW50X2lkID09PSBhY2NvdW50Py5hY2NvdW50X2lkXG4gICAgICAgIHJldHVybiBCb29sZWFuKG9yZ0FjY291bnQpIHx8IGlzUGVyc29uYWxPcmdcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChmaWx0ZXJzPy5uYW1lKSB7XG4gICAgICBvcmdzID0gb3Jncy5maWx0ZXIoXG4gICAgICAgIChvcmcpID0+XG4gICAgICAgICAgb3JnLmdpdGh1Yl9oYW5kbGUgPT09IGZpbHRlcnMubmFtZSB8fFxuICAgICAgICAgIG9yZy50c2NpcmN1aXRfaGFuZGxlID09PSBmaWx0ZXJzLm5hbWUsXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZ3MubWFwKChvcmcpID0+IHtcbiAgICAgIGNvbnN0IG1lbWJlcl9jb3VudCA9IGdldCgpLmFjY291bnRzLmZpbHRlcihcbiAgICAgICAgKGFjY291bnQpID0+IGFjY291bnQucGVyc29uYWxfb3JnX2lkID09PSBvcmcub3JnX2lkLFxuICAgICAgKS5sZW5ndGhcblxuICAgICAgY29uc3QgcGFja2FnZV9jb3VudCA9IGdldCgpLnBhY2thZ2VzLmZpbHRlcihcbiAgICAgICAgKHBrZykgPT4gcGtnLm93bmVyX29yZ19pZCA9PT0gb3JnLm9yZ19pZCxcbiAgICAgICkubGVuZ3RoXG5cbiAgICAgIGNvbnN0IGNhbl9tYW5hZ2Vfb3JnID0gYXV0aFxuICAgICAgICA/IG9yZy5vd25lcl9hY2NvdW50X2lkID09PSBhdXRoLmFjY291bnRfaWRcbiAgICAgICAgOiBmYWxzZVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vcmcsXG4gICAgICAgIG1lbWJlcl9jb3VudCxcbiAgICAgICAgcGFja2FnZV9jb3VudCxcbiAgICAgICAgY2FuX21hbmFnZV9vcmcsXG4gICAgICB9XG4gICAgfSlcbiAgfSxcbiAgZ2V0T3JnOiAoXG4gICAgZmlsdGVyczoge1xuICAgICAgb3JnX2lkPzogc3RyaW5nXG4gICAgICBnaXRodWJfaGFuZGxlPzogc3RyaW5nXG4gICAgICB0c2NpcmN1aXRfaGFuZGxlPzogc3RyaW5nXG4gICAgfSxcbiAgICBhdXRoPzogeyBhY2NvdW50X2lkOiBzdHJpbmcgfSxcbiAgKSA9PiB7XG4gICAgbGV0IG9yZ3MgPSBnZXQoKS5vcmdhbml6YXRpb25zXG5cbiAgICBpZiAoZmlsdGVycz8ub3JnX2lkKSB7XG4gICAgICBvcmdzID0gb3Jncy5maWx0ZXIoKG9yZykgPT4gb3JnLm9yZ19pZCA9PT0gZmlsdGVycy5vcmdfaWQpXG4gICAgfVxuICAgIC8vIGlmIChmaWx0ZXJzPy5vcmdfbmFtZSAmJiBhdXRoPy5hY2NvdW50X2lkKSB7XG4gICAgLy8gICBjb25zdCBhY2NvdW50ID0gZ2V0KCkuYWNjb3VudHMuZmluZCh4ID0+IHguYWNjb3VudF9pZCA9PSBhdXRoPy5hY2NvdW50X2lkKVxuICAgIC8vICAgb3JncyA9IG9yZ3MuZmlsdGVyKChvcmcpID0+IG9yZy5naXRodWJfaGFuZGxlID09PSBhY2NvdW50Py5naXRodWJfdXNlcm5hbWUpXG4gICAgLy8gfVxuICAgIGlmIChmaWx0ZXJzPy5naXRodWJfaGFuZGxlKSB7XG4gICAgICBvcmdzID0gb3Jncy5maWx0ZXIoKG9yZykgPT4gb3JnLmdpdGh1Yl9oYW5kbGUgPT09IGZpbHRlcnMuZ2l0aHViX2hhbmRsZSlcbiAgICB9XG4gICAgaWYgKGZpbHRlcnM/LnRzY2lyY3VpdF9oYW5kbGUpIHtcbiAgICAgIG9yZ3MgPSBvcmdzLmZpbHRlcihcbiAgICAgICAgKG9yZykgPT4gb3JnLnRzY2lyY3VpdF9oYW5kbGUgPT09IGZpbHRlcnMudHNjaXJjdWl0X2hhbmRsZSxcbiAgICAgIClcbiAgICB9XG4gICAgaWYgKG9yZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IG9yZyA9IG9yZ3NbMF1cbiAgICBjb25zdCBvcmdBY2NvdW50ID0gZ2V0KCkub3JnQWNjb3VudHMuZmluZChcbiAgICAgIChvYSkgPT4gb2Eub3JnX2lkID09PSBvcmcub3JnX2lkICYmIG9hLmFjY291bnRfaWQgPT09IGF1dGg/LmFjY291bnRfaWQsXG4gICAgKVxuICAgIGNvbnN0IGlzT3duZXIgPSBvcmcub3duZXJfYWNjb3VudF9pZCA9PT0gYXV0aD8uYWNjb3VudF9pZFxuXG4gICAgY29uc3QgbWVtYmVyX2NvdW50ID0gZ2V0KCkuYWNjb3VudHMuZmlsdGVyKFxuICAgICAgKGFjY291bnQpID0+IGFjY291bnQucGVyc29uYWxfb3JnX2lkID09PSBvcmcub3JnX2lkLFxuICAgICkubGVuZ3RoXG5cbiAgICBjb25zdCBwYWNrYWdlX2NvdW50ID0gZ2V0KCkucGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHBrZykgPT4gcGtnLm93bmVyX29yZ19pZCA9PT0gb3JnLm9yZ19pZCxcbiAgICApLmxlbmd0aFxuXG4gICAgY29uc3QgY2FuX21hbmFnZV9vcmcgPSBpc093bmVyID8gdHJ1ZSA6IG9yZ0FjY291bnQ/LmNhbl9tYW5hZ2Vfb3JnIHx8IGZhbHNlXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3JnLFxuICAgICAgbWVtYmVyX2NvdW50LFxuICAgICAgcGFja2FnZV9jb3VudCxcbiAgICAgIGNhbl9tYW5hZ2Vfb3JnLFxuICAgIH1cbiAgfSxcbiAgYWRkT3JnYW5pemF0aW9uQWNjb3VudDogKG9yZ2FuaXphdGlvbkFjY291bnQ6IHtcbiAgICBvcmdfaWQ6IHN0cmluZ1xuICAgIGFjY291bnRfaWQ6IHN0cmluZ1xuICAgIGlzX293bmVyPzogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgY29uc3QgY2FuX21hbmFnZV9vcmcgPSBvcmdhbml6YXRpb25BY2NvdW50LmlzX293bmVyIHx8IGZhbHNlXG4gICAgY29uc3QgbmV3T3JnQWNjb3VudDogT3JnQWNjb3VudCA9IHtcbiAgICAgIG9yZ19hY2NvdW50X2lkOiBgb3JnX2FjY291bnRfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICBvcmdfaWQ6IG9yZ2FuaXphdGlvbkFjY291bnQub3JnX2lkLFxuICAgICAgYWNjb3VudF9pZDogb3JnYW5pemF0aW9uQWNjb3VudC5hY2NvdW50X2lkLFxuICAgICAgaXNfb3duZXI6IG9yZ2FuaXphdGlvbkFjY291bnQuaXNfb3duZXIgfHwgZmFsc2UsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBjYW5fbWFuYWdlX29yZyxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIG9yZ0FjY291bnRzOiBbLi4uc3RhdGUub3JnQWNjb3VudHMsIG5ld09yZ0FjY291bnRdLFxuICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdPcmdBY2NvdW50XG4gIH0sXG4gIGdldE9yZ2FuaXphdGlvbkFjY291bnQ6IChmaWx0ZXJzOiB7XG4gICAgb3JnX2lkPzogc3RyaW5nXG4gICAgYWNjb3VudF9pZD86IHN0cmluZ1xuICB9KTogT3JnQWNjb3VudCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmdBY2NvdW50cy5maW5kKChvcmdBY2NvdW50KSA9PiB7XG4gICAgICBpZiAoZmlsdGVycy5vcmdfaWQgJiYgb3JnQWNjb3VudC5vcmdfaWQgIT09IGZpbHRlcnMub3JnX2lkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgaWYgKGZpbHRlcnMuYWNjb3VudF9pZCAmJiBvcmdBY2NvdW50LmFjY291bnRfaWQgIT09IGZpbHRlcnMuYWNjb3VudF9pZCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSlcbiAgfSxcbiAgZ2V0T3JnYW5pemF0aW9uQWNjb3VudHM6IChmaWx0ZXJzPzoge1xuICAgIG9yZ19pZD86IHN0cmluZ1xuICAgIGFjY291bnRfaWQ/OiBzdHJpbmdcbiAgfSk6IE9yZ0FjY291bnRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmdBY2NvdW50cy5maWx0ZXIoKG9yZ0FjY291bnQpID0+IHtcbiAgICAgIGlmIChmaWx0ZXJzPy5vcmdfaWQgJiYgb3JnQWNjb3VudC5vcmdfaWQgIT09IGZpbHRlcnMub3JnX2lkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgaWYgKGZpbHRlcnM/LmFjY291bnRfaWQgJiYgb3JnQWNjb3VudC5hY2NvdW50X2lkICE9PSBmaWx0ZXJzLmFjY291bnRfaWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0pXG4gIH0sXG4gIHJlbW92ZU9yZ2FuaXphdGlvbkFjY291bnQ6IChmaWx0ZXJzOiB7XG4gICAgb3JnX2lkOiBzdHJpbmdcbiAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgfSk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCByZW1vdmVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLm9yZ0FjY291bnRzLmZpbmRJbmRleChcbiAgICAgICAgKG9yZ0FjY291bnQpID0+XG4gICAgICAgICAgb3JnQWNjb3VudC5vcmdfaWQgPT09IGZpbHRlcnMub3JnX2lkICYmXG4gICAgICAgICAgb3JnQWNjb3VudC5hY2NvdW50X2lkID09PSBmaWx0ZXJzLmFjY291bnRfaWQsXG4gICAgICApXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHN0YXRlLm9yZ0FjY291bnRzLnNwbGljZShpbmRleCwgMSlcbiAgICAgICAgcmVtb3ZlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdGF0ZVxuICAgIH0pXG4gICAgcmV0dXJuIHJlbW92ZWRcbiAgfSxcbiAgdXBkYXRlT3JnYW5pemF0aW9uQWNjb3VudDogKFxuICAgIGZpbHRlcnM6IHtcbiAgICAgIG9yZ19pZDogc3RyaW5nXG4gICAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgICB9LFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8VXNlclBlcm1pc3Npb25zPixcbiAgKTogT3JnQWNjb3VudCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgbGV0IHVwZGF0ZWRPcmdBY2NvdW50OiBPcmdBY2NvdW50IHwgdW5kZWZpbmVkXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5vcmdBY2NvdW50cy5maW5kSW5kZXgoXG4gICAgICAgIChvcmdBY2NvdW50KSA9PlxuICAgICAgICAgIG9yZ0FjY291bnQub3JnX2lkID09PSBmaWx0ZXJzLm9yZ19pZCAmJlxuICAgICAgICAgIG9yZ0FjY291bnQuYWNjb3VudF9pZCA9PT0gZmlsdGVycy5hY2NvdW50X2lkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG4gICAgICBjb25zdCB1cGRhdGVkT3JnQWNjb3VudHMgPSBbLi4uc3RhdGUub3JnQWNjb3VudHNdXG4gICAgICB1cGRhdGVkT3JnQWNjb3VudHNbaW5kZXhdID0ge1xuICAgICAgICAuLi51cGRhdGVkT3JnQWNjb3VudHNbaW5kZXhdLFxuICAgICAgICAuLi51cGRhdGVzLFxuICAgICAgfVxuICAgICAgdXBkYXRlZE9yZ0FjY291bnQgPSB1cGRhdGVkT3JnQWNjb3VudHNbaW5kZXhdXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgb3JnQWNjb3VudHM6IHVwZGF0ZWRPcmdBY2NvdW50cyB9XG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZE9yZ0FjY291bnRcbiAgfSxcbiAgdXBkYXRlT3JnYW5pemF0aW9uOiAoXG4gICAgb3JnSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPE9yZ2FuaXphdGlvbj4sXG4gICk6IE9yZ2FuaXphdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgbGV0IHVwZGF0ZWRPcmc6IE9yZ2FuaXphdGlvbiB8IHVuZGVmaW5lZFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IG9yZ0luZGV4ID0gc3RhdGUub3JnYW5pemF0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgIChvcmcpID0+IG9yZy5vcmdfaWQgPT09IG9yZ0lkLFxuICAgICAgKVxuICAgICAgaWYgKG9yZ0luZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG4gICAgICBjb25zdCB1cGRhdGVkT3JnYW5pemF0aW9ucyA9IFsuLi5zdGF0ZS5vcmdhbml6YXRpb25zXVxuICAgICAgdXBkYXRlZE9yZ2FuaXphdGlvbnNbb3JnSW5kZXhdID0ge1xuICAgICAgICAuLi51cGRhdGVkT3JnYW5pemF0aW9uc1tvcmdJbmRleF0sXG4gICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICB9XG4gICAgICB1cGRhdGVkT3JnID0gdXBkYXRlZE9yZ2FuaXphdGlvbnNbb3JnSW5kZXhdXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgb3JnYW5pemF0aW9uczogdXBkYXRlZE9yZ2FuaXphdGlvbnMgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVwZGF0ZWRPcmdcbiAgfSxcbiAgZGVsZXRlT3JnYW5pemF0aW9uOiAob3JnSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCBkZWxldGVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBvcmdJbmRleCA9IHN0YXRlLm9yZ2FuaXphdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAob3JnKSA9PiBvcmcub3JnX2lkID09PSBvcmdJZCxcbiAgICAgIClcbiAgICAgIGlmIChvcmdJbmRleCA9PT0gLTEpIHJldHVybiBzdGF0ZVxuXG4gICAgICBjb25zdCB1cGRhdGVkT3JnYW5pemF0aW9ucyA9IFsuLi5zdGF0ZS5vcmdhbml6YXRpb25zXVxuICAgICAgdXBkYXRlZE9yZ2FuaXphdGlvbnMuc3BsaWNlKG9yZ0luZGV4LCAxKVxuXG4gICAgICBjb25zdCB1cGRhdGVkT3JnQWNjb3VudHMgPSBzdGF0ZS5vcmdBY2NvdW50cy5maWx0ZXIoXG4gICAgICAgIChvcmdBY2NvdW50KSA9PiBvcmdBY2NvdW50Lm9yZ19pZCAhPT0gb3JnSWQsXG4gICAgICApXG5cbiAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgb3JnYW5pemF0aW9uczogdXBkYXRlZE9yZ2FuaXphdGlvbnMsXG4gICAgICAgIG9yZ0FjY291bnRzOiB1cGRhdGVkT3JnQWNjb3VudHMsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gZGVsZXRlZFxuICB9LFxuICBkZWxldGVBY2NvdW50OiAoYWNjb3VudElkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5hY2NvdW50cy5maW5kSW5kZXgoXG4gICAgICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRfaWQgPT09IGFjY291bnRJZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc3RhdGUuYWNjb3VudHMuc3BsaWNlKGluZGV4LCAxKVxuICAgICAgICBkZWxldGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfSlcbiAgICByZXR1cm4gZGVsZXRlZFxuICB9LFxuICBhZGRPcmdJbnZpdGF0aW9uOiAoaW52aXRhdGlvbjoge1xuICAgIG9yZ19pZDogc3RyaW5nXG4gICAgaW52aXRlZV9lbWFpbDogc3RyaW5nXG4gICAgaW52aXRlcl9hY2NvdW50X2lkOiBzdHJpbmdcbiAgICBpbnZpdGF0aW9uX3Rva2VuOiBzdHJpbmdcbiAgfSk6IE9yZ0ludml0YXRpb24gPT4ge1xuICAgIGNvbnN0IGV4cGlyZXNBdCA9IG5ldyBEYXRlKClcbiAgICBleHBpcmVzQXQuc2V0RGF0ZShleHBpcmVzQXQuZ2V0RGF0ZSgpICsgNykgLy8gNyBkYXlzIGZyb20gbm93XG5cbiAgICBjb25zdCBuZXdJbnZpdGF0aW9uOiBPcmdJbnZpdGF0aW9uID0ge1xuICAgICAgb3JnX2ludml0YXRpb25faWQ6IGBvcmdfaW52aXRhdGlvbl8ke2dldCgpLmlkQ291bnRlciArIDF9YCxcbiAgICAgIG9yZ19pZDogaW52aXRhdGlvbi5vcmdfaWQsXG4gICAgICBpbnZpdGVlX2VtYWlsOiBpbnZpdGF0aW9uLmludml0ZWVfZW1haWwsXG4gICAgICBpbnZpdGVyX2FjY291bnRfaWQ6IGludml0YXRpb24uaW52aXRlcl9hY2NvdW50X2lkLFxuICAgICAgaW52aXRhdGlvbl90b2tlbjogaW52aXRhdGlvbi5pbnZpdGF0aW9uX3Rva2VuLFxuICAgICAgaXNfbGlua19pbnZpdGU6IGZhbHNlLFxuICAgICAgaXNfcGVuZGluZzogdHJ1ZSxcbiAgICAgIGlzX2FjY2VwdGVkOiBmYWxzZSxcbiAgICAgIGlzX2V4cGlyZWQ6IGZhbHNlLFxuICAgICAgaXNfcmV2b2tlZDogZmFsc2UsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBleHBpcmVzX2F0OiBleHBpcmVzQXQudG9JU09TdHJpbmcoKSxcbiAgICAgIGFjY2VwdGVkX2F0OiBudWxsLFxuICAgICAgYWNjZXB0ZWRfYnlfYWNjb3VudF9pZDogbnVsbCxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIG9yZ0ludml0YXRpb25zOiBbLi4uc3RhdGUub3JnSW52aXRhdGlvbnMsIG5ld0ludml0YXRpb25dLFxuICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdJbnZpdGF0aW9uXG4gIH0sXG4gIGdldE9yZ0ludml0YXRpb25CeVRva2VuOiAodG9rZW46IHN0cmluZyk6IE9yZ0ludml0YXRpb24gfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUub3JnSW52aXRhdGlvbnMuZmluZChcbiAgICAgIChpbnZpdGF0aW9uKSA9PiBpbnZpdGF0aW9uLmludml0YXRpb25fdG9rZW4gPT09IHRva2VuLFxuICAgIClcbiAgfSxcbiAgbGlzdE9yZ0ludml0YXRpb25zOiAob3JnSWQ6IHN0cmluZyk6IE9yZ0ludml0YXRpb25bXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmdJbnZpdGF0aW9ucy5maWx0ZXIoXG4gICAgICAoaW52aXRhdGlvbikgPT4gaW52aXRhdGlvbi5vcmdfaWQgPT09IG9yZ0lkLFxuICAgIClcbiAgfSxcbiAgdXBkYXRlT3JnSW52aXRhdGlvbjogKFxuICAgIGludml0YXRpb25JZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8T3JnSW52aXRhdGlvbj4sXG4gICk6IE9yZ0ludml0YXRpb24gfCB1bmRlZmluZWQgPT4ge1xuICAgIGxldCB1cGRhdGVkSW52aXRhdGlvbjogT3JnSW52aXRhdGlvbiB8IHVuZGVmaW5lZFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gc3RhdGUub3JnSW52aXRhdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAoaW52KSA9PiBpbnYub3JnX2ludml0YXRpb25faWQgPT09IGludml0YXRpb25JZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiBzdGF0ZVxuICAgICAgY29uc3QgdXBkYXRlZEludml0YXRpb25zID0gWy4uLnN0YXRlLm9yZ0ludml0YXRpb25zXVxuICAgICAgdXBkYXRlZEludml0YXRpb25zW2luZGV4XSA9IHtcbiAgICAgICAgLi4udXBkYXRlZEludml0YXRpb25zW2luZGV4XSxcbiAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgIH1cbiAgICAgIHVwZGF0ZWRJbnZpdGF0aW9uID0gdXBkYXRlZEludml0YXRpb25zW2luZGV4XVxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG9yZ0ludml0YXRpb25zOiB1cGRhdGVkSW52aXRhdGlvbnMgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVwZGF0ZWRJbnZpdGF0aW9uXG4gIH0sXG59KSlcbiIsICJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBjb25zdCBlcnJvclNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZXJyb3JfY29kZTogei5zdHJpbmcoKSxcbiAgICBtZXNzYWdlOiB6LnN0cmluZygpLFxuICB9KVxuICAucGFzc3Rocm91Z2goKVxuXG5leHBvcnQgY29uc3QgZXJyb3JSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZXJyb3I6IGVycm9yU2NoZW1hLFxufSlcblxuZXhwb3J0IGNvbnN0IGxvZyA9IHouYW55KClcblxuZXhwb3J0IGNvbnN0IHNuaXBwZXRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCksXG4gIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKSxcbiAgb3duZXJfbmFtZTogei5zdHJpbmcoKSxcbiAgaXNfc3RhcnJlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGNvZGU6IHouc3RyaW5nKCksXG4gIGR0czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjb21waWxlZF9qczogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gIGNpcmN1aXRfanNvbjogei5hcnJheSh6LnJlY29yZCh6LmFueSgpKSkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgdXBkYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgc3RhcnJlZF9hdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHZlcnNpb246IHouc3RyaW5nKCkuZGVmYXVsdChcIjAuMC4xXCIpLFxuICBzdGFyX2NvdW50OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wdWJsaWM6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgdGFnczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIFNuaXBwZXQgPSB6LmluZmVyPHR5cGVvZiBzbmlwcGV0U2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgc2Vzc2lvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgZXhwaXJlc19hdDogei5zdHJpbmcoKSxcbiAgaXNfY2xpX3Nlc3Npb246IHouYm9vbGVhbigpLFxufSlcbmV4cG9ydCB0eXBlIFNlc3Npb24gPSB6LmluZmVyPHR5cGVvZiBzZXNzaW9uU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgbG9naW5QYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBsb2dpbl9wYWdlX2lkOiB6LnN0cmluZygpLFxuICBsb2dpbl9wYWdlX2F1dGhfdG9rZW46IHouc3RyaW5nKCksXG4gIHdhc19sb2dpbl9zdWNjZXNzZnVsOiB6LmJvb2xlYW4oKSxcbiAgaGFzX2JlZW5fdXNlZF90b19jcmVhdGVfc2Vzc2lvbjogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG59KVxuZXhwb3J0IHR5cGUgTG9naW5QYWdlID0gei5pbmZlcjx0eXBlb2YgbG9naW5QYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgc2hpcHBpbmdJbmZvU2NoZW1hID0gei5vYmplY3Qoe1xuICBmaXJzdE5hbWU6IHouc3RyaW5nKCksXG4gIGxhc3ROYW1lOiB6LnN0cmluZygpLFxuICBjb21wYW55TmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhZGRyZXNzOiB6LnN0cmluZygpLFxuICBhcGFydG1lbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY2l0eTogei5zdHJpbmcoKSxcbiAgc3RhdGU6IHouc3RyaW5nKCksXG4gIHppcENvZGU6IHouc3RyaW5nKCksXG4gIGNvdW50cnk6IHouc3RyaW5nKCksXG4gIHBob25lOiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCBjb25zdCBhY2NvdW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gIHRzY2lyY3VpdF9oYW5kbGU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgc2hpcHBpbmdJbmZvOiBzaGlwcGluZ0luZm9TY2hlbWEub3B0aW9uYWwoKSxcbiAgcGVyc29uYWxfb3JnX2lkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGlzX3RzY2lyY3VpdF9zdGFmZjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGVtYWlsOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY3JlYXRlZF9hdDogei5kYXRlKCksXG59KVxuZXhwb3J0IHR5cGUgQWNjb3VudCA9IHouaW5mZXI8dHlwZW9mIGFjY291bnRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBwdWJsaWNBY2NvdW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgdHNjaXJjdWl0X2hhbmRsZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBwZXJzb25hbF9vcmdfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgY3JlYXRlZF9hdDogei5kYXRlKCksXG59KVxuXG5leHBvcnQgdHlwZSBQdWJsaWNBY2NvdW50ID0gei5pbmZlcjx0eXBlb2YgcHVibGljQWNjb3VudFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IG9yZGVyU2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBpc19ydW5uaW5nOiB6LmJvb2xlYW4oKSxcbiAgaXNfc3RhcnRlZDogei5ib29sZWFuKCksXG4gIGlzX2ZpbmlzaGVkOiB6LmJvb2xlYW4oKSxcbiAgZXJyb3I6IGVycm9yU2NoZW1hLm51bGxhYmxlKCksXG4gIGhhc19lcnJvcjogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHN0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgY29tcGxldGVkX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNpcmN1aXRfanNvbjogei5hbnkoKSxcbn0pXG5leHBvcnQgdHlwZSBPcmRlciA9IHouaW5mZXI8dHlwZW9mIG9yZGVyU2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgb3JkZXJGaWxlU2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmRlcl9maWxlX2lkOiB6LnN0cmluZygpLFxuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgaXNfZ2VyYmVyc196aXA6IHouYm9vbGVhbigpLFxuICBjb250ZW50X3R5cGU6IHouc3RyaW5nKCksXG4gIGZvcl9wcm92aWRlcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB1cGxvYWRlZF9hdDogei5zdHJpbmcoKSxcbiAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNvbnRlbnRfYnl0ZXM6IHouaW5zdGFuY2VvZihVaW50OEFycmF5KS5udWxsYWJsZSgpLFxufSlcbmV4cG9ydCB0eXBlIE9yZGVyRmlsZSA9IHouaW5mZXI8dHlwZW9mIG9yZGVyRmlsZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGJ1Z1JlcG9ydFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYnVnX3JlcG9ydF9pZDogei5zdHJpbmcoKS51dWlkKCksXG4gIHJlcG9ydGVyX2FjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIHRleHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgaXNfYXV0b19kZWxldGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgZGVsZXRlX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICBmaWxlX2NvdW50OiB6Lm51bWJlcigpLmludCgpLFxufSlcbmV4cG9ydCB0eXBlIEJ1Z1JlcG9ydCA9IHouaW5mZXI8dHlwZW9mIGJ1Z1JlcG9ydFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGJ1Z1JlcG9ydEZpbGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGJ1Z19yZXBvcnRfZmlsZV9pZDogei5zdHJpbmcoKS51dWlkKCksXG4gIGJ1Z19yZXBvcnRfaWQ6IHouc3RyaW5nKCkudXVpZCgpLFxuICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gIGNvbnRlbnRfbWltZXR5cGU6IHouc3RyaW5nKCksXG4gIGlzX3RleHQ6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjb250ZW50X2J5dGVzOiB6Lmluc3RhbmNlb2YoVWludDhBcnJheSkubnVsbGFibGUoKSxcbn0pXG5leHBvcnQgY29uc3QgYnVnUmVwb3J0RmlsZVJlc3BvbnNlU2NoZW1hID0gYnVnUmVwb3J0RmlsZVNjaGVtYS5vbWl0KHtcbiAgY29udGVudF90ZXh0OiB0cnVlLFxuICBjb250ZW50X2J5dGVzOiB0cnVlLFxufSlcbmV4cG9ydCB0eXBlIEJ1Z1JlcG9ydEZpbGUgPSB6LmluZmVyPHR5cGVvZiBidWdSZXBvcnRGaWxlU2NoZW1hPlxuXG5jb25zdCBzaGlwcGluZ09wdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY2Fycmllcjogei5zdHJpbmcoKSxcbiAgc2VydmljZTogei5zdHJpbmcoKSxcbiAgY29zdDogei5udW1iZXIoKSxcbn0pXG5leHBvcnQgdHlwZSBTaGlwcGluZ09wdGlvbiA9IHouaW5mZXI8dHlwZW9mIHNoaXBwaW5nT3B0aW9uU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcXVvdGVkQ29tcG9uZW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBtYW51ZmFjdHVyZXJfcGFydF9udW1iZXI6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgc3VwcGxpZXJfcGFydF9udW1iZXI6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcXVhbnRpdHk6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgdW5pdF9wcmljZTogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICB0b3RhbF9wcmljZTogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICBhdmFpbGFibGU6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG59KVxuZXhwb3J0IHR5cGUgUXVvdGVkQ29tcG9uZW50ID0gei5pbmZlcjx0eXBlb2YgcXVvdGVkQ29tcG9uZW50U2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgb3JkZXJRdW90ZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgb3JkZXJfcXVvdGVfaWQ6IHouc3RyaW5nKCksXG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGlzX2NvbXBsZXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3Byb2Nlc3Npbmc6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIHZlbmRvcl9uYW1lOiB6LnN0cmluZygpLFxuICBlcnJvcjogZXJyb3JTY2hlbWEubnVsbGFibGUoKSxcbiAgaGFzX2Vycm9yOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgdXBkYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgY29tcGxldGVkX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHF1b3RlZF9jb21wb25lbnRzOiB6LmFycmF5KHF1b3RlZENvbXBvbmVudFNjaGVtYSkubnVsbGFibGUoKSxcbiAgYmFyZV9wY2JfY29zdDogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICBzaGlwcGluZ19vcHRpb25zOiB6LmFycmF5KHNoaXBwaW5nT3B0aW9uU2NoZW1hKSxcbiAgdG90YWxfY29zdF93aXRob3V0X3NoaXBwaW5nOiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG59KVxuZXhwb3J0IHR5cGUgT3JkZXJRdW90ZSA9IHouaW5mZXI8dHlwZW9mIG9yZGVyUXVvdGVTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBhaVJldmlld1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWlfcmV2aWV3X2lkOiB6LnN0cmluZygpLnV1aWQoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGFpX3Jldmlld190ZXh0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHN0YXJ0X3Byb2Nlc3NpbmdfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLFxuICBmaW5pc2hlZF9wcm9jZXNzaW5nX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKSxcbiAgcHJvY2Vzc2luZ19lcnJvcjogei5hbnkoKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGRpc3BsYXlfc3RhdHVzOiB6LmVudW0oW1wicGVuZGluZ1wiLCBcImNvbXBsZXRlZFwiLCBcImZhaWxlZFwiXSksXG59KVxuZXhwb3J0IHR5cGUgQWlSZXZpZXcgPSB6LmluZmVyPHR5cGVvZiBhaVJldmlld1NjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGRhdGFzaGVldFBpbkluZm9ybWF0aW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICBwaW5fbnVtYmVyOiB6LnN0cmluZygpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKSxcbiAgY2FwYWJpbGl0aWVzOiB6LmFycmF5KHouc3RyaW5nKCkpLFxufSlcblxuZXhwb3J0IGNvbnN0IGRhdGFzaGVldFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZGF0YXNoZWV0X2lkOiB6LnN0cmluZygpLFxuICBjaGlwX25hbWU6IHouc3RyaW5nKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHBpbl9pbmZvcm1hdGlvbjogZGF0YXNoZWV0UGluSW5mb3JtYXRpb25TY2hlbWEuYXJyYXkoKS5udWxsYWJsZSgpLFxuICBkYXRhc2hlZXRfcGRmX3VybHM6IHouYXJyYXkoei5zdHJpbmcoKSkubnVsbGFibGUoKSxcbiAgYWlfZGVzY3JpcHRpb246IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbn0pXG5leHBvcnQgdHlwZSBEYXRhc2hlZXQgPSB6LmluZmVyPHR5cGVvZiBkYXRhc2hlZXRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBnaXRodWJJbnN0YWxsYXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGdpdGh1Yl9pbnN0YWxsYXRpb25faWQ6IHouc3RyaW5nKCksXG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIGluc3RhbGxhdGlvbl9pZDogei5zdHJpbmcoKSwgLy8gR2l0SHViIEFwcCBpbnN0YWxsYXRpb24gSURcbiAgZ2l0aHViX3VzZXJuYW1lOiB6LnN0cmluZygpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgaXNfYWN0aXZlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICBhY2Nlc3NfdG9rZW46IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLCAvLyBGb3Igc3RvcmluZyBHaXRIdWIgYWNjZXNzIHRva2VuXG4gIGFjY2Vzc190b2tlbl9leHBpcmVzX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIEdpdGh1Ykluc3RhbGxhdGlvbiA9IHouaW5mZXI8dHlwZW9mIGdpdGh1Ykluc3RhbGxhdGlvblNjaGVtYT5cblxuLy8gVE9ETzogUmVtb3ZlIHRoaXMgc2NoZW1hIGFmdGVyIG1pZ3JhdGlvbiB0byBhY2NvdW50UGFja2FnZXMgaXMgY29tcGxldGVcbmV4cG9ydCBjb25zdCBhY2NvdW50U25pcHBldFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgaGFzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICB1cGRhdGVkX2F0OiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCB0eXBlIEFjY291bnRTbmlwcGV0ID0gei5pbmZlcjx0eXBlb2YgYWNjb3VudFNuaXBwZXRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBhY2NvdW50UGFja2FnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWNjb3VudF9wYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgdXBkYXRlZF9hdDogei5zdHJpbmcoKSxcbn0pXG5leHBvcnQgdHlwZSBBY2NvdW50UGFja2FnZSA9IHouaW5mZXI8dHlwZW9mIGFjY291bnRQYWNrYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZVJlbGVhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgdmVyc2lvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBpc19sb2NrZWQ6IHouYm9vbGVhbigpLFxuICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGNvbW1pdF9zaGE6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDogelxuICAgIC5zdHJpbmcoKVxuICAgIC5kYXRldGltZSgpXG4gICAgLm51bGxhYmxlKClcbiAgICAub3B0aW9uYWwoKSxcbiAgaGFzX3RyYW5zcGlsZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB0cmFuc3BpbGF0aW9uX2Vycm9yOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgZnNfc2hhOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgLy8gQnVpbGQgU3RhdHVzIGFuZCBEaXNwbGF5XG4gIGRpc3BsYXlfc3RhdHVzOiB6XG4gICAgLmVudW0oW1wicGVuZGluZ1wiLCBcImJ1aWxkaW5nXCIsIFwiY29tcGxldGVcIiwgXCJlcnJvclwiXSlcbiAgICAuZGVmYXVsdChcInBlbmRpbmdcIiksXG4gIHRvdGFsX2J1aWxkX2R1cmF0aW9uX21zOiB6Lm51bWJlcigpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcblxuICAvLyBUcmFuc3BpbGF0aW9uIFByb2Nlc3NcbiAgdHJhbnNwaWxhdGlvbl9kaXNwbGF5X3N0YXR1czogelxuICAgIC5lbnVtKFtcInBlbmRpbmdcIiwgXCJidWlsZGluZ1wiLCBcImNvbXBsZXRlXCIsIFwiZXJyb3JcIl0pXG4gICAgLmRlZmF1bHQoXCJwZW5kaW5nXCIpLFxuICB0cmFuc3BpbGF0aW9uX2luX3Byb2dyZXNzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgdHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICB0cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgdHJhbnNwaWxhdGlvbl9sb2dzOiB6LmFycmF5KHouYW55KCkpLmRlZmF1bHQoW10pLFxuICB0cmFuc3BpbGF0aW9uX2lzX3N0YWxlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcblxuICAvLyBVc2VyIENvZGUgSm9iIFByb2Nlc3NcbiAgZXh0X3VzZXJfY29kZV9qb2JfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICB1c2VyX2NvZGVfc3RhcnRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgdXNlcl9jb2RlX2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgdXNlcl9jb2RlX2J1aWxkX2xvZ3M6IHouYXJyYXkoei5hbnkoKSkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICB1c2VyX2NvZGVfZXJyb3I6IGVycm9yU2NoZW1hLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgdXNlcl9jb2RlX2xvZ19zdHJlYW1fdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcblxuICAvLyBDaXJjdWl0IEpTT04gQnVpbGQgUHJvY2Vzc1xuICBjaXJjdWl0X2pzb25fYnVpbGRfZGlzcGxheV9zdGF0dXM6IHpcbiAgICAuZW51bShbXCJwZW5kaW5nXCIsIFwiYnVpbGRpbmdcIiwgXCJjb21wbGV0ZVwiLCBcImVycm9yXCJdKVxuICAgIC5kZWZhdWx0KFwicGVuZGluZ1wiKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiB6LmFycmF5KHouYW55KCkpLmRlZmF1bHQoW10pLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfaXNfc3RhbGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuXG4gIC8vIEltYWdlIEdlbmVyYXRpb24gUHJvY2Vzc1xuICBpbWFnZV9nZW5lcmF0aW9uX2Rpc3BsYXlfc3RhdHVzOiB6XG4gICAgLmVudW0oW1wicGVuZGluZ1wiLCBcImJ1aWxkaW5nXCIsIFwiY29tcGxldGVcIiwgXCJlcnJvclwiXSlcbiAgICAuZGVmYXVsdChcInBlbmRpbmdcIiksXG4gIGltYWdlX2dlbmVyYXRpb25faW5fcHJvZ3Jlc3M6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpbWFnZV9nZW5lcmF0aW9uX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGltYWdlX2dlbmVyYXRpb25fY29tcGxldGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBpbWFnZV9nZW5lcmF0aW9uX2xvZ3M6IHouYXJyYXkoei5hbnkoKSkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBpbWFnZV9nZW5lcmF0aW9uX2lzX3N0YWxlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaW1hZ2VfZ2VuZXJhdGlvbl9lcnJvcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGltYWdlX2dlbmVyYXRpb25fZXJyb3JfbGFzdF91cGRhdGVkX2F0OiB6XG4gICAgLnN0cmluZygpXG4gICAgLmRhdGV0aW1lKClcbiAgICAubnVsbGFibGUoKVxuICAgIC5vcHRpb25hbCgpLFxuXG4gIC8vIEFJIFJldmlld1xuICBhaV9yZXZpZXdfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCkub3B0aW9uYWwoKSxcbiAgYWlfcmV2aWV3X3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGFpX3Jldmlld19jb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGFpX3Jldmlld19lcnJvcjogei5hbnkoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gIGFpX3Jldmlld19sb2dzOiB6LmFycmF5KHouYW55KCkpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgYWlfcmV2aWV3X3JlcXVlc3RlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG5cbiAgLy8gUHJldmlld1xuICBpc19wcl9wcmV2aWV3OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgZ2l0aHViX3ByX251bWJlcjogei5udW1iZXIoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG5cbiAgLy8gTGF0ZXN0IEJ1aWxkIFJlZmVyZW5jZVxuICBsYXRlc3RfcGFja2FnZV9idWlsZF9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGJyYW5jaF9uYW1lOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY29tbWl0X21lc3NhZ2U6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBjb21taXRfYXV0aG9yOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcblxuICAvLyBQcmV2aWV3IGltYWdlcyB1cmxcbiAgcGNiX3ByZXZpZXdfaW1hZ2VfdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgc2NoX3ByZXZpZXdfaW1hZ2VfdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgY2FkX3ByZXZpZXdfaW1hZ2VfdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlUmVsZWFzZSA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VSZWxlYXNlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZUZpbGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNvbnRlbnRfYnl0ZXM6IHouaW5zdGFuY2VvZihCdWZmZXIpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgaXNfcmVsZWFzZV90YXJiYWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBucG1fcGFja19vdXRwdXQ6IHouYW55KCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBpc190ZXh0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IHBhY2thZ2VGaWxlTGl0ZVNjaGVtYSA9IHBhY2thZ2VGaWxlU2NoZW1hLm9taXQoe1xuICBjb250ZW50X3RleHQ6IHRydWUsXG59KVxuZXhwb3J0IHR5cGUgUGFja2FnZUZpbGVMaXRlID0gei5pbmZlcjx0eXBlb2YgcGFja2FnZUZpbGVMaXRlU2NoZW1hPlxuZXhwb3J0IHR5cGUgUGFja2FnZUZpbGUgPSB6LmluZmVyPHR5cGVvZiBwYWNrYWdlRmlsZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHBhY2thZ2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gIGNyZWF0b3JfYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgb3duZXJfb3JnX2lkOiB6LnN0cmluZygpLFxuICBvd25lcl9naXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBvcmdfb3duZXJfdHNjaXJjdWl0X2hhbmRsZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgaXNfc25pcHBldDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2JvYXJkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcGFja2FnZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX21vZGVsOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfZm9vdHByaW50OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkubnVsbGFibGUoKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHVibGljOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQodHJ1ZSksXG4gIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19zb3VyY2VfZnJvbV9naXRodWI6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSkub3B0aW9uYWwoKSxcbiAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsYXRlc3RfdmVyc2lvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHdlYnNpdGU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBzdGFyX2NvdW50OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIGFpX2Rlc2NyaXB0aW9uOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGxhdGVzdF9saWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfZnNfc2hhOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgZGVmYXVsdF92aWV3OiB6XG4gICAgLmVudW0oW1wiZmlsZXNcIiwgXCIzZFwiLCBcInBjYlwiLCBcInNjaGVtYXRpY1wiXSlcbiAgICAuZGVmYXVsdChcImZpbGVzXCIpXG4gICAgLm9wdGlvbmFsKCksXG4gIGFsbG93X3ByX3ByZXZpZXdzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKS5vcHRpb25hbCgpLFxuICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKS5vcHRpb25hbCgpLFxuICBsYXRlc3RfcGNiX3ByZXZpZXdfaW1hZ2VfdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgbGF0ZXN0X3NjaF9wcmV2aWV3X2ltYWdlX3VybDogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGxhdGVzdF9jYWRfcHJldmlld19pbWFnZV91cmw6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIFBhY2thZ2UgPSB6LmluZmVyPHR5cGVvZiBwYWNrYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgamxjcGNiT3JkZXJTdGF0ZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiB6LnN0cmluZygpLFxuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19nZXJiZXJfYW5hbHl6ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19ib21fdXBsb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wbnBfdXBsb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19ib21fcG5wX2FuYWx5emVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfYm9tX3BhcnNpbmdfY29tcGxldGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfY29tcG9uZW50c19hdmFpbGFibGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19kZm1fcmVzdWx0X2dlbmVyYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGFyZV9maWxlc19kb3dubG9hZGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX2ZpbmFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2FkZGVkX3RvX2NhcnQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB1cGxvYWRlZF9nZXJiZXJfbWV0YWRhdGE6IHouYW55KCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBnZXJiZXJfYW5hbHlzaXM6IHouYW55KCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICBhcmVfZ2VyYmVyc19nZW5lcmF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjdXJyZW50X3N0ZXA6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxufSlcbmV4cG9ydCB0eXBlIEpsY3BjYk9yZGVyU3RhdGUgPSB6LmluZmVyPHR5cGVvZiBqbGNwY2JPcmRlclN0YXRlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgamxjcGNiT3JkZXJTdGVwUnVuU2NoZW1hID0gei5vYmplY3Qoe1xuICBqbGNwY2Jfb3JkZXJfc3RlcF9ydW5faWQ6IHouc3RyaW5nKCksXG4gIGlzX3J1bm5pbmc6IHouYm9vbGVhbigpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgc3RlcF9mdW5jdGlvbl9uYW1lOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgZXJyb3JfbWVzc2FnZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG59KVxuZXhwb3J0IHR5cGUgSmxjcGNiT3JkZXJTdGVwUnVuID0gei5pbmZlcjx0eXBlb2YgamxjcGNiT3JkZXJTdGVwUnVuU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZUJ1aWxkU2NoZW1hID0gei5vYmplY3Qoe1xuICBwYWNrYWdlX2J1aWxkX2lkOiB6LnN0cmluZygpLnV1aWQoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIHRyYW5zcGlsYXRpb25faW5fcHJvZ3Jlc3M6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB0cmFuc3BpbGF0aW9uX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICB0cmFuc3BpbGF0aW9uX2xvZ3M6IHouYXJyYXkobG9nKS5udWxsYWJsZSgpLFxuICB0cmFuc3BpbGF0aW9uX2Vycm9yOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiB6LmFycmF5KGxvZykubnVsbGFibGUoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgaW1hZ2VfZ2VuZXJhdGlvbl9pbl9wcm9ncmVzczogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGltYWdlX2dlbmVyYXRpb25fc3RhcnRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgaW1hZ2VfZ2VuZXJhdGlvbl9jb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGltYWdlX2dlbmVyYXRpb25fbG9nczogei5hcnJheShsb2cpLm51bGxhYmxlKCksXG4gIGltYWdlX2dlbmVyYXRpb25fZXJyb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBidWlsZF9pbl9wcm9ncmVzczogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGJ1aWxkX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGJ1aWxkX2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYnVpbGRfZXJyb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBidWlsZF9lcnJvcl9sYXN0X3VwZGF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgcHJldmlld191cmw6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBidWlsZF9sb2dzOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgdXNlcl9jb2RlX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIHVzZXJfY29kZV9jb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIHVzZXJfY29kZV9lcnJvcjogei5hbnkoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIHVzZXJfY29kZV9idWlsZF9sb2dzOiB6LmFycmF5KGxvZykubnVsbGFibGUoKSxcbiAgdXNlcl9jb2RlX2xvZ19zdHJlYW1fdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlQnVpbGQgPSB6LmluZmVyPHR5cGVvZiBwYWNrYWdlQnVpbGRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBvcmdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIG9yZ19pZDogei5zdHJpbmcoKSxcbiAgb3duZXJfYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgaXNfcGVyc29uYWxfb3JnOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICBvcmdfZGlzcGxheV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGF2YXRhcl91cmw6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBnaXRodWJfaGFuZGxlOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHRzY2lyY3VpdF9oYW5kbGU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbn0pXG5leHBvcnQgdHlwZSBPcmdhbml6YXRpb24gPSB6LmluZmVyPHR5cGVvZiBvcmdTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBvcmdBY2NvdW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmdfYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgb3JnX2lkOiB6LnN0cmluZygpLFxuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBpc19vd25lcjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgY2FuX21hbmFnZV9vcmc6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxufSlcbmV4cG9ydCB0eXBlIE9yZ0FjY291bnQgPSB6LmluZmVyPHR5cGVvZiBvcmdBY2NvdW50U2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgb3JnSW52aXRhdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgb3JnX2ludml0YXRpb25faWQ6IHouc3RyaW5nKCksXG4gIG9yZ19pZDogei5zdHJpbmcoKSxcbiAgaW52aXRlZV9lbWFpbDogei5zdHJpbmcoKS5lbWFpbCgpLm51bGxhYmxlKCksXG4gIGludml0ZXJfYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgaW52aXRhdGlvbl90b2tlbjogei5zdHJpbmcoKSxcbiAgaXNfbGlua19pbnZpdGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wZW5kaW5nOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICBpc19hY2NlcHRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2V4cGlyZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19yZXZva2VkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICBleHBpcmVzX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGFjY2VwdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKSxcbiAgYWNjZXB0ZWRfYnlfYWNjb3VudF9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxufSlcbmV4cG9ydCB0eXBlIE9yZ0ludml0YXRpb24gPSB6LmluZmVyPHR5cGVvZiBvcmdJbnZpdGF0aW9uU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgdXNlclBlcm1pc3Npb25zU2NoZW1hID0gei5vYmplY3Qoe1xuICBjYW5fbWFuYWdlX29yZzogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgY2FuX21hbmFnZV9wYWNrYWdlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIFVzZXJQZXJtaXNzaW9ucyA9IHouaW5mZXI8dHlwZW9mIHVzZXJQZXJtaXNzaW9uc1NjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHB1YmxpY09yZ1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgb3JnX2lkOiB6LnN0cmluZygpLCAvLy51dWlkKCksXG4gIG93bmVyX2FjY291bnRfaWQ6IHouc3RyaW5nKCksIC8vLnV1aWQoKSxcbiAgbmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBtZW1iZXJfY291bnQ6IHoubnVtYmVyKCksXG4gIGlzX3BlcnNvbmFsX29yZzogei5ib29sZWFuKCksXG4gIGRpc3BsYXlfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBwYWNrYWdlX2NvdW50OiB6Lm51bWJlcigpLFxuICBhdmF0YXJfdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgZ2l0aHViX2hhbmRsZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB0c2NpcmN1aXRfaGFuZGxlOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHVzZXJfcGVybWlzc2lvbnM6IHVzZXJQZXJtaXNzaW9uc1NjaGVtYS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIFB1YmxpY09yZ1NjaGVtYSA9IHouaW5mZXI8dHlwZW9mIHB1YmxpY09yZ1NjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGRhdGFiYXNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZENvdW50ZXI6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgc25pcHBldHM6IHouYXJyYXkoc25pcHBldFNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHBhY2thZ2VSZWxlYXNlczogei5hcnJheShwYWNrYWdlUmVsZWFzZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHBhY2thZ2VGaWxlczogei5hcnJheShwYWNrYWdlRmlsZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHNlc3Npb25zOiB6LmFycmF5KHNlc3Npb25TY2hlbWEpLmRlZmF1bHQoW10pLFxuICBsb2dpblBhZ2VzOiB6LmFycmF5KGxvZ2luUGFnZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGFjY291bnRzOiB6LmFycmF5KGFjY291bnRTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBwYWNrYWdlczogei5hcnJheShwYWNrYWdlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgb3JkZXJzOiB6LmFycmF5KG9yZGVyU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgb3JnYW5pemF0aW9uczogei5hcnJheShvcmdTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBvcmdBY2NvdW50czogei5hcnJheShvcmdBY2NvdW50U2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgb3JnSW52aXRhdGlvbnM6IHouYXJyYXkob3JnSW52aXRhdGlvblNjaGVtYSkuZGVmYXVsdChbXSksXG4gIG9yZGVyRmlsZXM6IHouYXJyYXkob3JkZXJGaWxlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgYWNjb3VudFNuaXBwZXRzOiB6LmFycmF5KGFjY291bnRTbmlwcGV0U2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgYWNjb3VudFBhY2thZ2VzOiB6LmFycmF5KGFjY291bnRQYWNrYWdlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgamxjcGNiT3JkZXJTdGF0ZTogei5hcnJheShqbGNwY2JPcmRlclN0YXRlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgamxjcGNiT3JkZXJTdGVwUnVuczogei5hcnJheShqbGNwY2JPcmRlclN0ZXBSdW5TY2hlbWEpLmRlZmF1bHQoW10pLFxuICBvcmRlclF1b3Rlczogei5hcnJheShvcmRlclF1b3RlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgYWlSZXZpZXdzOiB6LmFycmF5KGFpUmV2aWV3U2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgZGF0YXNoZWV0czogei5hcnJheShkYXRhc2hlZXRTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBnaXRodWJJbnN0YWxsYXRpb25zOiB6LmFycmF5KGdpdGh1Ykluc3RhbGxhdGlvblNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHBhY2thZ2VCdWlsZHM6IHouYXJyYXkocGFja2FnZUJ1aWxkU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgYnVnUmVwb3J0czogei5hcnJheShidWdSZXBvcnRTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBidWdSZXBvcnRGaWxlczogei5hcnJheShidWdSZXBvcnRGaWxlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbn0pXG5leHBvcnQgdHlwZSBEYXRhYmFzZVNjaGVtYSA9IHouaW5mZXI8dHlwZW9mIGRhdGFiYXNlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgdHNjaXJjdWl0SGFuZGxlU2NoZW1hID0gelxuICAuc3RyaW5nKClcbiAgLm1pbigxKVxuICAubWF4KDQwKVxuICAucmVnZXgoXG4gICAgL15bMC05QS1aYS16XShbMC05QS1aYS16Xy1dKlswLTlBLVphLXpdKT8kLyxcbiAgICBcInRzY2lyY3VpdF9oYW5kbGUgbXVzdCBzdGFydCBhbmQgZW5kIHdpdGggYSBsZXR0ZXIgb3IgbnVtYmVyLCBhbmQgbWF5IG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCB1bmRlcnNjb3JlcywgYW5kIGh5cGhlbnNcIixcbiAgKVxuIiwgImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCB7IGpvaW4sIGRpcm5hbWUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tIFwibm9kZTp1cmxcIlxuaW1wb3J0IHsgRGJDbGllbnQgfSBmcm9tIFwiLi9kYi1jbGllbnRcIlxuaW1wb3J0IHsgbG9hZEF1dG9sb2FkUGFja2FnZXMgfSBmcm9tIFwiLi9hdXRvbG9hZC1kZXYtcGFja2FnZXNcIlxuXG5jb25zdCBfX2Rpcm5hbWUgPSBkaXJuYW1lKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSlcblxuZXhwb3J0IGNvbnN0IHNlZWQgPSAoZGI6IERiQ2xpZW50KSA9PiB7XG4gIGNvbnN0IHsgYWNjb3VudF9pZCB9ID0gZGIuYWRkQWNjb3VudCh7XG4gICAgYWNjb3VudF9pZDogXCJhY2NvdW50LTEyMzRcIixcbiAgICBwZXJzb25hbF9vcmdfaWQ6IFwib3JnLTEyMzRcIixcbiAgICBnaXRodWJfdXNlcm5hbWU6IFwidGVzdHVzZXJcIixcbiAgICB0c2NpcmN1aXRfaGFuZGxlOiBcInRlc3R1c2VyXCIsXG4gICAgZW1haWw6IFwidGVzdHVzZXJAdHNjaXJjdWl0LmNvbVwiLFxuICAgIHNoaXBwaW5nSW5mbzoge1xuICAgICAgZmlyc3ROYW1lOiBcIlRlc3RcIixcbiAgICAgIGxhc3ROYW1lOiBcIlVzZXJcIixcbiAgICAgIGNvbXBhbnlOYW1lOiBcIlRlc3QgQ29tcGFueVwiLFxuICAgICAgYWRkcmVzczogXCIxMjMgVGVzdCBTdFwiLFxuICAgICAgYXBhcnRtZW50OiBcIkFwdCA0QlwiLFxuICAgICAgY2l0eTogXCJUZXN0dmlsbGVcIixcbiAgICAgIHN0YXRlOiBcIk5ZXCIsXG4gICAgICB6aXBDb2RlOiBcIjEwMDAxXCIsXG4gICAgICBjb3VudHJ5OiBcIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYVwiLFxuICAgICAgcGhvbmU6IFwiNTU1LTEyMy00NTY3XCIsXG4gICAgfSxcbiAgfSlcbiAgY29uc3Qgc2V2ZWliYXJBY2MgPSBkYi5hZGRBY2NvdW50KHtcbiAgICBnaXRodWJfdXNlcm5hbWU6IFwic2V2ZWliYXJcIixcbiAgICB0c2NpcmN1aXRfaGFuZGxlOiBcInNldmVpYmFyXCIsXG4gICAgZW1haWw6IFwiZXhhbXBsZUB0c2NpcmN1aXQuY29tXCIsXG4gIH0pXG5cbiAgaWYgKHByb2Nlc3MuZW52LkFVVE9MT0FEX1BBQ0tBR0VTID09PSBcInRydWVcIikge1xuICAgIGxvYWRBdXRvbG9hZFBhY2thZ2VzKGRiKVxuICB9XG5cbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQxIH0gPSBkYi5hZGRTbmlwcGV0KHtcbiAgICBuYW1lOiBcInRlc3R1c2VyL215LXRlc3QtYm9hcmRcIixcbiAgICB1bnNjb3BlZF9uYW1lOiBcIm15LXRlc3QtYm9hcmRcIixcbiAgICBnaXRodWJfcmVwb19mdWxsX25hbWU6IFwidGVzdHVzZXIvbXktdGVzdC1ib2FyZFwiLFxuICAgIG93bmVyX25hbWU6IFwidGVzdHVzZXJcIixcbiAgICBicmFuY2hfbmFtZTogXCJtYWluXCIsXG4gICAgY29tbWl0X21lc3NhZ2U6IFwiQXR0ZW1wdGVkIGJ1aWxkIG9mIGE1NTV0aW1lci1zcXVhcmUtd2F2ZSBwYWNrYWdlXCIsXG4gICAgY29tbWl0X2F1dGhvcjogXCJ0ZXN0dXNlclwiLFxuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogYWNjb3VudF9pZCxcbiAgICBjb2RlOiBgXG5pbXBvcnQgeyBBNTU1VGltZXIgfSBmcm9tIFwiQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyXCJcblxuZXhwb3J0IGRlZmF1bHQgKCkgPT4gKFxuICA8Ym9hcmQgd2lkdGg9XCIxMG1tXCIgaGVpZ2h0PVwiMTBtbVwiPlxuICAgIDxBNTU1VGltZXIgbmFtZT1cIlUxXCIgLz5cbiAgPC9ib2FyZD5cbilgLnRyaW0oKSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHNuaXBwZXRfdHlwZTogXCJib2FyZFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgc2ltcGxlIGJvYXJkIHdpdGggYW4gQTU1NSBUaW1lciBjb21wb25lbnRcIixcbiAgICBjaXJjdWl0X2pzb246IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIG5hbWU6IFwicGluMVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4xXCIsIFwiMVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBuYW1lOiBcInBpbjJcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMlwiLCBcIjJcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgbmFtZTogXCJwaW4zXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjNcIiwgXCIzXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIG5hbWU6IFwicGluNFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW40XCIsIFwiNFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBuYW1lOiBcInBpbjVcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNVwiLCBcIjVcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgbmFtZTogXCJwaW42XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjZcIiwgXCI2XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIG5hbWU6IFwicGluN1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW43XCIsIFwiN1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBuYW1lOiBcInBpbjhcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluOFwiLCBcIjhcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9jb21wb25lbnRcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZnR5cGU6IFwic2ltcGxlX2NoaXBcIixcbiAgICAgICAgbmFtZTogXCJVMVwiLFxuICAgICAgICBzdXBwbGllcl9wYXJ0X251bWJlcnM6IHt9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfY29tcG9uZW50XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNpemU6IHtcbiAgICAgICAgICB3aWR0aDogMS4xLFxuICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgfSxcbiAgICAgICAgcGluX3NwYWNpbmc6IDAuMixcbiAgICAgICAgcG9ydF9sYWJlbHM6IHt9LFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8wXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8xXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8yXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfM1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA1LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF82XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfN1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9jb21wb25lbnRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogOC44MixcbiAgICAgICAgaGVpZ2h0OiA4LjgyLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9ib2FyZFwiLFxuICAgICAgICBwY2JfYm9hcmRfaWQ6IFwicGNiX2JvYXJkXzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB0aGlja25lc3M6IDEuNCxcbiAgICAgICAgbnVtX2xheWVyczogNCxcbiAgICAgICAgd2lkdGg6IDEwLFxuICAgICAgICBoZWlnaHQ6IDEwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjFcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIyXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiM1wiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI0XCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjVcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI2XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiN1wiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiOFwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhcIixcbiAgICAgICAgcGNiX3NpbGtzY3JlZW5fcGF0aF9pZDogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdXRlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0xLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuNzA5NDYzODAzNzkwNTAyNixcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjM4Mzk1OTA0MzgwNjMwNjcsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiA2LjE0MzY0NDc3NTcyMjU1NmUtMTcsXG4gICAgICAgICAgICB5OiAzLjYwNjY2NjY2NjY2NjY2NzQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjM4Mzk1OTA0MzgwNjMwNjc0LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC43MDk0NjM4MDM3OTA1MDI3LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAxLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHN0cm9rZV93aWR0aDogMC4xLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjYWRfY29tcG9uZW50XCIsXG4gICAgICAgIGNhZF9jb21wb25lbnRfaWQ6IFwiY2FkX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAuNyxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZm9vdHByaW50ZXJfc3RyaW5nOiBcImRpcDhcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSlcblxuICBjb25zdCBmaXJzdEJ1aWxkID0gZGIuYWRkUGFja2FnZUJ1aWxkKHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQxLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNTAwMCkudG9JU09TdHJpbmcoKSwgLy8gMTUgc2Vjb25kcyBhZ29cbiAgICB0cmFuc3BpbGF0aW9uX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICB0cmFuc3BpbGF0aW9uX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNTAwMCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE0MDAwKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25fbG9nczogW1xuICAgICAgXCJbSU5GT10gU3RhcnRpbmcgdHJhbnNwaWxhdGlvbi4uLlwiLFxuICAgICAgXCJbSU5GT10gUGFyc2luZyBwYWNrYWdlIGNvZGVcIixcbiAgICAgIFwiW0VSUk9SXSBGYWlsZWQgdG8gcGFyc2UgVHlwZVNjcmlwdCBkZWZpbml0aW9uc1wiLFxuICAgICAgXCJbRVJST1JdIEludmFsaWQgc3ludGF4IGluIGNvbXBvbmVudCBkZWNsYXJhdGlvblwiLFxuICAgIF0sXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjpcbiAgICAgIFwiVHlwZVNjcmlwdCBjb21waWxhdGlvbiBmYWlsZWQ6IFN5bnRheCBlcnJvciBpbiBjb21wb25lbnQgZGVjbGFyYXRpb25cIixcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfaW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9zdGFydGVkX2F0OiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IFtdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogXCJCdWlsZCBjYW5jZWxsZWQgZHVlIHRvIHRyYW5zcGlsYXRpb24gZmFpbHVyZVwiLFxuICAgIGJ1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBidWlsZF9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTUwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfY29tcGxldGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTQwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfZXJyb3I6IFwiQnVpbGQgZmFpbGVkOiBVbmFibGUgdG8gY29tcGxldGUgdHJhbnNwaWxhdGlvbiBzdGVwXCIsXG4gICAgYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTQwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgcHJldmlld191cmw6IG51bGwsXG4gICAgYnVpbGRfbG9nczpcbiAgICAgIFwiQnVpbGQgcHJvY2VzczpcXG5cIiArXG4gICAgICBcIjEuIEVudmlyb25tZW50IHNldHVwIC0gT0tcXG5cIiArXG4gICAgICBcIjIuIERlcGVuZGVuY3kgcmVzb2x1dGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCIzLiBDb2RlIGNvbXBpbGF0aW9uIC0gRkFJTEVEXFxuXCIgK1xuICAgICAgXCJFcnJvcjogSW52YWxpZCBzeW50YXggaW4gY29tcG9uZW50IGRlY2xhcmF0aW9uXFxuXCIgK1xuICAgICAgXCJCdWlsZCB0ZXJtaW5hdGVkIHdpdGggZXJyb3JzXCIsXG4gIH0pXG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlIHJlbGVhc2Ugd2l0aCB0aGUgbGF0ZXN0IGJ1aWxkIElEXG4gIGNvbnN0IHJlbGVhc2UxID0gZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKHBhY2thZ2VSZWxlYXNlSWQxKSFcbiAgZGIudXBkYXRlUGFja2FnZVJlbGVhc2Uoe1xuICAgIC4uLnJlbGVhc2UxLFxuICAgIGxhdGVzdF9wYWNrYWdlX2J1aWxkX2lkOiBmaXJzdEJ1aWxkLnBhY2thZ2VfYnVpbGRfaWQsXG4gIH0pXG5cbiAgLy8gVGVzdCBQYWNrYWdlIGFkZGl0aW9uXG4gIGNvbnN0IHRlc3QyUGFja2FnZSA9IGRiLmFkZFBhY2thZ2Uoe1xuICAgIG5hbWU6IFwidGVzdHVzZXIvdGVzdDItcGFja2FnZVwiLFxuICAgIHVuc2NvcGVkX25hbWU6IFwidGVzdDItcGFja2FnZVwiLFxuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogYWNjb3VudF9pZCxcbiAgICBvd25lcl9vcmdfaWQ6IFwib3JnLTEyMzRcIixcbiAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IFwidGVzdHVzZXJcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBIHRlc3QgcGFja2FnZSBmb3IgZGV2ZWxvcG1lbnRcIixcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgc25pcHBldF90eXBlOiBcInBhY2thZ2VcIixcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBudWxsLFxuICAgIGxhdGVzdF92ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgbGljZW5zZTogXCJNSVRcIixcbiAgICB3ZWJzaXRlOiBcImh0dHBzOi8vdHNjaXJjdWl0LmNvbVwiLFxuICAgIHN0YXJfY291bnQ6IDEwLFxuICAgIGFpX2Rlc2NyaXB0aW9uOlxuICAgICAgXCJBIGNvbXByZWhlbnNpdmUgdGVzdCBwYWNrYWdlIGRlc2lnbmVkIGZvciBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyBwdXJwb3Nlcy4gVGhpcyBwYWNrYWdlIGluY2x1ZGVzIHZhcmlvdXMgY29tcG9uZW50cyBhbmQgdXRpbGl0aWVzIGNvbW1vbmx5IHVzZWQgaW4gY2lyY3VpdCBkZXNpZ24gYW5kIHNpbXVsYXRpb24gd29ya2Zsb3dzLlwiLFxuICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczpcbiAgICAgIFwiSW1wb3J0IHRoZSBwYWNrYWdlIHVzaW5nIGBpbXBvcnQgeyBUZXN0Q29tcG9uZW50IH0gZnJvbSAnQHRzY2kvdGVzdHVzZXIudGVzdDItcGFja2FnZSdgLiBVc2UgdGhlIFRlc3RDb21wb25lbnQgaW4geW91ciBjaXJjdWl0IGRlc2lnbnMgYnkgcHJvdmlkaW5nIHRoZSByZXF1aXJlZCBwcm9wcy4gRXhhbXBsZTogYDxUZXN0Q29tcG9uZW50IG5hbWU9J215LXRlc3QnIHZhbHVlPXs0Mn0gLz5gXCIsXG4gICAgZGVmYXVsdF92aWV3OiBcImZpbGVzXCIsXG4gICAgbGF0ZXN0X3BjYl9wcmV2aWV3X2ltYWdlX3VybDogYC9hcGkvcGFja2FnZXMvaW1hZ2VzL3Rlc3R1c2VyL3Rlc3QyLXBhY2thZ2UvcGNiLnBuZ2AsXG4gICAgbGF0ZXN0X2NhZF9wcmV2aWV3X2ltYWdlX3VybDogYC9hcGkvcGFja2FnZXMvaW1hZ2VzL3Rlc3R1c2VyL3Rlc3QyLXBhY2thZ2UvM2QucG5nYCxcbiAgICBsYXRlc3Rfc2NoX3ByZXZpZXdfaW1hZ2VfdXJsOiBgL2FwaS9wYWNrYWdlcy9pbWFnZXMvdGVzdHVzZXIvdGVzdDItcGFja2FnZS9zY2hlbWF0aWMucG5nYCxcbiAgfSlcbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQ6IHRlc3QyUGFja2FnZVJlbGVhc2VJZCB9ID0gZGIuYWRkUGFja2FnZVJlbGVhc2Uoe1xuICAgIHBhY2thZ2VfaWQ6IHRlc3QyUGFja2FnZS5wYWNrYWdlX2lkLFxuICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgaGFzX3RyYW5zcGlsZWQ6IHRydWUsXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogbnVsbCxcbiAgICBwY2JfcHJldmlld19pbWFnZV91cmw6IGAvYXBpL3BhY2thZ2VzL2ltYWdlcy90ZXN0dXNlci90ZXN0Mi1wYWNrYWdlL3BjYi5wbmdgLFxuICAgIGNhZF9wcmV2aWV3X2ltYWdlX3VybDogYC9hcGkvcGFja2FnZXMvaW1hZ2VzL3Rlc3R1c2VyL3Rlc3QyLXBhY2thZ2UvM2QucG5nYCxcbiAgICBzY2hfcHJldmlld19pbWFnZV91cmw6IGAvYXBpL3BhY2thZ2VzL2ltYWdlcy90ZXN0dXNlci90ZXN0Mi1wYWNrYWdlL3NjaGVtYXRpYy5wbmdgLFxuICB9KVxuICBkYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB0ZXN0MlBhY2thZ2VSZWxlYXNlSWQsXG4gICAgZmlsZV9wYXRoOiBcImluZGV4LnRzeFwiLFxuICAgIGNvbnRlbnRfdGV4dDogYFxuZXhwb3J0IGNvbnN0IFRlc3RDb21wb25lbnQgPSAoeyBuYW1lIH06IHsgbmFtZTogc3RyaW5nIH0pID0+IChcbiAgPHJlc2lzdG9yIG5hbWU9e25hbWV9IHJlc2lzdGFuY2U9XCIxMGtcIiAvPlxuKVxuYC50cmltKCksXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGlzX3RleHQ6IHRydWUsXG4gIH0pXG4gIGRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHRlc3QyUGFja2FnZVJlbGVhc2VJZCxcbiAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgY29udGVudF90ZXh0OiBgW1xuICB7XG4gICAgXCJ0eXBlXCI6IFwic291cmNlX3Byb2plY3RfbWV0YWRhdGFcIixcbiAgICBcInNvdXJjZV9wcm9qZWN0X21ldGFkYXRhX2lkXCI6IFwic291cmNlX3Byb2plY3RfbWV0YWRhdGFfMFwiLFxuICAgIFwic29mdHdhcmVfdXNlZF9zdHJpbmdcIjogXCJAdHNjaXJjdWl0L2NvcmVAMC4wLjgxM1wiXG4gIH0sXG4gIHtcbiAgICBcInR5cGVcIjogXCJzb3VyY2VfZ3JvdXBcIixcbiAgICBcInNvdXJjZV9ncm91cF9pZFwiOiBcInNvdXJjZV9ncm91cF8wXCIsXG4gICAgXCJpc19zdWJjaXJjdWl0XCI6IHRydWUsXG4gICAgXCJ3YXNfYXV0b21hdGljYWxseV9uYW1lZFwiOiB0cnVlLFxuICAgIFwic3ViY2lyY3VpdF9pZFwiOiBcInN1YmNpcmN1aXRfc291cmNlX2dyb3VwXzBcIlxuICB9LFxuICB7XG4gICAgXCJ0eXBlXCI6IFwic291cmNlX2JvYXJkXCIsXG4gICAgXCJzb3VyY2VfYm9hcmRfaWRcIjogXCJzb3VyY2VfYm9hcmRfMFwiLFxuICAgIFwic291cmNlX2dyb3VwX2lkXCI6IFwic291cmNlX2dyb3VwXzBcIlxuICB9LFxuICB7XG4gICAgXCJ0eXBlXCI6IFwic2NoZW1hdGljX2dyb3VwXCIsXG4gICAgXCJzY2hlbWF0aWNfZ3JvdXBfaWRcIjogXCJzY2hlbWF0aWNfZ3JvdXBfMFwiLFxuICAgIFwiaXNfc3ViY2lyY3VpdFwiOiB0cnVlLFxuICAgIFwic3ViY2lyY3VpdF9pZFwiOiBcInN1YmNpcmN1aXRfc291cmNlX2dyb3VwXzBcIixcbiAgICBcIm5hbWVcIjogXCJ1bm5hbWVkX2JvYXJkMVwiLFxuICAgIFwiY2VudGVyXCI6IHtcbiAgICAgIFwieFwiOiAwLFxuICAgICAgXCJ5XCI6IDBcbiAgICB9LFxuICAgIFwid2lkdGhcIjogMCxcbiAgICBcImhlaWdodFwiOiAwLFxuICAgIFwic2NoZW1hdGljX2NvbXBvbmVudF9pZHNcIjogW10sXG4gICAgXCJzb3VyY2VfZ3JvdXBfaWRcIjogXCJzb3VyY2VfZ3JvdXBfMFwiXG4gIH0sXG4gIHtcbiAgICBcInR5cGVcIjogXCJwY2JfYm9hcmRcIixcbiAgICBcInBjYl9ib2FyZF9pZFwiOiBcInBjYl9ib2FyZF8wXCIsXG4gICAgXCJjZW50ZXJcIjoge1xuICAgICAgXCJ4XCI6IDAsXG4gICAgICBcInlcIjogMFxuICAgIH0sXG4gICAgXCJ0aGlja25lc3NcIjogMS40LFxuICAgIFwibnVtX2xheWVyc1wiOiAyLFxuICAgIFwid2lkdGhcIjogMTAsXG4gICAgXCJoZWlnaHRcIjogMTAsXG4gICAgXCJtYXRlcmlhbFwiOiBcImZyNFwiXG4gIH1cbl1gLnRyaW0oKSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfdGV4dDogdHJ1ZSxcbiAgfSlcbiAgZGIuYWRkUGFja2FnZUJ1aWxkKHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHRlc3QyUGFja2FnZVJlbGVhc2VJZCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdHJhbnNwaWxhdGlvbl9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgdHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gNTAwMCkudG9JU09TdHJpbmcoKSwgLy8gU3RhcnRlZCA1IHNlY29uZHMgYWdvXG4gICAgdHJhbnNwaWxhdGlvbl9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAzMDAwKS50b0lTT1N0cmluZygpLCAvLyBDb21wbGV0ZWQgMyBzZWNvbmRzIGFnb1xuICAgIHRyYW5zcGlsYXRpb25fbG9nczogW1xuICAgICAgXCJbSU5GT10gU3RhcnRpbmcgdHJhbnNwaWxhdGlvbi4uLlwiLFxuICAgICAgXCJbSU5GT10gUGFyc2luZyBwYWNrYWdlIGNvZGVcIixcbiAgICAgIFwiW0lORk9dIEdlbmVyYXRpbmcgVHlwZVNjcmlwdCBkZWZpbml0aW9uc1wiLFxuICAgICAgXCJbSU5GT10gQ29tcGlsaW5nIHRvIEphdmFTY3JpcHRcIixcbiAgICAgIFwiW1NVQ0NFU1NdIFRyYW5zcGlsYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICAgIF0sXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogbnVsbCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfaW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMzAwMCkudG9JU09TdHJpbmcoKSwgLy8gU3RhcnRlZCBhZnRlciB0cmFuc3BpbGF0aW9uXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDEwMDApLnRvSVNPU3RyaW5nKCksIC8vIENvbXBsZXRlZCAxIHNlY29uZCBhZ29cbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfbG9nczogW1xuICAgICAgXCJbSU5GT10gU3RhcnRpbmcgY2lyY3VpdCBKU09OIGJ1aWxkLi4uXCIsXG4gICAgICBcIltJTkZPXSBBbmFseXppbmcgY29tcG9uZW50IHN0cnVjdHVyZVwiLFxuICAgICAgXCJbSU5GT10gR2VuZXJhdGluZyBwb3J0IGNvbmZpZ3VyYXRpb25zXCIsXG4gICAgICBcIltJTkZPXSBWYWxpZGF0aW5nIGNpcmN1aXQgY29ubmVjdGlvbnNcIixcbiAgICAgIFwiW1NVQ0NFU1NdIENpcmN1aXQgSlNPTiBidWlsZCBjb21wbGV0ZWRcIixcbiAgICBdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogbnVsbCxcbiAgICBidWlsZF9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDEwMDAwKS50b0lTT1N0cmluZygpLCAvLyBTdGFydGVkIDEwIHNlY29uZHMgYWdvXG4gICAgYnVpbGRfY29tcGxldGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksIC8vIEp1c3QgY29tcGxldGVkXG4gICAgYnVpbGRfZXJyb3I6IG51bGwsXG4gICAgYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfbG9nczpcbiAgICAgIFwiQnVpbGQgcHJvY2VzczpcXG5cIiArXG4gICAgICBcIjEuIEVudmlyb25tZW50IHNldHVwIC0gT0tcXG5cIiArXG4gICAgICBcIjIuIERlcGVuZGVuY3kgcmVzb2x1dGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCIzLiBDb2RlIGNvbXBpbGF0aW9uIC0gT0tcXG5cIiArXG4gICAgICBcIjQuIENpcmN1aXQgdmFsaWRhdGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCI1LiBQYWNrYWdlIGFzc2VtYmx5IC0gT0tcXG5cIiArXG4gICAgICBcIkJ1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgfSlcblxuICAvLyBEZWZpbmUgdGhlIEB0c2NpL3NldmVpYmFyLmE1NTV0aW1lciBwYWNrYWdlXG4gIGRiLmFkZFNuaXBwZXQoe1xuICAgIG5hbWU6IFwic2V2ZWliYXIvYTU1NXRpbWVyXCIsXG4gICAgdW5zY29wZWRfbmFtZTogXCJhNTU1dGltZXJcIixcbiAgICBvd25lcl9uYW1lOiBcInNldmVpYmFyXCIsXG4gICAgY29kZTogYFxuZXhwb3J0IGNvbnN0IEE1NTVUaW1lciA9ICh7IG5hbWUgfTogeyBuYW1lOiBzdHJpbmcgfSkgPT4gKFxuICA8Y2hpcCBuYW1lPXtuYW1lfSBmb290cHJpbnQ9XCJkaXA4XCIgLz5cbilcbmAudHJpbSgpLFxuICAgIGR0czogYFxuZGVjbGFyZSBtb2R1bGUgXCJAdHNjaS9zZXZlaWJhci5hNTU1dGltZXJcIiB7XG4gIGV4cG9ydCBjb25zdCBBNTU1VGltZXI6ICh7IG5hbWUgfToge1xuICAgIG5hbWU6IHN0cmluZztcbiAgfSkgPT4gYW55O1xufVxuYC50cmltKCksXG4gICAgY29tcGlsZWRfanM6IGBcblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5BNTU1VGltZXIgPSB2b2lkIDA7XG5jb25zdCBBNTU1VGltZXIgPSAoe1xuICBuYW1lXG59KSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImNoaXBcIiwge1xuICBuYW1lOiBuYW1lLFxuICBmb290cHJpbnQ6IFwiZGlwOFwiXG59KTtcbmV4cG9ydHMuQTU1NVRpbWVyID0gQTU1NVRpbWVyO1xuICAgIGAudHJpbSgpLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc25pcHBldF90eXBlOiBcInBhY2thZ2VcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBIHNpbXBsZSBwYWNrYWdlIHdpdGggYW4gQTU1NSBUaW1lciBjb21wb25lbnRcIixcbiAgICBjaXJjdWl0X2pzb246IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIG5hbWU6IFwicGluMVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4xXCIsIFwiMVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBuYW1lOiBcInBpbjJcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMlwiLCBcIjJcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgbmFtZTogXCJwaW4zXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjNcIiwgXCIzXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIG5hbWU6IFwicGluNFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW40XCIsIFwiNFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBuYW1lOiBcInBpbjVcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNVwiLCBcIjVcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgbmFtZTogXCJwaW42XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjZcIiwgXCI2XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIG5hbWU6IFwicGluN1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW43XCIsIFwiN1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBuYW1lOiBcInBpbjhcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluOFwiLCBcIjhcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9jb21wb25lbnRcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZnR5cGU6IFwic2ltcGxlX2NoaXBcIixcbiAgICAgICAgbmFtZTogXCJVMVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfY29tcG9uZW50XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNpemU6IHtcbiAgICAgICAgICB3aWR0aDogMS4xLFxuICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgfSxcbiAgICAgICAgcGluX3NwYWNpbmc6IDAuMixcbiAgICAgICAgcG9ydF9sYWJlbHM6IHt9LFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8wXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8xXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8yXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfM1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA1LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF82XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfN1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9jb21wb25lbnRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogOC44MixcbiAgICAgICAgaGVpZ2h0OiA4LjgyLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9ib2FyZFwiLFxuICAgICAgICBwY2JfYm9hcmRfaWQ6IFwicGNiX2JvYXJkXzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB0aGlja25lc3M6IDEuNCxcbiAgICAgICAgbnVtX2xheWVyczogNCxcbiAgICAgICAgd2lkdGg6IDUwLFxuICAgICAgICBoZWlnaHQ6IDUwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjFcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIyXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiM1wiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI0XCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjVcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI2XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiN1wiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiOFwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhcIixcbiAgICAgICAgcGNiX3NpbGtzY3JlZW5fcGF0aF9pZDogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdXRlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0xLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuNzA5NDYzODAzNzkwNTAyNixcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjM4Mzk1OTA0MzgwNjMwNjcsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiA2LjE0MzY0NDc3NTcyMjU1NmUtMTcsXG4gICAgICAgICAgICB5OiAzLjYwNjY2NjY2NjY2NjY2NzQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjM4Mzk1OTA0MzgwNjMwNjc0LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC43MDk0NjM4MDM3OTA1MDI3LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAxLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHN0cm9rZV93aWR0aDogMC4xLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjYWRfY29tcG9uZW50XCIsXG4gICAgICAgIGNhZF9jb21wb25lbnRfaWQ6IFwiY2FkX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAuNyxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZm9vdHByaW50ZXJfc3RyaW5nOiBcImRpcDhcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSlcblxuICAvLyBBZGQgYSBzbmlwcGV0IHRoYXQgb3V0cHV0cyBhIHNxdWFyZSB3YXZlZm9ybSB1c2luZyB0aGUgYTU1NXRpbWVyXG5cbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQyIH0gPSBkYi5hZGRTbmlwcGV0KHtcbiAgICBuYW1lOiBcInRlc3R1c2VyL2E1NTV0aW1lci1zcXVhcmUtd2F2ZVwiLFxuICAgIHVuc2NvcGVkX25hbWU6IFwiYTU1NXRpbWVyLXNxdWFyZS13YXZlXCIsXG4gICAgb3duZXJfbmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIGJyYW5jaF9uYW1lOiBcIm1haW5cIixcbiAgICBjb21taXRfbWVzc2FnZTogXCJBdHRlbXB0ZWQgYnVpbGQgb2YgYTU1NXRpbWVyLXNxdWFyZS13YXZlIHBhY2thZ2VcIixcbiAgICBjb21taXRfYXV0aG9yOiBcInRlc3R1c2VyXCIsXG4gICAgY3JlYXRvcl9hY2NvdW50X2lkOiBhY2NvdW50X2lkLFxuICAgIGNvZGU6IGBcbmltcG9ydCB7IEE1NTVUaW1lciB9IGZyb20gXCJAdHNjaS9zZXZlaWJhci5hNTU1dGltZXJcIlxuXG5leHBvcnQgY29uc3QgU3F1YXJlV2F2ZU1vZHVsZSA9ICgpID0+IChcbiAgPEE1NTVUaW1lciBuYW1lPVwiVTFcIiAvPlxuKVxuYC50cmltKCksXG4gICAgZHRzOiAnZXhwb3J0IGRlY2xhcmUgY29uc3QgU3F1YXJlV2F2ZU1vZHVsZTogKCkgPT4gaW1wb3J0KFwicmVhY3QvanN4LXJ1bnRpbWVcIikuSlNYLkVsZW1lbnQ7XFxuJyxcbiAgICBjb21waWxlZF9qczpcbiAgICAgICdcInVzZSBzdHJpY3RcIjtcXG5cXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcXG4gIHZhbHVlOiB0cnVlXFxufSk7XFxuZXhwb3J0cy5TcXVhcmVXYXZlTW9kdWxlID0gdm9pZCAwO1xcbnZhciBfc2V2ZWliYXIgPSByZXF1aXJlKFwiQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyXCIpO1xcbmNvbnN0IFNxdWFyZVdhdmVNb2R1bGUgPSAoKSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfc2V2ZWliYXIuQTU1NVRpbWVyLCB7XFxuICBuYW1lOiBcIlUxXCJcXG59KTtcXG5leHBvcnRzLlNxdWFyZVdhdmVNb2R1bGUgPSBTcXVhcmVXYXZlTW9kdWxlOycsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogXCJ0ZXN0dXNlci90ZXN0XCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIkEgc2ltcGxlIHBhY2thZ2UgdGhhdCBvdXRwdXRzIGEgc3F1YXJlIHdhdmVmb3JtIHVzaW5nIHRoZSBhNTU1dGltZXJcIixcbiAgICBjaXJjdWl0X2pzb246IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIG5hbWU6IFwicGluMVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4xXCIsIFwiMVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBuYW1lOiBcInBpbjJcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMlwiLCBcIjJcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgbmFtZTogXCJwaW4zXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjNcIiwgXCIzXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIG5hbWU6IFwicGluNFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW40XCIsIFwiNFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBuYW1lOiBcInBpbjVcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNVwiLCBcIjVcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgbmFtZTogXCJwaW42XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjZcIiwgXCI2XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIG5hbWU6IFwicGluN1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW43XCIsIFwiN1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBuYW1lOiBcInBpbjhcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluOFwiLCBcIjhcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9jb21wb25lbnRcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZnR5cGU6IFwic2ltcGxlX2NoaXBcIixcbiAgICAgICAgbmFtZTogXCJVMVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfY29tcG9uZW50XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNpemU6IHtcbiAgICAgICAgICB3aWR0aDogMS4xLFxuICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgfSxcbiAgICAgICAgcGluX3NwYWNpbmc6IDAuMixcbiAgICAgICAgcG9ydF9sYWJlbHM6IHt9LFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8wXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8xXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8yXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfM1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA1LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF82XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfN1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9jb21wb25lbnRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogOC44MixcbiAgICAgICAgaGVpZ2h0OiA4LjgyLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9ib2FyZFwiLFxuICAgICAgICBwY2JfYm9hcmRfaWQ6IFwicGNiX2JvYXJkXzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB0aGlja25lc3M6IDEuNCxcbiAgICAgICAgbnVtX2xheWVyczogNCxcbiAgICAgICAgd2lkdGg6IDUwLFxuICAgICAgICBoZWlnaHQ6IDUwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjFcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIyXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiM1wiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI0XCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjVcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI2XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiN1wiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiOFwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhcIixcbiAgICAgICAgcGNiX3NpbGtzY3JlZW5fcGF0aF9pZDogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdXRlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0xLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuNzA5NDYzODAzNzkwNTAyNixcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjM4Mzk1OTA0MzgwNjMwNjcsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiA2LjE0MzY0NDc3NTcyMjU1NmUtMTcsXG4gICAgICAgICAgICB5OiAzLjYwNjY2NjY2NjY2NjY2NzQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjM4Mzk1OTA0MzgwNjMwNjc0LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC43MDk0NjM4MDM3OTA1MDI3LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAxLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHN0cm9rZV93aWR0aDogMC4xLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjYWRfY29tcG9uZW50XCIsXG4gICAgICAgIGNhZF9jb21wb25lbnRfaWQ6IFwiY2FkX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAuNyxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZm9vdHByaW50ZXJfc3RyaW5nOiBcImRpcDhcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSlcblxuICAvLyBBZGQgZmFpbGVkIGJ1aWxkIGZpcnN0XG4gIGNvbnN0IGZhaWxlZEJ1aWxkID0gZGIuYWRkUGFja2FnZUJ1aWxkKHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQyLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNTAwMCkudG9JU09TdHJpbmcoKSwgLy8gMTUgc2Vjb25kcyBhZ29cbiAgICB0cmFuc3BpbGF0aW9uX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICB0cmFuc3BpbGF0aW9uX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNTAwMCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE0MDAwKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25fbG9nczogW1xuICAgICAgXCJbSU5GT10gU3RhcnRpbmcgdHJhbnNwaWxhdGlvbi4uLlwiLFxuICAgICAgXCJbSU5GT10gUGFyc2luZyBwYWNrYWdlIGNvZGVcIixcbiAgICAgIFwiW0VSUk9SXSBGYWlsZWQgdG8gcGFyc2UgVHlwZVNjcmlwdCBkZWZpbml0aW9uc1wiLFxuICAgICAgXCJbRVJST1JdIEludmFsaWQgc3ludGF4IGluIGNvbXBvbmVudCBkZWNsYXJhdGlvblwiLFxuICAgIF0sXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjpcbiAgICAgIFwiVHlwZVNjcmlwdCBjb21waWxhdGlvbiBmYWlsZWQ6IFN5bnRheCBlcnJvciBpbiBjb21wb25lbnQgZGVjbGFyYXRpb25cIixcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfaW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9zdGFydGVkX2F0OiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IFtdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogXCJCdWlsZCBjYW5jZWxsZWQgZHVlIHRvIHRyYW5zcGlsYXRpb24gZmFpbHVyZVwiLFxuICAgIGJ1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBidWlsZF9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTUwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfY29tcGxldGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTQwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfZXJyb3I6IFwiQnVpbGQgZmFpbGVkOiBVbmFibGUgdG8gY29tcGxldGUgdHJhbnNwaWxhdGlvbiBzdGVwXCIsXG4gICAgYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTQwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgcHJldmlld191cmw6IG51bGwsXG4gICAgYnVpbGRfbG9nczpcbiAgICAgIFwiQnVpbGQgcHJvY2VzczpcXG5cIiArXG4gICAgICBcIjEuIEVudmlyb25tZW50IHNldHVwIC0gT0tcXG5cIiArXG4gICAgICBcIjIuIERlcGVuZGVuY3kgcmVzb2x1dGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCIzLiBDb2RlIGNvbXBpbGF0aW9uIC0gRkFJTEVEXFxuXCIgK1xuICAgICAgXCJFcnJvcjogSW52YWxpZCBzeW50YXggaW4gY29tcG9uZW50IGRlY2xhcmF0aW9uXFxuXCIgK1xuICAgICAgXCJCdWlsZCB0ZXJtaW5hdGVkIHdpdGggZXJyb3JzXCIsXG4gIH0pXG5cbiAgLy8gQWRkIHN1Y2Nlc3NmdWwgYnVpbGRcbiAgY29uc3Qgc3VjY2Vzc2Z1bEJ1aWxkID0gZGIuYWRkUGFja2FnZUJ1aWxkKHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQyLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICB0cmFuc3BpbGF0aW9uX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSA1MDAwKS50b0lTT1N0cmluZygpLCAvLyBTdGFydGVkIDUgc2Vjb25kcyBhZ29cbiAgICB0cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDMwMDApLnRvSVNPU3RyaW5nKCksIC8vIENvbXBsZXRlZCAzIHNlY29uZHMgYWdvXG4gICAgdHJhbnNwaWxhdGlvbl9sb2dzOiBbXG4gICAgICBcIltJTkZPXSBTdGFydGluZyB0cmFuc3BpbGF0aW9uLi4uXCIsXG4gICAgICBcIltJTkZPXSBQYXJzaW5nIHBhY2thZ2UgY29kZVwiLFxuICAgICAgXCJbSU5GT10gR2VuZXJhdGluZyBUeXBlU2NyaXB0IGRlZmluaXRpb25zXCIsXG4gICAgICBcIltJTkZPXSBDb21waWxpbmcgdG8gSmF2YVNjcmlwdFwiLFxuICAgICAgXCJbU1VDQ0VTU10gVHJhbnNwaWxhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gICAgXSxcbiAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAzMDAwKS50b0lTT1N0cmluZygpLCAvLyBTdGFydGVkIGFmdGVyIHRyYW5zcGlsYXRpb25cbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfY29tcGxldGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTAwMCkudG9JU09TdHJpbmcoKSwgLy8gQ29tcGxldGVkIDEgc2Vjb25kIGFnb1xuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBbXG4gICAgICBcIltJTkZPXSBTdGFydGluZyBjaXJjdWl0IEpTT04gYnVpbGQuLi5cIixcbiAgICAgIFwiW0lORk9dIEFuYWx5emluZyBjb21wb25lbnQgc3RydWN0dXJlXCIsXG4gICAgICBcIltJTkZPXSBHZW5lcmF0aW5nIHBvcnQgY29uZmlndXJhdGlvbnNcIixcbiAgICAgIFwiW0lORk9dIFZhbGlkYXRpbmcgY2lyY3VpdCBjb25uZWN0aW9uc1wiLFxuICAgICAgXCJbU1VDQ0VTU10gQ2lyY3VpdCBKU09OIGJ1aWxkIGNvbXBsZXRlZFwiLFxuICAgIF0sXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yOiBudWxsLFxuICAgIGJ1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBidWlsZF9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTAwMDApLnRvSVNPU3RyaW5nKCksIC8vIFN0YXJ0ZWQgMTAgc2Vjb25kcyBhZ29cbiAgICBidWlsZF9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwgLy8gSnVzdCBjb21wbGV0ZWRcbiAgICBidWlsZF9lcnJvcjogbnVsbCxcbiAgICBidWlsZF9lcnJvcl9sYXN0X3VwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBwcmV2aWV3X3VybDogXCJodHRwOi8vbG9jYWxob3N0OjMwMDAvcHJldmlldy9wYWNrYWdlX2J1aWxkXzFcIixcbiAgICBidWlsZF9sb2dzOlxuICAgICAgXCJCdWlsZCBwcm9jZXNzOlxcblwiICtcbiAgICAgIFwiMS4gRW52aXJvbm1lbnQgc2V0dXAgLSBPS1xcblwiICtcbiAgICAgIFwiMi4gRGVwZW5kZW5jeSByZXNvbHV0aW9uIC0gT0tcXG5cIiArXG4gICAgICBcIjMuIENvZGUgY29tcGlsYXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiNC4gQ2lyY3VpdCB2YWxpZGF0aW9uIC0gT0tcXG5cIiArXG4gICAgICBcIjUuIFBhY2thZ2UgYXNzZW1ibHkgLSBPS1xcblwiICtcbiAgICAgIFwiQnVpbGQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICB9KVxuXG4gIC8vIFVwZGF0ZSB0aGUgcGFja2FnZSByZWxlYXNlIHdpdGggdGhlIGxhdGVzdCAoc3VjY2Vzc2Z1bCkgYnVpbGQgSURcbiAgY29uc3QgcmVsZWFzZTIgPSBkYi5nZXRQYWNrYWdlUmVsZWFzZUJ5SWQocGFja2FnZVJlbGVhc2VJZDIpIVxuICBkYi51cGRhdGVQYWNrYWdlUmVsZWFzZSh7XG4gICAgLi4ucmVsZWFzZTIsXG4gICAgbGF0ZXN0X3BhY2thZ2VfYnVpbGRfaWQ6IHN1Y2Nlc3NmdWxCdWlsZC5wYWNrYWdlX2J1aWxkX2lkLFxuICB9KVxuXG4gIGRiLmFkZE9yZGVyKHtcbiAgICBhY2NvdW50X2lkLFxuICAgIGlzX3J1bm5pbmc6IGZhbHNlLFxuICAgIGlzX3N0YXJ0ZWQ6IGZhbHNlLFxuICAgIGlzX2ZpbmlzaGVkOiBmYWxzZSxcbiAgICBlcnJvcjogbnVsbCxcbiAgICBoYXNfZXJyb3I6IGZhbHNlLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9jb21wb25lbnRcIixcbiAgICAgICAgZnR5cGU6IFwic2ltcGxlX3Jlc2lzdG9yXCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8xXCIsXG4gICAgICAgIG5hbWU6IFwiUjFcIixcbiAgICAgICAgcmVzaXN0YW5lOiBcIjFrXCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHN0YXJ0ZWRfYXQ6IG51bGwsXG4gICAgY29tcGxldGVkX2F0OiBudWxsLFxuICB9KVxuXG4gIGNvbnN0IHRlc3RPcmcgPSBkYi5hZGRPcmdhbml6YXRpb24oe1xuICAgIG9yZ19kaXNwbGF5X25hbWU6IFwiVGVzdCBPcmdhbml6YXRpb25cIixcbiAgICB0c2NpcmN1aXRfaGFuZGxlOiBcInRlc3Qtb3JnYW5pemF0aW9uXCIsXG4gICAgZ2l0aHViX2hhbmRsZTogXCJ0c2NpcmN1aXRcIixcbiAgICBvd25lcl9hY2NvdW50X2lkOiBhY2NvdW50X2lkLFxuICB9KVxuXG4gIC8vIEFkZCBvcmcgbWVtYmVyXG4gIGRiLmFkZE9yZ2FuaXphdGlvbkFjY291bnQoe1xuICAgIG9yZ19pZDogdGVzdE9yZy5vcmdfaWQsXG4gICAgYWNjb3VudF9pZDogYWNjb3VudF9pZCxcbiAgICBpc19vd25lcjogdHJ1ZSxcbiAgfSlcblxuICAvLyBUZXN0ICBPcmcgUGFja2FnZSBhZGRpdGlvblxuICBjb25zdCB0ZXN0T3JnUGFja2FnZSA9IGRiLmFkZFBhY2thZ2Uoe1xuICAgIG5hbWU6IFwidGVzdC1vcmdhbml6YXRpb24vdGVzdC1vcmctcGFja2FnZVwiLFxuICAgIHVuc2NvcGVkX25hbWU6IFwidGVzdC1vcmctcGFja2FnZVwiLFxuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogYWNjb3VudF9pZCxcbiAgICBvd25lcl9vcmdfaWQ6IHRlc3RPcmcub3JnX2lkLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogdGVzdE9yZy5naXRodWJfaGFuZGxlLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgdGVzdCBwYWNrYWdlIGZvciBkZXZlbG9wbWVudFwiLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IFwiMC4wLjFcIixcbiAgICBsaWNlbnNlOiBcIk1JVFwiLFxuICAgIHdlYnNpdGU6IFwiaHR0cHM6Ly90c2NpcmN1aXQuY29tXCIsXG4gICAgc3Rhcl9jb3VudDogMTAsXG4gICAgYWlfZGVzY3JpcHRpb246XG4gICAgICBcIkEgY29tcHJlaGVuc2l2ZSB0ZXN0IHBhY2thZ2UgZGVzaWduZWQgZm9yIGRldmVsb3BtZW50IGFuZCB0ZXN0aW5nIHB1cnBvc2VzLiBUaGlzIHBhY2thZ2UgaW5jbHVkZXMgdmFyaW91cyBjb21wb25lbnRzIGFuZCB1dGlsaXRpZXMgY29tbW9ubHkgdXNlZCBpbiBjaXJjdWl0IGRlc2lnbiBhbmQgc2ltdWxhdGlvbiB3b3JrZmxvd3MuXCIsXG4gICAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOlxuICAgICAgXCJJbXBvcnQgdGhlIHBhY2thZ2UgdXNpbmcgYGltcG9ydCB7IFRlc3RDb21wb25lbnQgfSBmcm9tICdAdHNjaS90ZXN0LW9yZ2FuaXphdGlvbi50ZXN0LW9yZy1wYWNrYWdlJ2AuIFVzZSB0aGUgVGVzdENvbXBvbmVudCBpbiB5b3VyIGNpcmN1aXQgZGVzaWducyBieSBwcm92aWRpbmcgdGhlIHJlcXVpcmVkIHByb3BzLiBFeGFtcGxlOiBgPFRlc3RDb21wb25lbnQgbmFtZT0nbXktdGVzdCcgdmFsdWU9ezQyfSAvPmBcIixcbiAgICBkZWZhdWx0X3ZpZXc6IFwiZmlsZXNcIixcbiAgICBsYXRlc3RfcGNiX3ByZXZpZXdfaW1hZ2VfdXJsOiBgL2FwaS9wYWNrYWdlcy9pbWFnZXMvdGVzdC1vcmdhbml6YXRpb24vdGVzdC1vcmctcGFja2FnZS9wY2IucG5nYCxcbiAgICBsYXRlc3RfY2FkX3ByZXZpZXdfaW1hZ2VfdXJsOiBgL2FwaS9wYWNrYWdlcy9pbWFnZXMvdGVzdC1vcmdhbml6YXRpb24vdGVzdC1vcmctcGFja2FnZS8zZC5wbmdgLFxuICAgIGxhdGVzdF9zY2hfcHJldmlld19pbWFnZV91cmw6IGAvYXBpL3BhY2thZ2VzL2ltYWdlcy90ZXN0LW9yZ2FuaXphdGlvbi90ZXN0LW9yZy1wYWNrYWdlL3NjaGVtYXRpYy5wbmdgLFxuICB9KVxuICBjb25zdCB7IHBhY2thZ2VfcmVsZWFzZV9pZDogdGVzdE9yZ1BhY2thZ2VSZWxlYXNlSWQgfSA9IGRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICBwYWNrYWdlX2lkOiB0ZXN0T3JnUGFja2FnZS5wYWNrYWdlX2lkLFxuICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgaGFzX3RyYW5zcGlsZWQ6IHRydWUsXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogbnVsbCxcblxuICAgIHBjYl9wcmV2aWV3X2ltYWdlX3VybDogYC9hcGkvcGFja2FnZXMvaW1hZ2VzL3Rlc3Qtb3JnYW5pemF0aW9uL3Rlc3Qtb3JnLXBhY2thZ2UvcGNiLnBuZ2AsXG4gICAgY2FkX3ByZXZpZXdfaW1hZ2VfdXJsOiBgL2FwaS9wYWNrYWdlcy9pbWFnZXMvdGVzdC1vcmdhbml6YXRpb24vdGVzdC1vcmctcGFja2FnZS8zZC5wbmdgLFxuICAgIHNjaF9wcmV2aWV3X2ltYWdlX3VybDogYC9hcGkvcGFja2FnZXMvaW1hZ2VzL3Rlc3Qtb3JnYW5pemF0aW9uL3Rlc3Qtb3JnLXBhY2thZ2Uvc2NoZW1hdGljLnBuZ2AsXG4gIH0pXG4gIGRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHRlc3RPcmdQYWNrYWdlUmVsZWFzZUlkLFxuICAgIGZpbGVfcGF0aDogXCJpbmRleC50c3hcIixcbiAgICBjb250ZW50X3RleHQ6IGBcbiAgICBleHBvcnQgY29uc3QgVGVzdENvbXBvbmVudCA9ICh7IG5hbWUgfTogeyBuYW1lOiBzdHJpbmcgfSkgPT4gKFxuICAgICAgPHJlc2lzdG9yIG5hbWU9e25hbWV9IHJlc2lzdGFuY2U9XCIxMGtcIiAvPlxuICAgIClcbiAgICBgLnRyaW0oKSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfdGV4dDogdHJ1ZSxcbiAgfSlcbiAgZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogdGVzdE9yZ1BhY2thZ2VSZWxlYXNlSWQsXG4gICAgZmlsZV9wYXRoOiBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICAgIGNvbnRlbnRfdGV4dDogYFtcbiAgICAgIHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic291cmNlX3Byb2plY3RfbWV0YWRhdGFcIixcbiAgICAgICAgXCJzb3VyY2VfcHJvamVjdF9tZXRhZGF0YV9pZFwiOiBcInNvdXJjZV9wcm9qZWN0X21ldGFkYXRhXzBcIixcbiAgICAgICAgXCJzb2Z0d2FyZV91c2VkX3N0cmluZ1wiOiBcIkB0c2NpcmN1aXQvY29yZUAwLjAuODEzXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwidHlwZVwiOiBcInNvdXJjZV9ncm91cFwiLFxuICAgICAgICBcInNvdXJjZV9ncm91cF9pZFwiOiBcInNvdXJjZV9ncm91cF8wXCIsXG4gICAgICAgIFwiaXNfc3ViY2lyY3VpdFwiOiB0cnVlLFxuICAgICAgICBcIndhc19hdXRvbWF0aWNhbGx5X25hbWVkXCI6IHRydWUsXG4gICAgICAgIFwic3ViY2lyY3VpdF9pZFwiOiBcInN1YmNpcmN1aXRfc291cmNlX2dyb3VwXzBcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic291cmNlX2JvYXJkXCIsXG4gICAgICAgIFwic291cmNlX2JvYXJkX2lkXCI6IFwic291cmNlX2JvYXJkXzBcIixcbiAgICAgICAgXCJzb3VyY2VfZ3JvdXBfaWRcIjogXCJzb3VyY2VfZ3JvdXBfMFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcInR5cGVcIjogXCJzY2hlbWF0aWNfZ3JvdXBcIixcbiAgICAgICAgXCJzY2hlbWF0aWNfZ3JvdXBfaWRcIjogXCJzY2hlbWF0aWNfZ3JvdXBfMFwiLFxuICAgICAgICBcImlzX3N1YmNpcmN1aXRcIjogdHJ1ZSxcbiAgICAgICAgXCJzdWJjaXJjdWl0X2lkXCI6IFwic3ViY2lyY3VpdF9zb3VyY2VfZ3JvdXBfMFwiLFxuICAgICAgICBcIm5hbWVcIjogXCJ1bm5hbWVkX2JvYXJkMVwiLFxuICAgICAgICBcImNlbnRlclwiOiB7XG4gICAgICAgICAgXCJ4XCI6IDAsXG4gICAgICAgICAgXCJ5XCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJ3aWR0aFwiOiAwLFxuICAgICAgICBcImhlaWdodFwiOiAwLFxuICAgICAgICBcInNjaGVtYXRpY19jb21wb25lbnRfaWRzXCI6IFtdLFxuICAgICAgICBcInNvdXJjZV9ncm91cF9pZFwiOiBcInNvdXJjZV9ncm91cF8wXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwidHlwZVwiOiBcInBjYl9ib2FyZFwiLFxuICAgICAgICBcInBjYl9ib2FyZF9pZFwiOiBcInBjYl9ib2FyZF8wXCIsXG4gICAgICAgIFwiY2VudGVyXCI6IHtcbiAgICAgICAgICBcInhcIjogMCxcbiAgICAgICAgICBcInlcIjogMFxuICAgICAgICB9LFxuICAgICAgICBcInRoaWNrbmVzc1wiOiAxLjQsXG4gICAgICAgIFwibnVtX2xheWVyc1wiOiAyLFxuICAgICAgICBcIndpZHRoXCI6IDEwLFxuICAgICAgICBcImhlaWdodFwiOiAxMCxcbiAgICAgICAgXCJtYXRlcmlhbFwiOiBcImZyNFwiXG4gICAgICB9XG4gICAgXWAudHJpbSgpLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBpc190ZXh0OiB0cnVlLFxuICB9KVxuICBkYi5hZGRQYWNrYWdlQnVpbGQoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogdGVzdE9yZ1BhY2thZ2VSZWxlYXNlSWQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25faW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIHRyYW5zcGlsYXRpb25fc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDUwMDApLnRvSVNPU3RyaW5nKCksIC8vIFN0YXJ0ZWQgNSBzZWNvbmRzIGFnb1xuICAgIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMzAwMCkudG9JU09TdHJpbmcoKSwgLy8gQ29tcGxldGVkIDMgc2Vjb25kcyBhZ29cbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIHRyYW5zcGlsYXRpb24uLi5cIixcbiAgICAgIFwiW0lORk9dIFBhcnNpbmcgcGFja2FnZSBjb2RlXCIsXG4gICAgICBcIltJTkZPXSBHZW5lcmF0aW5nIFR5cGVTY3JpcHQgZGVmaW5pdGlvbnNcIixcbiAgICAgIFwiW0lORk9dIENvbXBpbGluZyB0byBKYXZhU2NyaXB0XCIsXG4gICAgICBcIltTVUNDRVNTXSBUcmFuc3BpbGF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICBdLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDMwMDApLnRvSVNPU3RyaW5nKCksIC8vIFN0YXJ0ZWQgYWZ0ZXIgdHJhbnNwaWxhdGlvblxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxMDAwKS50b0lTT1N0cmluZygpLCAvLyBDb21wbGV0ZWQgMSBzZWNvbmQgYWdvXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIGNpcmN1aXQgSlNPTiBidWlsZC4uLlwiLFxuICAgICAgXCJbSU5GT10gQW5hbHl6aW5nIGNvbXBvbmVudCBzdHJ1Y3R1cmVcIixcbiAgICAgIFwiW0lORk9dIEdlbmVyYXRpbmcgcG9ydCBjb25maWd1cmF0aW9uc1wiLFxuICAgICAgXCJbSU5GT10gVmFsaWRhdGluZyBjaXJjdWl0IGNvbm5lY3Rpb25zXCIsXG4gICAgICBcIltTVUNDRVNTXSBDaXJjdWl0IEpTT04gYnVpbGQgY29tcGxldGVkXCIsXG4gICAgXSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3I6IG51bGwsXG4gICAgYnVpbGRfaW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIGJ1aWxkX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxMDAwMCkudG9JU09TdHJpbmcoKSwgLy8gU3RhcnRlZCAxMCBzZWNvbmRzIGFnb1xuICAgIGJ1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLCAvLyBKdXN0IGNvbXBsZXRlZFxuICAgIGJ1aWxkX2Vycm9yOiBudWxsLFxuICAgIGJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2xvZ3M6XG4gICAgICBcIkJ1aWxkIHByb2Nlc3M6XFxuXCIgK1xuICAgICAgXCIxLiBFbnZpcm9ubWVudCBzZXR1cCAtIE9LXFxuXCIgK1xuICAgICAgXCIyLiBEZXBlbmRlbmN5IHJlc29sdXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiMy4gQ29kZSBjb21waWxhdGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCI0LiBDaXJjdWl0IHZhbGlkYXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiNS4gUGFja2FnZSBhc3NlbWJseSAtIE9LXFxuXCIgK1xuICAgICAgXCJCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gIH0pXG5cbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQ6IG9yZ1BhY2thZ2VSZWxlYXNlSWQgfSA9IGRiLmFkZFNuaXBwZXQoe1xuICAgIG5hbWU6IFwidGVzdC1vcmdhbml6YXRpb24vdGVzdC1wYWNrYWdlXCIsXG4gICAgdW5zY29wZWRfbmFtZTogXCJ0ZXN0LXBhY2thZ2VcIixcbiAgICBvd25lcl9uYW1lOiBcInRlc3Qtb3JnYW5pemF0aW9uXCIsXG4gICAgY29kZTogYFxuZXhwb3J0IGNvbnN0IFRlc3RDb21wb25lbnQgPSAoeyBuYW1lIH06IHsgbmFtZTogc3RyaW5nIH0pID0+IChcbiAgPHJlc2lzdG9yIG5hbWU9e25hbWV9IHJlc2lzdGFuY2U9XCIxMGtcIiAvPlxuKVxuYC50cmltKCksXG4gICAgZHRzOiBgXG5kZWNsYXJlIG1vZHVsZSBcIkB0c2NpL3Rlc3Qtb3JnYW5pemF0aW9uLnRlc3QtcGFja2FnZVwiIHtcbiAgZXhwb3J0IGNvbnN0IFRlc3RDb21wb25lbnQ6ICh7IG5hbWUgfToge1xuICAgIG5hbWU6IHN0cmluZztcbiAgfSkgPT4gYW55O1xufVxuYC50cmltKCksXG4gICAgY29tcGlsZWRfanM6IGBcblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5UZXN0Q29tcG9uZW50ID0gdm9pZCAwO1xuY29uc3QgVGVzdENvbXBvbmVudCA9ICh7XG4gIG5hbWVcbn0pID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicmVzaXN0b3JcIiwge1xuICBuYW1lOiBuYW1lLFxuICByZXNpc3RhbmNlOiBcIjEwa1wiXG59KTtcbmV4cG9ydHMuVGVzdENvbXBvbmVudCA9IFRlc3RDb21wb25lbnQ7XG4gICAgYC50cmltKCksXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlRlc3QgcGFja2FnZSBmb3Igb3JnYW5pemF0aW9uXCIsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfcmVzaXN0b3JcIixcbiAgICAgICAgbmFtZTogXCJSMVwiLFxuICAgICAgICByZXNpc3RhbmNlOiBcIjEwa1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9KVxuXG4gIC8vIEFkZCBzdWNjZXNzZnVsIGJ1aWxkIGZvciBvcmcgcGFja2FnZVxuICBjb25zdCBvcmdQYWNrYWdlQnVpbGQgPSBkYi5hZGRQYWNrYWdlQnVpbGQoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogb3JnUGFja2FnZVJlbGVhc2VJZCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdHJhbnNwaWxhdGlvbl9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgdHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gNTAwMCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDMwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgdHJhbnNwaWxhdGlvbl9sb2dzOiBbXG4gICAgICBcIltJTkZPXSBTdGFydGluZyB0cmFuc3BpbGF0aW9uLi4uXCIsXG4gICAgICBcIltTVUNDRVNTXSBUcmFuc3BpbGF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICBdLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDMwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDEwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIGNpcmN1aXQgSlNPTiBidWlsZC4uLlwiLFxuICAgICAgXCJbU1VDQ0VTU10gQ2lyY3VpdCBKU09OIGJ1aWxkIGNvbXBsZXRlZFwiLFxuICAgIF0sXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yOiBudWxsLFxuICAgIGJ1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBidWlsZF9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTAwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfY29tcGxldGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfZXJyb3I6IG51bGwsXG4gICAgYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgcHJldmlld191cmw6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL3ByZXZpZXcvb3JnX3BhY2thZ2VfYnVpbGRcIixcbiAgICBidWlsZF9sb2dzOiBcIkJ1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgfSlcblxuICAvLyBVcGRhdGUgdGhlIG9yZyBwYWNrYWdlIHJlbGVhc2Ugd2l0aCB0aGUgYnVpbGQgSURcbiAgY29uc3Qgb3JnUmVsZWFzZSA9IGRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChvcmdQYWNrYWdlUmVsZWFzZUlkKSFcbiAgZGIudXBkYXRlUGFja2FnZVJlbGVhc2Uoe1xuICAgIC4uLm9yZ1JlbGVhc2UsXG4gICAgbGF0ZXN0X3BhY2thZ2VfYnVpbGRfaWQ6IG9yZ1BhY2thZ2VCdWlsZC5wYWNrYWdlX2J1aWxkX2lkLFxuICB9KVxuXG4gIGRiLmFkZE9yZ2FuaXphdGlvbih7XG4gICAgbmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIG93bmVyX2FjY291bnRfaWQ6IGFjY291bnRfaWQsXG4gICAgZ2l0aHViX2hhbmRsZTogXCJ0c2NpcmN1aXRcIixcbiAgICBpc19wZXJzb25hbF9vcmc6IHRydWUsXG4gICAgb3JnX2lkOiBcIm9yZy0xMjM0XCIsXG4gIH0pXG5cbiAgZGIuYWRkT3JnYW5pemF0aW9uQWNjb3VudCh7XG4gICAgb3JnX2lkOiB0ZXN0T3JnLm9yZ19pZCxcbiAgICBhY2NvdW50X2lkOiBzZXZlaWJhckFjYy5hY2NvdW50X2lkLFxuICB9KVxuXG4gIC8vIEFkZCBhIHBhY2thZ2Ugd2l0aCBhIGN1c3RvbSAzRCBtb2RlbCAoR0xCIGZpbGUpXG4gIGNvbnN0IGdsYk1vZGVsUGFja2FnZSA9IGRiLmFkZFBhY2thZ2Uoe1xuICAgIG5hbWU6IFwidGVzdHVzZXIvY3VzdG9tLTNkLW1vZGVsXCIsXG4gICAgdW5zY29wZWRfbmFtZTogXCJjdXN0b20tM2QtbW9kZWxcIixcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGFjY291bnRfaWQsXG4gICAgb3duZXJfb3JnX2lkOiBcIm9yZy0xMjM0XCIsXG4gICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSBwYWNrYWdlIGRlbW9uc3RyYXRpbmcgY3VzdG9tIDNEIENBRCBtb2RlbCB1c2FnZVwiLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IFwiMC4wLjFcIixcbiAgICBsaWNlbnNlOiBcIk1JVFwiLFxuICAgIHdlYnNpdGU6IFwiaHR0cHM6Ly90c2NpcmN1aXQuY29tXCIsXG4gICAgc3Rhcl9jb3VudDogNSxcbiAgICBhaV9kZXNjcmlwdGlvbjpcbiAgICAgIFwiQSBwYWNrYWdlIHRoYXQgZGVtb25zdHJhdGVzIGhvdyB0byB1c2UgY3VzdG9tIDNEIENBRCBtb2RlbHMgKEdMQiBmaWxlcykgd2l0aCB0c2NpcmN1aXQgY29tcG9uZW50cy5cIixcbiAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6XG4gICAgICBcIkltcG9ydCB0aGUgZGVmYXVsdCBjb21wb25lbnQgYW5kIHVzZSBpdCBpbiB5b3VyIGNpcmN1aXQgZGVzaWduLiBUaGUgY29tcG9uZW50IGluY2x1ZGVzIGEgY3VzdG9tIDNEIG1vZGVsIGZvciB2aXN1YWxpemF0aW9uLlwiLFxuICAgIGRlZmF1bHRfdmlldzogXCIzZFwiLFxuICB9KVxuXG4gIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkOiBnbGJNb2RlbFJlbGVhc2VJZCB9ID0gZGIuYWRkUGFja2FnZVJlbGVhc2Uoe1xuICAgIHBhY2thZ2VfaWQ6IGdsYk1vZGVsUGFja2FnZS5wYWNrYWdlX2lkLFxuICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgaGFzX3RyYW5zcGlsZWQ6IHRydWUsXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogbnVsbCxcbiAgfSlcblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UgdG8gbGluayB0byB0aGUgcmVsZWFzZVxuICBkYi51cGRhdGVQYWNrYWdlKGdsYk1vZGVsUGFja2FnZS5wYWNrYWdlX2lkLCB7XG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogZ2xiTW9kZWxSZWxlYXNlSWQsXG4gIH0pXG5cbiAgLy8gQWRkIHRoZSBpbmRleC50c3ggZmlsZVxuICBkYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBnbGJNb2RlbFJlbGVhc2VJZCxcbiAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgY29udGVudF90ZXh0OiBgaW1wb3J0IGdsYlVybCBmcm9tIFwiLi90ZXN0LmdsYlwiXG5leHBvcnQgZGVmYXVsdCAoKSA9PiAoXG4gIDxib2FyZD5cbiAgICA8Y2hpcFxuICAgICAgbmFtZT1cIlUxXCJcbiAgICAgIGNhZE1vZGVsPXtcbiAgICAgICAgPGNhZGFzc2VtYmx5PlxuICAgICAgICAgIDxjYWRtb2RlbFxuICAgICAgICAgICAgbW9kZWxVcmw9e2dsYlVybH1cbiAgICAgICAgICAgIG1vZGVsVW5pdFRvTW1TY2FsZT17MTAwMH1cbiAgICAgICAgICAgIHBvc2l0aW9uT2Zmc2V0PXt7IHg6IDAsIHk6IDAsIHo6IDAuMiB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvY2FkYXNzZW1ibHk+XG4gICAgICB9XG4gICAgLz5cbiAgPC9ib2FyZD5cbilgLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBpc190ZXh0OiB0cnVlLFxuICB9KVxuXG4gIC8vIFJlYWQgdGhlIEdMQiBmaWxlIGZyb20gYXNzZXRzIGRpcmVjdG9yeSBhbmQgYWRkIGl0IGFzIGEgcGFja2FnZSBmaWxlXG4gIGNvbnN0IGdsYkZpbGVQYXRoID0gam9pbihfX2Rpcm5hbWUsIFwiYXNzZXRzXCIsIFwidGVzdC5nbGJcIilcbiAgY29uc3QgZ2xiRmlsZUNvbnRlbnQgPSByZWFkRmlsZVN5bmMoZ2xiRmlsZVBhdGgpXG4gIGRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGdsYk1vZGVsUmVsZWFzZUlkLFxuICAgIGZpbGVfcGF0aDogXCJ0ZXN0LmdsYlwiLFxuICAgIGNvbnRlbnRfYnl0ZXM6IGdsYkZpbGVDb250ZW50LFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IFwibW9kZWwvZ2x0Zi1iaW5hcnlcIixcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfdGV4dDogZmFsc2UsXG4gIH0pXG5cbiAgLy8gQWRkIGEgc3VjY2Vzc2Z1bCBidWlsZCBmb3IgdGhlIEdMQiBtb2RlbCBwYWNrYWdlXG4gIGRiLmFkZFBhY2thZ2VCdWlsZCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBnbGJNb2RlbFJlbGVhc2VJZCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdHJhbnNwaWxhdGlvbl9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgdHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gNTAwMCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDMwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgdHJhbnNwaWxhdGlvbl9sb2dzOiBbXG4gICAgICBcIltJTkZPXSBTdGFydGluZyB0cmFuc3BpbGF0aW9uLi4uXCIsXG4gICAgICBcIltJTkZPXSBQYXJzaW5nIHBhY2thZ2UgY29kZVwiLFxuICAgICAgXCJbSU5GT10gUHJvY2Vzc2luZyBHTEIgYXNzZXQgZmlsZVwiLFxuICAgICAgXCJbSU5GT10gR2VuZXJhdGluZyBUeXBlU2NyaXB0IGRlZmluaXRpb25zXCIsXG4gICAgICBcIltTVUNDRVNTXSBUcmFuc3BpbGF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICBdLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDMwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDEwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIGNpcmN1aXQgSlNPTiBidWlsZC4uLlwiLFxuICAgICAgXCJbSU5GT10gTG9hZGluZyBjdXN0b20gM0QgbW9kZWxcIixcbiAgICAgIFwiW0lORk9dIFZhbGlkYXRpbmcgQ0FEIGFzc2VtYmx5IHN0cnVjdHVyZVwiLFxuICAgICAgXCJbU1VDQ0VTU10gQ2lyY3VpdCBKU09OIGJ1aWxkIGNvbXBsZXRlZFwiLFxuICAgIF0sXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yOiBudWxsLFxuICAgIGJ1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBidWlsZF9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTAwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfY29tcGxldGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfZXJyb3I6IG51bGwsXG4gICAgYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfbG9nczpcbiAgICAgIFwiQnVpbGQgcHJvY2VzczpcXG5cIiArXG4gICAgICBcIjEuIEVudmlyb25tZW50IHNldHVwIC0gT0tcXG5cIiArXG4gICAgICBcIjIuIEFzc2V0IHByb2Nlc3NpbmcgLSBPS1xcblwiICtcbiAgICAgIFwiMy4gQ29kZSBjb21waWxhdGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCI0LiAzRCBtb2RlbCB2YWxpZGF0aW9uIC0gT0tcXG5cIiArXG4gICAgICBcIkJ1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgfSlcbn1cbiIsICJpbXBvcnQgZnMgZnJvbSBcImZzXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCBheGlvcyBmcm9tIFwicmVkYXhpb3NcIlxuaW1wb3J0IHR5cGUgeyBEYkNsaWVudCB9IGZyb20gXCIuL2RiLWNsaWVudFwiXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2UsIFBhY2thZ2VGaWxlLCBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCIuL3NjaGVtYVwiXG5cbmNvbnN0IGV4dHJhY3RUc2NpRGVwZW5kZW5jaWVzID0gKFxuICBjb2RlOiBzdHJpbmcsXG4pOiBBcnJheTx7IG93bmVyOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9PiA9PiB7XG4gIGNvbnN0IHJlZ2V4ID0gL0B0c2NpXFwvKFteLl0rKVxcLihbXlwiJ1xcc10rKS9nXG4gIGNvbnN0IG1hdGNoZXMgPSBBcnJheS5mcm9tKGNvZGUubWF0Y2hBbGwocmVnZXgpKVxuICByZXR1cm4gbWF0Y2hlcy5tYXAoKG1hdGNoKSA9PiAoe1xuICAgIG93bmVyOiBtYXRjaFsxXSxcbiAgICBuYW1lOiBtYXRjaFsyXSxcbiAgfSkpXG59XG5cbmNvbnN0IHJlZ2lzdHJ5QXBpID0gYXhpb3MuY3JlYXRlKHtcbiAgYmFzZVVSTDogXCJodHRwczovL2FwaS50c2NpcmN1aXQuY29tXCIsXG4gIGhlYWRlcnM6IHtcbiAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICB9LFxufSlcblxuY29uc3QgZmV0Y2hQYWNrYWdlRnJvbVJlZ2lzdHJ5ID0gYXN5bmMgKG93bmVyOiBzdHJpbmcsIG5hbWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBmdWxsTmFtZSA9IGAke293bmVyfS8ke25hbWV9YFxuICBjb25zb2xlLmxvZyhgW2F1dG9sb2FkLWRldi1wa2dzXSBcdUQ4M0RcdURDRTYgRmV0Y2hpbmcgcGFja2FnZSAke2Z1bGxOYW1lfS4uLmApXG5cbiAgbGV0IHBhY2thZ2VEYXRhXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZWdpc3RyeUFwaS5wb3N0KFwiL3BhY2thZ2VzL2dldFwiLCB7XG4gICAgICBuYW1lOiBmdWxsTmFtZSxcbiAgICB9KVxuICAgIHBhY2thZ2VEYXRhID0gcmVzcG9uc2UuZGF0YVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoIHBhY2thZ2UgZGF0YSBmb3IgJHtmdWxsTmFtZX06YCwgZSlcbiAgICB0aHJvdyBlXG4gIH1cblxuICBsZXQgcmVsZWFzZURhdGFcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlZ2lzdHJ5QXBpLnBvc3QoXCIvcGFja2FnZV9yZWxlYXNlcy9nZXRcIiwge1xuICAgICAgcGFja2FnZV9pZDogcGFja2FnZURhdGEucGFja2FnZS5wYWNrYWdlX2lkLFxuICAgICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgIH0pXG4gICAgcmVsZWFzZURhdGEgPSByZXNwb25zZS5kYXRhXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYFthdXRvbG9hZC1kZXYtcGtnc10gXHUyNzRDIEZhaWxlZCB0byBmZXRjaCByZWxlYXNlIGRhdGEgZm9yICR7ZnVsbE5hbWV9OmAsXG4gICAgICBlLFxuICAgIClcbiAgICB0aHJvdyBlXG4gIH1cblxuICBsZXQgZmlsZXNEYXRhXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZWdpc3RyeUFwaS5wb3N0KFxuICAgICAgYHBhY2thZ2VfZmlsZXMvbGlzdD9wYWNrYWdlX3JlbGVhc2VfaWQ9JHtyZWxlYXNlRGF0YS5wYWNrYWdlX3JlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkfWAsXG4gICAgICB7fSxcbiAgICApXG4gICAgZmlsZXNEYXRhID0gcmVzcG9uc2UuZGF0YVxuXG4gICAgLy8gRmV0Y2ggY29udGVudF90ZXh0IGZvciBlYWNoIGZpbGUgaW5kaXZpZHVhbGx5XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzRGF0YS5wYWNrYWdlX2ZpbGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmaWxlUmVzcG9uc2UgPSBhd2FpdCByZWdpc3RyeUFwaS5wb3N0KFxuICAgICAgICAgIGAvcGFja2FnZV9maWxlcy9nZXQ/cGFja2FnZV9maWxlX2lkPSR7ZmlsZS5wYWNrYWdlX2ZpbGVfaWR9YCxcbiAgICAgICAgICB7fSxcbiAgICAgICAgKVxuICAgICAgICBmaWxlLmNvbnRlbnRfdGV4dCA9IGZpbGVSZXNwb25zZS5kYXRhLnBhY2thZ2VfZmlsZS5jb250ZW50X3RleHRcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgW2F1dG9sb2FkLWRldi1wa2dzXSBcdTI3NEMgRmFpbGVkIHRvIGZldGNoIGNvbnRlbnQgZm9yIGZpbGUgJHtmaWxlLmZpbGVfcGF0aH0gaW4gcGFja2FnZSAke2Z1bGxOYW1lfTpgLFxuICAgICAgICAgIGUsXG4gICAgICAgIClcbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBgW2F1dG9sb2FkLWRldi1wa2dzXSBcdTI3NEMgRmFpbGVkIHRvIGZldGNoIGZpbGVzIGRhdGEgZm9yICR7ZnVsbE5hbWV9OmAsXG4gICAgICBlLFxuICAgIClcbiAgICB0aHJvdyBlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhY2thZ2U6IHBhY2thZ2VEYXRhLnBhY2thZ2UgYXMgUGFja2FnZSxcbiAgICByZWxlYXNlOiByZWxlYXNlRGF0YS5wYWNrYWdlX3JlbGVhc2UgYXMgUGFja2FnZVJlbGVhc2UsXG4gICAgZmlsZXM6IGZpbGVzRGF0YS5wYWNrYWdlX2ZpbGVzIGFzIFBhY2thZ2VGaWxlW10sXG4gIH1cbn1cblxuY29uc3QgbG9hZFBhY2thZ2VXaXRoRGVwZW5kZW5jaWVzID0gYXN5bmMgKFxuICBkYjogRGJDbGllbnQsXG4gIG93bmVyOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbiAgbG9hZGVkUGFja2FnZXMgPSBuZXcgU2V0PHN0cmluZz4oKSxcbikgPT4ge1xuICBjb25zdCBwYWNrYWdlS2V5ID0gYCR7b3duZXJ9LyR7bmFtZX1gXG4gIGlmIChsb2FkZWRQYWNrYWdlcy5oYXMocGFja2FnZUtleSkpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbGV0IHJlc3VsdFxuICB0cnkge1xuICAgIHJlc3VsdCA9IGF3YWl0IGZldGNoUGFja2FnZUZyb21SZWdpc3RyeShvd25lciwgbmFtZSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYFthdXRvbG9hZC1kZXYtcGtnc10gXHUyNzRDIEZhaWxlZCB0byBsb2FkICR7cGFja2FnZUtleX1gKVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgeyBwYWNrYWdlOiBwa2csIHJlbGVhc2UsIGZpbGVzIH0gPSByZXN1bHRcblxuICAvLyBDaGVjayBpZiBwYWNrYWdlIGFscmVhZHkgZXhpc3RzXG4gIGlmIChkYi5nZXRQYWNrYWdlQnlJZChwa2cucGFja2FnZV9pZCkpIHtcbiAgICBjb25zb2xlLmxvZyhgW2F1dG9sb2FkLWRldi1wa2dzXSBcdTI2QTEgUGFja2FnZSAke3BhY2thZ2VLZXl9IGFscmVhZHkgZXhpc3RzYClcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gQWRkIHBhY2thZ2UsIHJlbGVhc2UsIGFuZCBmaWxlcyB0byBkYlxuICBkYi5hZGRQYWNrYWdlKHtcbiAgICAuLi5wa2csXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiByZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICBzdGFyX2NvdW50OiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMSksXG4gIH0pXG5cbiAgZGIuYWRkUGFja2FnZVJlbGVhc2Uoe1xuICAgIC4uLnJlbGVhc2UsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25fbG9nczogQXJyYXkuaXNBcnJheShyZWxlYXNlLnRyYW5zcGlsYXRpb25fbG9ncylcbiAgICAgID8gcmVsZWFzZS50cmFuc3BpbGF0aW9uX2xvZ3NcbiAgICAgIDogW10sXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IEFycmF5LmlzQXJyYXkocmVsZWFzZS5jaXJjdWl0X2pzb25fYnVpbGRfbG9ncylcbiAgICAgID8gcmVsZWFzZS5jaXJjdWl0X2pzb25fYnVpbGRfbG9nc1xuICAgICAgOiBbXSxcbiAgICB0cmFuc3BpbGF0aW9uX2Rpc3BsYXlfc3RhdHVzOlxuICAgICAgcmVsZWFzZS50cmFuc3BpbGF0aW9uX2Rpc3BsYXlfc3RhdHVzID8/IFwicGVuZGluZ1wiLFxuICB9KVxuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgIC4uLmZpbGUsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfSlcbiAgfVxuXG4gIGxvYWRlZFBhY2thZ2VzLmFkZChwYWNrYWdlS2V5KVxuICBjb25zb2xlLmxvZyhgW2F1dG9sb2FkLWRldi1wa2dzXSBcdUQ4M0RcdURDRTYgTG9hZGVkICR7cGFja2FnZUtleX1gKVxuXG4gIC8vIExvYWQgZGVwZW5kZW5jaWVzXG4gIGNvbnN0IG1haW5GaWxlID0gZmlsZXMuZmluZChcbiAgICAoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIgfHwgZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIixcbiAgKVxuICBpZiAoIW1haW5GaWxlPy5jb250ZW50X3RleHQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gZXh0cmFjdFRzY2lEZXBlbmRlbmNpZXMobWFpbkZpbGUuY29udGVudF90ZXh0KVxuICBsZXQgYWxsRGVwc0xvYWRlZCA9IHRydWVcblxuICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBlbmRlbmNpZXMpIHtcbiAgICBjb25zdCBkZXBMb2FkZWQgPSBhd2FpdCBsb2FkUGFja2FnZVdpdGhEZXBlbmRlbmNpZXMoXG4gICAgICBkYixcbiAgICAgIGRlcC5vd25lcixcbiAgICAgIGRlcC5uYW1lLFxuICAgICAgbG9hZGVkUGFja2FnZXMsXG4gICAgKVxuICAgIGlmICghZGVwTG9hZGVkKSB7XG4gICAgICBhbGxEZXBzTG9hZGVkID0gZmFsc2VcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFthdXRvbG9hZC1kZXYtcGtnc10gXHUyNkEwXHVGRTBGIEZhaWxlZCB0byBsb2FkIGRlcGVuZGVuY3kgJHtkZXAub3duZXJ9LyR7ZGVwLm5hbWV9IGZvciAke3BhY2thZ2VLZXl9YCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsRGVwc0xvYWRlZFxufVxuXG5leHBvcnQgY29uc3QgbG9hZEF1dG9sb2FkUGFja2FnZXMgPSBhc3luYyAoZGI6IERiQ2xpZW50KSA9PiB7XG4gIGNvbnN0IGF1dG9sb2FkUGF0aCA9IHBhdGguam9pbihcbiAgICBwYXRoLmRpcm5hbWUoX19kaXJuYW1lKSxcbiAgICBcImRiXCIsXG4gICAgXCJhdXRvbG9hZC1wYWNrYWdlcy5qc29uXCIsXG4gIClcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGF1dG9sb2FkUGF0aCkpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiW2F1dG9sb2FkLWRldi1wa2dzXSBcdTI3NEMgTm8gYXV0b2xvYWQtcGFja2FnZXMuanNvbiBmb3VuZFwiKVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgYXV0b2xvYWRDb250ZW50ID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoYXV0b2xvYWRQYXRoLCBcInV0ZjhcIikpXG4gIGNvbnN0IGxvYWRlZFBhY2thZ2VzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgbGV0IHN1Y2Nlc3NDb3VudCA9IDBcbiAgbGV0IGZhaWx1cmVDb3VudCA9IDBcblxuICBmb3IgKGNvbnN0IHBhY2thZ2VSZWYgb2YgYXV0b2xvYWRDb250ZW50LnBhY2thZ2VzKSB7XG4gICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyhcbiAgICAgIGRiLFxuICAgICAgcGFja2FnZVJlZi5vd25lcixcbiAgICAgIHBhY2thZ2VSZWYubmFtZSxcbiAgICAgIGxvYWRlZFBhY2thZ2VzLFxuICAgIClcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgc3VjY2Vzc0NvdW50KytcbiAgICB9IGVsc2Uge1xuICAgICAgZmFpbHVyZUNvdW50KytcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZyhgXFxuW2F1dG9sb2FkLWRldi1wa2dzXSBcdUQ4M0RcdURDQ0IgUGFja2FnZSBsb2FkaW5nIGNvbXBsZXRlOmApXG4gIGNvbnNvbGUubG9nKFxuICAgIGBbYXV0b2xvYWQtZGV2LXBrZ3NdIFx1MjcwNSBTdWNjZXNzZnVsbHkgbG9hZGVkOiAke3N1Y2Nlc3NDb3VudH0gcGFja2FnZXNgLFxuICApXG4gIGlmIChmYWlsdXJlQ291bnQgPiAwKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgW2F1dG9sb2FkLWRldi1wa2dzXSBcdTI3NEMgRmFpbGVkIHRvIGxvYWQ6ICR7ZmFpbHVyZUNvdW50fSBwYWNrYWdlc2AsXG4gICAgKVxuICB9XG59XG4iLCAiaW1wb3J0IG1kNSBmcm9tIFwibWQ1XCJcbmltcG9ydCB0eXBlIHsgUGFja2FnZUZpbGUgfSBmcm9tIFwiLi4vZGIvc2NoZW1hXCJcblxuLyoqXG4gKiBHZW5lcmF0ZSBhbiBNRDUgaGFzaCBmcm9tIHBhY2thZ2UgZmlsZXMgY29udGVudFxuICogVXNlcyB0aGUgc2FtZSBmb3JtYXQgYXMgZXhpc3RpbmcgdGVzdHM6IGNyZWF0ZXMgYSBtYXAgb2YgZmlsZV9wYXRoIC0+IGNvbnRlbnRfdGV4dFxuICogYW5kIGdlbmVyYXRlcyBhbiBNRDUgaGFzaCBvZiB0aGUgSlNPTiBzdHJpbmdpZmllZCBtYXBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRnNTaGEocGFja2FnZUZpbGVzOiBQYWNrYWdlRmlsZVtdKTogc3RyaW5nIHtcbiAgY29uc3QgZnNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuXG4gIHBhY2thZ2VGaWxlc1xuICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuY29udGVudF90ZXh0KSAvLyBPbmx5IGluY2x1ZGUgZmlsZXMgd2l0aCBjb250ZW50XG4gICAgLmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgIGZzTWFwW2ZpbGUuZmlsZV9wYXRoXSA9IGZpbGUuY29udGVudF90ZXh0IHx8IFwiXCJcbiAgICB9KVxuXG4gIGNvbnN0IGhhc2ggPSBtZDUoSlNPTi5zdHJpbmdpZnkoZnNNYXApKVxuICByZXR1cm4gYG1kNS0ke2hhc2h9YFxufVxuIiwgImltcG9ydCB0eXBlIHsgRGJDbGllbnQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL2RiLWNsaWVudFwiXG5pbXBvcnQgeyBjcmVhdGVEYXRhYmFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvZGItY2xpZW50XCJcbmltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhEYjogTWlkZGxld2FyZTxcbiAge30sXG4gIHtcbiAgICBkYjogRGJDbGllbnRcbiAgfVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBpZiAoIWN0eC5kYikge1xuICAgIGN0eC5kYiA9IGNyZWF0ZURhdGFiYXNlKClcbiAgfVxuICByZXR1cm4gbmV4dChyZXEsIGN0eClcbn1cbiIsICJpbXBvcnQgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5cbmV4cG9ydCB0eXBlIEN0eEVycm9yRm4gPSAoXG4gIHN0YXR1czogbnVtYmVyLFxuICBlcnJvcl9wYXlsb2FkOiB7XG4gICAgZXJyb3JfY29kZTogc3RyaW5nXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gIH0sXG4pID0+IFJlc3BvbnNlXG5cbmV4cG9ydCBjb25zdCB3aXRoQ3R4RXJyb3I6IE1pZGRsZXdhcmU8XG4gIHt9LFxuICB7XG4gICAgZXJyb3I6IEN0eEVycm9yRm5cbiAgfVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBjdHguZXJyb3IgPSAoc3RhdHVzLCBlcnJvcl9wYXlsb2FkKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IGVycm9yOiBlcnJvcl9wYXlsb2FkIH0pLCB7XG4gICAgICBzdGF0dXMsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IHR5cGUgeyBDdHhFcnJvckZuIH0gZnJvbSBcIi4vd2l0aC1jdHgtZXJyb3JcIlxuaW1wb3J0IHR5cGUgeyBEYkNsaWVudCB9IGZyb20gXCIuLi9kYi9kYi1jbGllbnRcIlxuaW1wb3J0IHsgZGVjb2RlSnd0IH0gZnJvbSBcImpvc2VcIlxuXG5leHBvcnQgY29uc3Qgd2l0aFNlc3Npb25BdXRoOiBNaWRkbGV3YXJlPFxuICB7XG4gICAgZXJyb3I6IEN0eEVycm9yRm5cbiAgICBkYjogRGJDbGllbnRcbiAgfSxcbiAge1xuICAgIGF1dGg6IHtcbiAgICAgIHR5cGU6IFwic2Vzc2lvblwiXG4gICAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgICAgIHBlcnNvbmFsX29yZ19pZDogc3RyaW5nXG4gICAgICBnaXRodWJfdXNlcm5hbWU6IHN0cmluZ1xuICAgICAgdHNjaXJjdWl0X2hhbmRsZTogc3RyaW5nIHwgbnVsbFxuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nXG4gICAgICBvcmdzOiBBcnJheTx7XG4gICAgICAgIG9yZ19pZDogc3RyaW5nXG4gICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgICB1c2VyX3Blcm1pc3Npb25zOiB7XG4gICAgICAgICAgY2FuX21hbmFnZV9wYWNrYWdlczogYm9vbGVhblxuICAgICAgICB9XG4gICAgICB9PlxuICAgIH1cbiAgfSxcbiAge31cbj4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgaWYgKHJlcS5tZXRob2QgPT09IFwiT1BUSU9OU1wiKSByZXR1cm4gbmV4dChyZXEsIGN0eClcbiAgY29uc3QgdG9rZW4gPSByZXEuaGVhZGVycy5nZXQoXCJhdXRob3JpemF0aW9uXCIpPy5zcGxpdChcIkJlYXJlciBcIik/LlsxXVxuXG4gIC8vIFRyeSB0byBkZWNvZGUgSldUIHRva2VuIGFuZCB2ZXJpZnkgc2Vzc2lvbiBleGlzdHNcbiAgaWYgKHRva2VuICYmIGN0eC5kYj8uZ2V0U3RhdGUpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZUp3dCh0b2tlbilcbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IGRlY29kZWQuc2Vzc2lvbl9pZCBhcyBzdHJpbmdcblxuICAgICAgaWYgKHNlc3Npb25JZCkge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IGN0eC5kYi5nZXRTdGF0ZSgpXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgc2Vzc2lvbiBzdGlsbCBleGlzdHMgaW4gdGhlIGRhdGFiYXNlXG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBzdGF0ZS5zZXNzaW9ucy5maW5kKFxuICAgICAgICAgIChzOiBhbnkpID0+IHMuc2Vzc2lvbl9pZCA9PT0gc2Vzc2lvbklkLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICAgICAgLy8gU2Vzc2lvbiBoYXMgYmVlbiBkZWxldGVkIChsb2dnZWQgb3V0KSwgcmVqZWN0IHRoZSByZXF1ZXN0XG4gICAgICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDEsIHtcbiAgICAgICAgICAgIGVycm9yX2NvZGU6IFwic2Vzc2lvbl9leHBpcmVkXCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBcIlNlc3Npb24gaGFzIGJlZW4gaW52YWxpZGF0ZWQuIFBsZWFzZSBsb2cgaW4gYWdhaW4uXCIsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpbmQgYWNjb3VudCBmcm9tIHRoZSBkZWNvZGVkIHRva2VuXG4gICAgICAgIGNvbnN0IGFjY291bnRJZCA9IGRlY29kZWQuYWNjb3VudF9pZCBhcyBzdHJpbmdcbiAgICAgICAgY29uc3QgYWNjb3VudCA9IHN0YXRlLmFjY291bnRzLmZpbmQoXG4gICAgICAgICAgKGFjYzogYW55KSA9PiBhY2MuYWNjb3VudF9pZCA9PT0gYWNjb3VudElkLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKGFjY291bnQpIHtcbiAgICAgICAgICAvLyBGZXRjaCBvcmdzIGZvciB0aGlzIGFjY291bnRcbiAgICAgICAgICBjb25zdCBvcmdBY2NvdW50cyA9IHN0YXRlLm9yZ0FjY291bnRzLmZpbHRlcihcbiAgICAgICAgICAgIChvYTogYW55KSA9PiBvYS5hY2NvdW50X2lkID09PSBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgY29uc3Qgb3JncyA9IG9yZ0FjY291bnRzLm1hcCgob2E6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3JnID0gc3RhdGUub3JnYW5pemF0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAobzogYW55KSA9PiBvLm9yZ19pZCA9PT0gb2Eub3JnX2lkLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgb3JnX2lkOiBvYS5vcmdfaWQsXG4gICAgICAgICAgICAgIG5hbWU6IG9yZz8ub3JnX2Rpc3BsYXlfbmFtZSB8fCBvcmc/LmdpdGh1Yl9oYW5kbGUgfHwgb2Eub3JnX2lkLFxuICAgICAgICAgICAgICB1c2VyX3Blcm1pc3Npb25zOiB7IGNhbl9tYW5hZ2VfcGFja2FnZXM6IHRydWUgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgY29uc3QgdHNjaXJjdWl0X2hhbmRsZSA9XG4gICAgICAgICAgICBkZWNvZGVkPy50c2NpcmN1aXRfaGFuZGxlID8/IGFjY291bnQ/LnRzY2lyY3VpdF9oYW5kbGUgPz8gbnVsbFxuXG4gICAgICAgICAgaWYgKCF0c2NpcmN1aXRfaGFuZGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgICAgICAgICBlcnJvcl9jb2RlOiBcInRzY2lyY3VpdF9oYW5kbGVfcmVxdWlyZWRcIixcbiAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICBcIlBsZWFzZSBzZXQgYSB0c2NpcmN1aXQgaGFuZGxlIGJlZm9yZSB1c2luZyB0aGlzIGZlYXR1cmUuIFZpc2l0IGFjY291bnQgc2V0dGluZ3MgdG8gYWRkIG9uZS5cIixcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3R4LmF1dGggPSB7XG4gICAgICAgICAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICAgICAgICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICAgICAgICAgIHBlcnNvbmFsX29yZ19pZDpcbiAgICAgICAgICAgICAgYWNjb3VudC5wZXJzb25hbF9vcmdfaWQgfHwgYG9yZy0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgICAgICAgIHRzY2lyY3VpdF9oYW5kbGU6IGFjY291bnQudHNjaXJjdWl0X2hhbmRsZSxcbiAgICAgICAgICAgIHNlc3Npb25faWQ6IHNlc3Npb25JZCxcbiAgICAgICAgICAgIG9yZ3M6XG4gICAgICAgICAgICAgIG9yZ3MubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gb3Jnc1xuICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgb3JnX2lkOlxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudC5wZXJzb25hbF9vcmdfaWQgfHwgYG9yZy0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudC5wZXJzb25hbF9vcmdfaWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBvcmctJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgICAgICAgICAgICAgICAgICB1c2VyX3Blcm1pc3Npb25zOiB7IGNhbl9tYW5hZ2VfcGFja2FnZXM6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIEpXVCBkZWNvZGUgZmFpbGVkLCBjb250aW51ZSB0byBmYWxsYmFja1xuICAgIH1cbiAgfVxuXG4gIC8vIExlZ2FjeTogT25seSBjaGVjayBkYXRhYmFzZSBhY2NvdW50cyB3aGVuIHdlJ3JlIGluIGEgQnVuIHRlc3QgZW52aXJvbm1lbnRcbiAgaWYgKHByb2Nlc3MuZW52LkJVTl9URVNUID09PSBcInRydWVcIiAmJiB0b2tlbiAmJiBjdHguZGI/LmdldFN0YXRlKSB7XG4gICAgY29uc3Qgc3RhdGUgPSBjdHguZGIuZ2V0U3RhdGUoKVxuICAgIGNvbnN0IGFjY291bnQgPSBzdGF0ZS5hY2NvdW50cy5maW5kKChhY2M6IGFueSkgPT4gYWNjLmFjY291bnRfaWQgPT09IHRva2VuKVxuICAgIGlmIChhY2NvdW50KSB7XG4gICAgICAvLyBGZXRjaCBvcmdzIGZvciB0aGlzIGFjY291bnRcbiAgICAgIGNvbnN0IG9yZ0FjY291bnRzID0gc3RhdGUub3JnQWNjb3VudHMuZmlsdGVyKFxuICAgICAgICAob2E6IGFueSkgPT4gb2EuYWNjb3VudF9pZCA9PT0gYWNjb3VudC5hY2NvdW50X2lkLFxuICAgICAgKVxuXG4gICAgICBjb25zdCBvcmdzID0gb3JnQWNjb3VudHMubWFwKChvYTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZyA9IHN0YXRlLm9yZ2FuaXphdGlvbnMuZmluZCgobzogYW55KSA9PiBvLm9yZ19pZCA9PT0gb2Eub3JnX2lkKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG9yZ19pZDogb2Eub3JnX2lkLFxuICAgICAgICAgIG5hbWU6IG9yZz8ub3JnX2Rpc3BsYXlfbmFtZSB8fCBvcmc/LmdpdGh1Yl9oYW5kbGUgfHwgb2Eub3JnX2lkLFxuICAgICAgICAgIHVzZXJfcGVybWlzc2lvbnM6IHsgY2FuX21hbmFnZV9wYWNrYWdlczogdHJ1ZSB9LFxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBjdHguYXV0aCA9IHtcbiAgICAgICAgdHlwZTogXCJzZXNzaW9uXCIsXG4gICAgICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICAgICAgcGVyc29uYWxfb3JnX2lkOiBhY2NvdW50LnBlcnNvbmFsX29yZ19pZCB8fCBgb3JnLSR7YWNjb3VudC5hY2NvdW50X2lkfWAsXG4gICAgICAgIGdpdGh1Yl91c2VybmFtZTogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gICAgICAgIHRzY2lyY3VpdF9oYW5kbGU6IGFjY291bnQudHNjaXJjdWl0X2hhbmRsZSxcbiAgICAgICAgc2Vzc2lvbl9pZDogYHNlc3Npb24tJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgICAgb3JnczpcbiAgICAgICAgICBvcmdzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gb3Jnc1xuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgb3JnX2lkOlxuICAgICAgICAgICAgICAgICAgICBhY2NvdW50LnBlcnNvbmFsX29yZ19pZCB8fCBgb3JnLSR7YWNjb3VudC5hY2NvdW50X2lkfWAsXG4gICAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICBhY2NvdW50LnBlcnNvbmFsX29yZ19pZCB8fFxuICAgICAgICAgICAgICAgICAgICBgb3JnLSR7YWNjb3VudC5hY2NvdW50X2lkfWAsXG4gICAgICAgICAgICAgICAgICB1c2VyX3Blcm1pc3Npb25zOiB7IGNhbl9tYW5hZ2VfcGFja2FnZXM6IHRydWUgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgfVxuICAgICAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbGJhY2sgYXV0aCBmb3Igbm9uLXRlc3QgZW52aXJvbm1lbnRzIG9yIHdoZW4gbm8gdG9rZW4gaXMgZm91bmRcbiAgY29uc3QgZmFsbGJhY2tBY2NvdW50SWQgPSBcImFjY291bnQtMTIzNFwiXG4gIGNvbnN0IGZhbGxiYWNrT3JnSWQgPSBcIm9yZy0xMjM0XCJcblxuICBjb25zdCBmYWxsYmFja09yZ3MgPSBbXG4gICAge1xuICAgICAgb3JnX2lkOiBmYWxsYmFja09yZ0lkLFxuICAgICAgbmFtZTogXCJvcmctMTIzNFwiLFxuICAgICAgdXNlcl9wZXJtaXNzaW9uczogeyBjYW5fbWFuYWdlX3BhY2thZ2VzOiB0cnVlIH0sXG4gICAgfSxcbiAgXVxuXG4gIGN0eC5hdXRoID0ge1xuICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICAgIGFjY291bnRfaWQ6IGZhbGxiYWNrQWNjb3VudElkLFxuICAgIHBlcnNvbmFsX29yZ19pZDogZmFsbGJhY2tPcmdJZCxcbiAgICBnaXRodWJfdXNlcm5hbWU6IFwidGVzdHVzZXJcIixcbiAgICB0c2NpcmN1aXRfaGFuZGxlOiBcInRlc3R1c2VyXCIsXG4gICAgc2Vzc2lvbl9pZDogXCJzZXNzaW9uLTEyMzRcIixcbiAgICBvcmdzOiBmYWxsYmFja09yZ3MsXG4gIH1cblxuICByZXR1cm4gbmV4dChyZXEsIGN0eClcbn1cbiIsICJpbXBvcnQgdHlwZSB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCB0eXBlIHsgQ3R4RXJyb3JGbiB9IGZyb20gXCIuL3dpdGgtY3R4LWVycm9yXCJcbmltcG9ydCB7IGRlY29kZUp3dCB9IGZyb20gXCJqb3NlXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhPcHRpb25hbFNlc3Npb25BdXRoOiBNaWRkbGV3YXJlPFxuICB7XG4gICAgZXJyb3I6IEN0eEVycm9yRm5cbiAgICBkYjogYW55XG4gIH0sXG4gIHtcbiAgICBhdXRoPzoge1xuICAgICAgdHlwZTogXCJzZXNzaW9uXCJcbiAgICAgIGFjY291bnRfaWQ6IHN0cmluZ1xuICAgICAgcGVyc29uYWxfb3JnX2lkOiBzdHJpbmdcbiAgICAgIGdpdGh1Yl91c2VybmFtZTogc3RyaW5nXG4gICAgICB0c2NpcmN1aXRfaGFuZGxlOiBzdHJpbmcgfCBudWxsXG4gICAgICBzZXNzaW9uX2lkOiBzdHJpbmdcbiAgICB9XG4gIH0sXG4gIHt9XG4+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIGlmIChyZXEubWV0aG9kID09PSBcIk9QVElPTlNcIikgcmV0dXJuIG5leHQocmVxLCBjdHgpXG5cbiAgY29uc3QgdG9rZW4gPSByZXEuaGVhZGVycy5nZXQoXCJhdXRob3JpemF0aW9uXCIpPy5zcGxpdChcIkJlYXJlciBcIik/LlsxXVxuXG4gIGlmICghdG9rZW4pIHtcbiAgICByZXR1cm4gbmV4dChyZXEsIGN0eClcbiAgfVxuXG4gIC8vIFRyeSB0byBkZWNvZGUgSldUIHRva2VuIGFuZCB2ZXJpZnkgc2Vzc2lvbiBleGlzdHNcbiAgaWYgKGN0eC5kYj8uZ2V0U3RhdGUpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZUp3dCh0b2tlbilcbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IGRlY29kZWQuc2Vzc2lvbl9pZCBhcyBzdHJpbmdcblxuICAgICAgaWYgKHNlc3Npb25JZCkge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IGN0eC5kYi5nZXRTdGF0ZSgpXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgc2Vzc2lvbiBzdGlsbCBleGlzdHMgaW4gdGhlIGRhdGFiYXNlXG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBzdGF0ZS5zZXNzaW9ucy5maW5kKFxuICAgICAgICAgIChzOiBhbnkpID0+IHMuc2Vzc2lvbl9pZCA9PT0gc2Vzc2lvbklkLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gSWYgc2Vzc2lvbiBkb2Vzbid0IGV4aXN0LCB0cmVhdCBhcyB1bmF1dGhlbnRpY2F0ZWQgKG5vIGF1dGggY29udGV4dClcbiAgICAgICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaW5kIGFjY291bnQgZnJvbSB0aGUgZGVjb2RlZCB0b2tlblxuICAgICAgICBjb25zdCBhY2NvdW50SWQgPSBkZWNvZGVkLmFjY291bnRfaWQgYXMgc3RyaW5nXG4gICAgICAgIGNvbnN0IGFjY291bnQgPSBzdGF0ZS5hY2NvdW50cy5maW5kKFxuICAgICAgICAgIChhY2M6IGFueSkgPT4gYWNjLmFjY291bnRfaWQgPT09IGFjY291bnRJZCxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChhY2NvdW50KSB7XG4gICAgICAgICAgY3R4LmF1dGggPSB7XG4gICAgICAgICAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICAgICAgICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICAgICAgICAgIHBlcnNvbmFsX29yZ19pZDpcbiAgICAgICAgICAgICAgYWNjb3VudC5wZXJzb25hbF9vcmdfaWQgfHwgYG9yZy0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgICAgICAgIHRzY2lyY3VpdF9oYW5kbGU6IGFjY291bnQudHNjaXJjdWl0X2hhbmRsZSxcbiAgICAgICAgICAgIHNlc3Npb25faWQ6IHNlc3Npb25JZCxcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSldUIGRlY29kZSBmYWlsZWQsIGNvbnRpbnVlIHRvIGZhbGxiYWNrXG4gICAgfVxuICB9XG5cbiAgLy8gTGVnYWN5OiBPbmx5IGNoZWNrIGRhdGFiYXNlIGFjY291bnRzIHdoZW4gd2UncmUgaW4gYSBCdW4gdGVzdCBlbnZpcm9ubWVudFxuICBpZiAocHJvY2Vzcy5lbnYuQlVOX1RFU1QgPT09IFwidHJ1ZVwiICYmIGN0eC5kYj8uYWNjb3VudHMpIHtcbiAgICBjb25zdCBhY2NvdW50ID0gY3R4LmRiLmFjY291bnRzLmZpbmQoKGFjYzogYW55KSA9PiBhY2MuYWNjb3VudF9pZCA9PT0gdG9rZW4pXG5cbiAgICBpZiAoYWNjb3VudCkge1xuICAgICAgY3R4LmF1dGggPSB7XG4gICAgICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgICAgIHBlcnNvbmFsX29yZ19pZDogYG9yZy0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgICBnaXRodWJfdXNlcm5hbWU6IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgICB0c2NpcmN1aXRfaGFuZGxlOiBhY2NvdW50LnRzY2lyY3VpdF9oYW5kbGUsXG4gICAgICAgIHNlc3Npb25faWQ6IGBzZXNzaW9uLSR7YWNjb3VudC5hY2NvdW50X2lkfWAsXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG4gIH1cblxuICBjdHguYXV0aCA9IHtcbiAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICBhY2NvdW50X2lkOiBcImFjY291bnQtMTIzNFwiLFxuICAgIHBlcnNvbmFsX29yZ19pZDogXCJvcmctMTIzNFwiLFxuICAgIGdpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIHRzY2lyY3VpdF9oYW5kbGU6IFwidGVzdHVzZXJcIixcbiAgICBzZXNzaW9uX2lkOiBcInNlc3Npb24tMTIzNFwiLFxuICB9XG5cbiAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG59XG4iLCAiaW1wb3J0IHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IGtsZXVyIGZyb20gXCJrbGV1clwiXG5cbmV4cG9ydCBjb25zdCB3aXRoRXJyb3JIYW5kbGluZzogTWlkZGxld2FyZTx7fSwge30+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IG5leHQocmVxLCBjdHgpXG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICBjb25zb2xlLmVycm9yKGtsZXVyLnJlZChcIkludGVyY2VwdGVkIGVycm9yOlwiKSwgZXJyb3IpXG4gICAgLy8gSWYgZXJyb3IgaXMgYSBSZXNwb25zZSwgcmV0dXJuIGl0XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiBlcnJvclxuICAgIH1cbiAgICByZXR1cm4gKGN0eCBhcyBhbnkpLmpzb24oXG4gICAgICB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBtZXNzYWdlOiBlcnJvcj8ubWVzc2FnZSxcbiAgICAgICAgICBlcnJvcl9jb2RlOiBlcnJvcj8uZXJyb3JfY29kZSA/PyBcImludGVybmFsX3NlcnZlcl9lcnJvclwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHsgc3RhdHVzOiBlcnJvcj8uc3RhdHVzIHx8IDUwMCB9LFxuICAgIClcbiAgfVxufVxuIiwgImltcG9ydCB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCBrbGV1ciBmcm9tIFwia2xldXJcIlxuXG4vLyBFTkFCTEUgQ09MT1JTIEFMV0FZU1xua2xldXIuZW5hYmxlZCA9IHRydWVcblxuY29uc3QgY29sb3JTdGF0dXMgPSAoc3RhdHVzOiBudW1iZXIpID0+IHtcbiAgaWYgKHN0YXR1cyA+PSA1MDApIHtcbiAgICByZXR1cm4ga2xldXIucmVkKHN0YXR1cy50b1N0cmluZygpKVxuICB9XG4gIGlmIChzdGF0dXMgPj0gNDAwKSB7XG4gICAgcmV0dXJuIGtsZXVyLnllbGxvdyhzdGF0dXMudG9TdHJpbmcoKSlcbiAgfVxuICByZXR1cm4ga2xldXIuZ3JlZW4oc3RhdHVzLnRvU3RyaW5nKCkpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyIHtcbiAgZXJyb3I6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxuICBpbmZvOiAoLi4uYXJnczogYW55W10pID0+IHZvaWRcbiAgd2FybjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG4gIGRlYnVnOiAoLi4uYXJnczogYW55W10pID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IHdpdGhSZXF1ZXN0TG9nZ2luZzogTWlkZGxld2FyZTxcbiAge30sXG4gIHtcbiAgICBsb2dnZXI6IExvZ2dlclxuICB9XG4+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIGlmICghY3R4LmxvZ2dlcikge1xuICAgIGN0eC5sb2dnZXIgPSB7XG4gICAgICBlcnJvcjogKC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLmVycm9yKC4uLmFyZ3MpLFxuICAgICAgaW5mbzogKC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLmxvZyguLi5hcmdzKSxcbiAgICAgIHdhcm46ICguLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS53YXJuKC4uLmFyZ3MpLFxuICAgICAgZGVidWc6ICguLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5sb2coLi4uYXJncyksXG4gICAgfVxuICB9XG4gIHRyeSB7XG4gICAgY3R4LmxvZ2dlci5pbmZvKGtsZXVyLmJsdWUoYD4gJHtyZXEubWV0aG9kfSAke3JlcS51cmx9YCkpXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBuZXh0KHJlcSwgY3R4KVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZUJvZHkgPSBhd2FpdCByZXNwb25zZS5jbG9uZSgpLnRleHQoKVxuICAgICAgY3R4LmxvZ2dlci5pbmZvKFxuICAgICAgICBgPCAke2NvbG9yU3RhdHVzKHJlc3BvbnNlLnN0YXR1cyl9ICR7a2xldXIuZ3JheShyZXNwb25zZUJvZHkuc2xpY2UoMCwgNDApLnJlcGxhY2UoLyhcXHJcXG58XFxufFxccikvZ20sIFwiXCIpKX1gLFxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGN0eC5sb2dnZXIuaW5mbyhgPCAke2NvbG9yU3RhdHVzKHJlc3BvbnNlLnN0YXR1cyl9YClcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIGN0eC5sb2dnZXIuaW5mbyhrbGV1ci5yZWQoYDwgRVJST1IgJHtlLnRvU3RyaW5nKCkuc2xpY2UoMCwgNTApfS4uLmApKVxuICAgIHRocm93IGVcbiAgfVxufVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBhaVJldmlld1NjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIGFpX3Jldmlld19pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFpX3JldmlldzogYWlSZXZpZXdTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgYWlfcmV2aWV3X2lkIH0gPSByZXEuanNvbkJvZHlcbiAgY29uc3QgZXhpc3RpbmcgPSBjdHguZGIuZ2V0QWlSZXZpZXdCeUlkKGFpX3Jldmlld19pZClcbiAgaWYgKCFleGlzdGluZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFpX3Jldmlld19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQUkgcmV2aWV3IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIGNvbnN0IHVwZGF0ZWQgPSBjdHguZGIudXBkYXRlQWlSZXZpZXcoYWlfcmV2aWV3X2lkLCB7XG4gICAgYWlfcmV2aWV3X3RleHQ6IFwiUGxhY2Vob2xkZXIgQUkgUmV2aWV3XCIsXG4gICAgc3RhcnRfcHJvY2Vzc2luZ19hdDogZXhpc3Rpbmcuc3RhcnRfcHJvY2Vzc2luZ19hdCA/PyBub3csXG4gICAgZmluaXNoZWRfcHJvY2Vzc2luZ19hdDogbm93LFxuICAgIGRpc3BsYXlfc3RhdHVzOiBcImNvbXBsZXRlZFwiLFxuICB9KSFcbiAgcmV0dXJuIGN0eC5qc29uKHsgYWlfcmV2aWV3OiB1cGRhdGVkIH0pXG59KVxuIiwgImltcG9ydCB7IGRhdGFzaGVldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBjb25zdCBwcm9jZXNzQWxsRGF0YXNoZWV0cyA9IChjdHg6IGFueSkgPT4ge1xuICBjb25zdCBwcm9jZXNzZWQgPSBbXSBhcyB6LmluZmVyPHR5cGVvZiBkYXRhc2hlZXRTY2hlbWE+W11cbiAgY3R4LmRiLmRhdGFzaGVldHMuZm9yRWFjaCgoZHM6IGFueSkgPT4ge1xuICAgIGlmICghZHMucGluX2luZm9ybWF0aW9uIHx8ICFkcy5kYXRhc2hlZXRfcGRmX3VybHMgfHwgIWRzLmFpX2Rlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gY3R4LmRiLnVwZGF0ZURhdGFzaGVldChkcy5kYXRhc2hlZXRfaWQsIHtcbiAgICAgICAgcGluX2luZm9ybWF0aW9uOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGluX251bWJlcjogXCIxXCIsXG4gICAgICAgICAgICBuYW1lOiBcIlBJTjFcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlBsYWNlaG9sZGVyIHBpblwiLFxuICAgICAgICAgICAgY2FwYWJpbGl0aWVzOiBbXCJkaWdpdGFsXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGRhdGFzaGVldF9wZGZfdXJsczogW1wiaHR0cHM6Ly9leGFtcGxlLmNvbS9kYXRhc2hlZXQucGRmXCJdLFxuICAgICAgICBhaV9kZXNjcmlwdGlvbjogXCJQbGFjZWhvbGRlciBhaSBkZXNjcmlwdGlvblwiLFxuICAgICAgfSlcbiAgICAgIHByb2Nlc3NlZC5wdXNoKHVwZGF0ZWQhKVxuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzZWQucHVzaChkcylcbiAgICB9XG4gIH0pXG4gIHJldHVybiBwcm9jZXNzZWRcbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBkYXRhc2hlZXRzOiBkYXRhc2hlZXRTY2hlbWEuYXJyYXkoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgZGF0YXNoZWV0cyA9IHByb2Nlc3NBbGxEYXRhc2hlZXRzKGN0eClcbiAgcmV0dXJuIGN0eC5qc29uKHsgZGF0YXNoZWV0cyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc2VlZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2VlZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uUmVzcG9uc2U6IHouYW55KCksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgcmV0dXJuIGN0eC5qc29uKGN0eC5kYi5nZXRTdGF0ZSgpKVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJTdGVwcyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9vcmRlci1zdGVwc1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzdWNjZXNzOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgLy8gR2V0IGFsbCBvcmRlcnMgdGhhdCBhcmVuJ3QgZmluaXNoZWRcbiAgY29uc3Qgb3JkZXJzID0gY3R4LmRiLm9yZGVycy5maWx0ZXIoKG9yZGVyKSA9PiAhb3JkZXIuaXNfZmluaXNoZWQpXG4gIGNvbnN0IHVwZGF0ZWRPcmRlcnMgPSBbXVxuXG4gIGZvciAoY29uc3Qgb3JkZXIgb2Ygb3JkZXJzKSB7XG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGN0eC5kYi5nZXRKbGNwY2JPcmRlclN0YXRlc0J5T3JkZXJJZChvcmRlci5vcmRlcl9pZClcbiAgICBpZiAoIW9yZGVyU3RhdGUpIGNvbnRpbnVlXG5cbiAgICAvLyBGaW5kIHRoZSBuZXh0IHN0ZXAgdG8gY29tcGxldGVcbiAgICBsZXQgbmV4dFN0ZXBJbmRleCA9IC0xXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcmRlclN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzdGVwID0gb3JkZXJTdGVwc1tpXVxuICAgICAgaWYgKCFvcmRlclN0YXRlW3N0ZXBdKSB7XG4gICAgICAgIG5leHRTdGVwSW5kZXggPSBpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgYWxsIHN0ZXBzIGFyZSBjb21wbGV0ZWQgb3Igbm8gbmV4dCBzdGVwIGZvdW5kXG4gICAgaWYgKG5leHRTdGVwSW5kZXggPT09IC0xKSB7XG4gICAgICB1cGRhdGVkT3JkZXJzLnB1c2goe1xuICAgICAgICBvcmRlcl9pZDogb3JkZXIub3JkZXJfaWQsXG4gICAgICAgIGN1cnJlbnRfc3RlcDogbnVsbCxcbiAgICAgIH0pXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgbmV4dCBzdGVwIHRvIHRydWVcbiAgICBjb25zdCBuZXh0U3RlcCA9IG9yZGVyU3RlcHNbbmV4dFN0ZXBJbmRleF1cbiAgICBjb25zdCB1cGRhdGVzID0ge1xuICAgICAgW25leHRTdGVwXTogdHJ1ZSxcbiAgICAgIGN1cnJlbnRfc3RlcDogbmV4dFN0ZXAsXG4gICAgfVxuXG4gICAgLy8gSWYgdGhpcyBpcyB0aGUgbGFzdCBzdGVwLCBhbHNvIHVwZGF0ZSB0aGUgb3JkZXIgc3RhdHVzXG4gICAgaWYgKG5leHRTdGVwSW5kZXggPT09IG9yZGVyU3RlcHMubGVuZ3RoIC0gMSkge1xuICAgICAgY3R4LmRiLnVwZGF0ZU9yZGVyKG9yZGVyLm9yZGVyX2lkLCB7XG4gICAgICAgIGlzX2ZpbmlzaGVkOiB0cnVlLFxuICAgICAgICBjb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY3R4LmRiLnVwZGF0ZUpsY3BjYk9yZGVyU3RhdGUob3JkZXIub3JkZXJfaWQsIHVwZGF0ZXMpXG5cbiAgICB1cGRhdGVkT3JkZXJzLnB1c2goe1xuICAgICAgb3JkZXJfaWQ6IG9yZGVyLm9yZGVyX2lkLFxuICAgICAgY3VycmVudF9zdGVwOiBuZXh0U3RlcCxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICB9KVxufSlcbiIsICJleHBvcnQgY29uc3Qgb3JkZXJTdGVwcyA9IFtcbiAgXCJhcmVfZ2VyYmVyc19nZW5lcmF0ZWRcIixcbiAgXCJhcmVfZ2VyYmVyc191cGxvYWRlZFwiLFxuICBcImlzX2dlcmJlcl9hbmFseXplZFwiLFxuICBcImFyZV9pbml0aWFsX2Nvc3RzX2NhbGN1bGF0ZWRcIixcbiAgXCJpc19wY2JfYWRkZWRfdG9fY2FydFwiLFxuICBcImlzX2JvbV91cGxvYWRlZFwiLFxuICBcImlzX3BucF91cGxvYWRlZFwiLFxuICBcImlzX2JvbV9wbnBfYW5hbHl6ZWRcIixcbiAgXCJpc19ib21fcGFyc2luZ19jb21wbGV0ZVwiLFxuICBcImFyZV9jb21wb25lbnRzX2F2YWlsYWJsZVwiLFxuICBcImlzX3BhdGNoX21hcF9nZW5lcmF0ZWRcIixcbiAgXCJpc19qc29uX21lcmdlX2ZpbGVfY3JlYXRlZFwiLFxuICBcImlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkXCIsXG4gIFwiYXJlX2ZpbGVzX2Rvd25sb2FkZWRcIixcbiAgXCJhcmVfcHJvZHVjdF9jYXRlZ29yaWVzX2ZldGNoZWRcIixcbiAgXCJhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZFwiLFxuICBcImlzX2pzb25fbWVyZ2VfZmlsZV91cGRhdGVkXCIsXG4gIFwiaXNfYWRkZWRfdG9fY2FydFwiLFxuXSBhcyBjb25zdFxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclF1b3RlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfcXVvdGVfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZXM6IG9yZGVyUXVvdGVTY2hlbWEuYXJyYXkoKS5vcHRpb25hbCgpLFxuICAgIGVycm9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JkZXJfcXVvdGVfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfcXVvdGVzOiBbXG4gICAgICB7XG4gICAgICAgIG9yZGVyX3F1b3RlX2lkLFxuICAgICAgICBhY2NvdW50X2lkOiBcIjEyM1wiLFxuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IFwiMTIzXCIsXG4gICAgICAgIGlzX2NvbXBsZXRlZDogdHJ1ZSxcbiAgICAgICAgaXNfcHJvY2Vzc2luZzogZmFsc2UsXG4gICAgICAgIHZlbmRvcl9uYW1lOiBcIkpMQ1BDQlwiLFxuICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgaGFzX2Vycm9yOiBmYWxzZSxcbiAgICAgICAgY3JlYXRlZF9hdDogXCIyMDI1LTA0LTIxXCIsXG4gICAgICAgIHVwZGF0ZWRfYXQ6IFwiMjAyNS0wNC0yMVwiLFxuICAgICAgICBjb21wbGV0ZWRfYXQ6IFwiMjAyNS0wNC0yMVwiLFxuICAgICAgICBxdW90ZWRfY29tcG9uZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1hbnVmYWN0dXJlcl9wYXJ0X251bWJlcjogXCIxMjNcIixcbiAgICAgICAgICAgIHN1cHBsaWVyX3BhcnRfbnVtYmVyOiBcIjEyM1wiLFxuICAgICAgICAgICAgcXVhbnRpdHk6IDEsXG4gICAgICAgICAgICB1bml0X3ByaWNlOiAxMDAsXG4gICAgICAgICAgICB0b3RhbF9wcmljZTogMTAwLFxuICAgICAgICAgICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWFudWZhY3R1cmVyX3BhcnRfbnVtYmVyOiBcIjEyMzRcIixcbiAgICAgICAgICAgIHN1cHBsaWVyX3BhcnRfbnVtYmVyOiBcIjEyMzRcIixcbiAgICAgICAgICAgIHF1YW50aXR5OiAxLFxuICAgICAgICAgICAgdW5pdF9wcmljZTogMjAwLFxuICAgICAgICAgICAgdG90YWxfcHJpY2U6IDIwMCxcbiAgICAgICAgICAgIGF2YWlsYWJsZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBiYXJlX3BjYl9jb3N0OiAzMDAsXG4gICAgICAgIHNoaXBwaW5nX29wdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjYXJyaWVyOiBcIkRITFwiLFxuICAgICAgICAgICAgc2VydmljZTogXCJFeHByZXNzXCIsXG4gICAgICAgICAgICBjb3N0OiAxMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjYXJyaWVyOiBcIkZlZEV4XCIsXG4gICAgICAgICAgICBzZXJ2aWNlOiBcIkV4cHJlc3NcIixcbiAgICAgICAgICAgIGNvc3Q6IDIwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0b3RhbF9jb3N0X3dpdGhvdXRfc2hpcHBpbmc6IDEwMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yZGVyX3F1b3RlX2lkLFxuICAgICAgICBhY2NvdW50X2lkOiBcIjEyM1wiLFxuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IFwiMTIzXCIsXG4gICAgICAgIGlzX2NvbXBsZXRlZDogdHJ1ZSxcbiAgICAgICAgaXNfcHJvY2Vzc2luZzogZmFsc2UsXG4gICAgICAgIHZlbmRvcl9uYW1lOiBcIkRLUmVkXCIsXG4gICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICBoYXNfZXJyb3I6IGZhbHNlLFxuICAgICAgICBjcmVhdGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgICAgdXBkYXRlZF9hdDogXCIyMDI1LTA0LTIxXCIsXG4gICAgICAgIGNvbXBsZXRlZF9hdDogXCIyMDI1LTA0LTIxXCIsXG4gICAgICAgIHF1b3RlZF9jb21wb25lbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWFudWZhY3R1cmVyX3BhcnRfbnVtYmVyOiBcIjEyM1wiLFxuICAgICAgICAgICAgc3VwcGxpZXJfcGFydF9udW1iZXI6IFwiMTIzXCIsXG4gICAgICAgICAgICBxdWFudGl0eTogMSxcbiAgICAgICAgICAgIHVuaXRfcHJpY2U6IDEwMCxcbiAgICAgICAgICAgIHRvdGFsX3ByaWNlOiAxMDAsXG4gICAgICAgICAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYW51ZmFjdHVyZXJfcGFydF9udW1iZXI6IFwiMTIzNFwiLFxuICAgICAgICAgICAgc3VwcGxpZXJfcGFydF9udW1iZXI6IFwiMTIzNFwiLFxuICAgICAgICAgICAgcXVhbnRpdHk6IDEsXG4gICAgICAgICAgICB1bml0X3ByaWNlOiAyMDAsXG4gICAgICAgICAgICB0b3RhbF9wcmljZTogMjAwLFxuICAgICAgICAgICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGJhcmVfcGNiX2Nvc3Q6IDMwMCxcbiAgICAgICAgc2hpcHBpbmdfb3B0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNhcnJpZXI6IFwiREhMXCIsXG4gICAgICAgICAgICBzZXJ2aWNlOiBcIkV4cHJlc3NcIixcbiAgICAgICAgICAgIGNvc3Q6IDEwMCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNhcnJpZXI6IFwiRmVkRXhcIixcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiRXhwcmVzc1wiLFxuICAgICAgICAgICAgY29zdDogMjAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRvdGFsX2Nvc3Rfd2l0aG91dF9zaGlwcGluZzogMTAwLFxuICAgICAgfSxcbiAgICBdLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcHJvY2Vzc0FsbERhdGFzaGVldHMgfSBmcm9tIFwiLi9kYXRhc2hlZXRzL3Byb2Nlc3NfYWxsX2RhdGFzaGVldHNcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7IG9rOiB6LmJvb2xlYW4oKSB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBwcm9jZXNzQWxsRGF0YXNoZWV0cyhjdHgpXG4gIHJldHVybiBjdHguanNvbih7IG9rOiB0cnVlIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzZWVkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zZWVkXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHsgb2s6IHouYm9vbGVhbigpIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIHNlZWQoY3R4LmRiKVxuXG4gIHJldHVybiBjdHguanNvbih7IG9rOiB0cnVlIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBhY2NvdW50X2JhbGFuY2U6IHoub2JqZWN0KHtcbiAgICAgIG1vbnRobHlfYWlfYnVkZ2V0X3VzZWRfdXNkOiB6Lm51bWJlcigpLFxuICAgIH0pLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICAvLyBGb3IgdGhpcyBleGFtcGxlLCB3ZSdsbCByZXR1cm4gYSBtb2NrIGJhbGFuY2VcbiAgLy8gSW4gYSByZWFsIGltcGxlbWVudGF0aW9uLCB5b3Ugd291bGQgZmV0Y2ggdGhpcyBmcm9tIGEgZGF0YWJhc2Ugb3IgZXh0ZXJuYWwgc2VydmljZVxuICBjb25zdCBtb2NrQmFsYW5jZSA9IHtcbiAgICBtb250aGx5X2FpX2J1ZGdldF91c2VkX3VzZDogMi41LFxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBhY2NvdW50X2JhbGFuY2U6IG1vY2tCYWxhbmNlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHtcbiAgQWNjb3VudCxcbiAgYWNjb3VudFNjaGVtYSxcbiAgcHVibGljQWNjb3VudFNjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIGFjY291bnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB0c2NpcmN1aXRfaGFuZGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZ2l0aHViX3VzZXJuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBhY2NvdW50OiBwdWJsaWNBY2NvdW50U2NoZW1hLmV4dGVuZCh7XG4gICAgICBlbWFpbDogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGxldCBhY2NvdW50OiBBY2NvdW50IHwgdW5kZWZpbmVkXG4gIGNvbnN0IHsgYWNjb3VudF9pZCwgZ2l0aHViX3VzZXJuYW1lLCB0c2NpcmN1aXRfaGFuZGxlIH0gPSByZXEuY29tbW9uUGFyYW1zXG4gIGlmIChhY2NvdW50X2lkKSB7XG4gICAgY29uc3QgZm91bmRBY2NvdW50ID0gY3R4LmRiLmFjY291bnRzLmZpbmQoXG4gICAgICAoYWNjOiBBY2NvdW50KSA9PiBhY2MuYWNjb3VudF9pZCA9PT0gYWNjb3VudF9pZCxcbiAgICApXG4gICAgaWYgKGZvdW5kQWNjb3VudCkge1xuICAgICAgYWNjb3VudCA9IHsgLi4uZm91bmRBY2NvdW50LCBlbWFpbDogdW5kZWZpbmVkIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAodHNjaXJjdWl0X2hhbmRsZSkge1xuICAgIGNvbnN0IGZvdW5kQWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKFxuICAgICAgKGFjYzogQWNjb3VudCkgPT5cbiAgICAgICAgYWNjLnRzY2lyY3VpdF9oYW5kbGU/LnRvTG93ZXJDYXNlKCkgPT09IHRzY2lyY3VpdF9oYW5kbGUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gICAgaWYgKGZvdW5kQWNjb3VudCkge1xuICAgICAgYWNjb3VudCA9IHsgLi4uZm91bmRBY2NvdW50LCBlbWFpbDogdW5kZWZpbmVkIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgY29uc3QgZm91bmRBY2NvdW50ID0gY3R4LmRiLmFjY291bnRzLmZpbmQoXG4gICAgICAoYWNjOiBBY2NvdW50KSA9PlxuICAgICAgICBhY2MuZ2l0aHViX3VzZXJuYW1lPy50b0xvd2VyQ2FzZSgpID09PSBnaXRodWJfdXNlcm5hbWUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gICAgaWYgKGZvdW5kQWNjb3VudCkge1xuICAgICAgYWNjb3VudCA9IHsgLi4uZm91bmRBY2NvdW50LCBlbWFpbDogdW5kZWZpbmVkIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG4gIH1cblxuICBpZiAoIWFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oeyBhY2NvdW50IH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBhY2NvdW50U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcXVlcnk6IHouc3RyaW5nKCksXG4gICAgbGltaXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZWZhdWx0KDUwKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBhY2NvdW50czogei5hcnJheShhY2NvdW50U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBxdWVyeSwgbGltaXQgfSA9IHJlcS5qc29uQm9keVxuICBjb25zdCBhY2NvdW50cyA9IGN0eC5kYi5zZWFyY2hBY2NvdW50cyhxdWVyeSwgbGltaXQpXG4gIHJldHVybiBjdHguanNvbih7IGFjY291bnRzLCBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHtcbiAgYWNjb3VudFNjaGVtYSxcbiAgdHNjaXJjdWl0SGFuZGxlU2NoZW1hLFxufSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCIsIFwiUEFUQ0hcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHRzY2lyY3VpdF9oYW5kbGU6IHRzY2lyY3VpdEhhbmRsZVNjaGVtYSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFjY291bnQ6IGFjY291bnRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgdHNjaXJjdWl0X2hhbmRsZSB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgcmVxdWVzdGVkSGFuZGxlID0gdHNjaXJjdWl0X2hhbmRsZS50cmltKClcblxuICBpZiAoIXJlcXVlc3RlZEhhbmRsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfdHNjaXJjdWl0X2hhbmRsZVwiLFxuICAgICAgbWVzc2FnZTogXCJ0c2NpcmN1aXRfaGFuZGxlIGNhbm5vdCBiZSBlbXB0eVwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBhY2NvdW50ID0gY3R4LmRiLmdldEFjY291bnQoY3R4LmF1dGguYWNjb3VudF9pZClcblxuICBpZiAoIWFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBleGlzdGluZ0hhbmRsZUxvd2VyID0gYWNjb3VudC50c2NpcmN1aXRfaGFuZGxlPy50b0xvd2VyQ2FzZSgpXG4gIGNvbnN0IHJlcXVlc3RlZEhhbmRsZUxvd2VyID0gcmVxdWVzdGVkSGFuZGxlLnRvTG93ZXJDYXNlKClcblxuICBpZiAoZXhpc3RpbmdIYW5kbGVMb3dlciA9PT0gcmVxdWVzdGVkSGFuZGxlTG93ZXIpIHtcbiAgICByZXR1cm4gY3R4Lmpzb24oeyBhY2NvdW50IH0pXG4gIH1cblxuICBjb25zdCBkdXBsaWNhdGVBY2NvdW50ID0gY3R4LmRiXG4gICAgLmdldFN0YXRlKClcbiAgICAuYWNjb3VudHMuZmluZChcbiAgICAgIChhKSA9PlxuICAgICAgICBhLnRzY2lyY3VpdF9oYW5kbGU/LnRvTG93ZXJDYXNlKCkgPT09IHJlcXVlc3RlZEhhbmRsZUxvd2VyICYmXG4gICAgICAgIGEuYWNjb3VudF9pZCAhPT0gY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICApXG5cbiAgaWYgKGR1cGxpY2F0ZUFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X3RzY2lyY3VpdF9oYW5kbGVfYWxyZWFkeV9leGlzdHNcIixcbiAgICAgIG1lc3NhZ2U6IFwiQW5vdGhlciBhY2NvdW50IGFscmVhZHkgdXNlcyB0aGlzIHRzY2lyY3VpdCBoYW5kbGVcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgdXBkYXRlZEFjY291bnQgPSBjdHguZGIudXBkYXRlQWNjb3VudChjdHguYXV0aC5hY2NvdW50X2lkLCB7XG4gICAgdHNjaXJjdWl0X2hhbmRsZTogcmVxdWVzdGVkSGFuZGxlLFxuICB9KVxuXG4gIGlmICghdXBkYXRlZEFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cbiAgaWYgKGFjY291bnQucGVyc29uYWxfb3JnX2lkKSB7XG4gICAgY29uc3QgcGVyc29uYWxPcmcgPSBjdHguZGJcbiAgICAgIC5nZXRTdGF0ZSgpXG4gICAgICAub3JnYW5pemF0aW9ucy5maW5kKChvcmcpID0+IG9yZy5vcmdfaWQgPT09IGFjY291bnQucGVyc29uYWxfb3JnX2lkKVxuICAgIGlmIChwZXJzb25hbE9yZyAmJiBwZXJzb25hbE9yZy5pc19wZXJzb25hbF9vcmcpIHtcbiAgICAgIGN0eC5kYi51cGRhdGVPcmdhbml6YXRpb24oYWNjb3VudC5wZXJzb25hbF9vcmdfaWQsIHtcbiAgICAgICAgdHNjaXJjdWl0X2hhbmRsZTogcmVxdWVzdGVkSGFuZGxlLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oeyBhY2NvdW50OiB1cGRhdGVkQWNjb3VudCB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgYWlSZXZpZXdTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm9wdGlvbmFsKCksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFpX3JldmlldzogYWlSZXZpZXdTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkIH0gPSByZXEuanNvbkJvZHkgPz8ge31cblxuICBpZiAocGFja2FnZV9yZWxlYXNlX2lkKSB7XG4gICAgY29uc3QgcmVsZWFzZSA9IGN0eC5kYi5nZXRQYWNrYWdlUmVsZWFzZUJ5SWQocGFja2FnZV9yZWxlYXNlX2lkKVxuICAgIGlmICghcmVsZWFzZSkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG4gICAgY3R4LmRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlKHtcbiAgICAgIC4uLnJlbGVhc2UsXG4gICAgICBhaV9yZXZpZXdfcmVxdWVzdGVkOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBhaV9yZXZpZXcgPSBjdHguZGIuYWRkQWlSZXZpZXcoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIGFpX3Jldmlld190ZXh0OiBudWxsLFxuICAgIHN0YXJ0X3Byb2Nlc3NpbmdfYXQ6IG51bGwsXG4gICAgZmluaXNoZWRfcHJvY2Vzc2luZ19hdDogbnVsbCxcbiAgICBwcm9jZXNzaW5nX2Vycm9yOiBudWxsLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBkaXNwbGF5X3N0YXR1czogXCJwZW5kaW5nXCIsXG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgYWlfcmV2aWV3IH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBhaVJldmlld1NjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgYWlfcmV2aWV3X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWlfcmV2aWV3OiBhaVJldmlld1NjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBhaV9yZXZpZXdfaWQgfSA9IHJlcS5xdWVyeVxuICBjb25zdCBhaV9yZXZpZXcgPSBjdHguZGIuZ2V0QWlSZXZpZXdCeUlkKGFpX3Jldmlld19pZClcbiAgaWYgKCFhaV9yZXZpZXcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhaV9yZXZpZXdfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFJIHJldmlldyBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG4gIHJldHVybiBjdHguanNvbih7IGFpX3JldmlldyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgYWlSZXZpZXdTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBhaV9yZXZpZXdzOiB6LmFycmF5KGFpUmV2aWV3U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgYWlfcmV2aWV3cyA9IGN0eC5kYi5saXN0QWlSZXZpZXdzKClcbiAgcmV0dXJuIGN0eC5qc29uKHsgYWlfcmV2aWV3cyB9KVxufSlcbiIsICIvKipcbiAqIEZvcndhcmQgcmVxdWVzdCB0byBhbnRocm9waWNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgKHJlcTogUmVxdWVzdCkgPT4ge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpXG4gIGNvbnN0IGFudGhyb3BpY0FwaUtleSA9IHByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfS0VZXG5cbiAgaWYgKCFhbnRocm9waWNBcGlLZXkpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiQW50aHJvcGljIEFQSSBrZXkgaXMgbm90IHNldFwiLCB7IHN0YXR1czogNTAwIH0pXG4gIH1cblxuICBjb25zdCBhbnRocm9waWNVcmwgPVxuICAgIFwiaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbVwiICsgdXJsLnBhdGhuYW1lLnJlcGxhY2UoL15cXC9hcGlcXC9haS8sIFwiXCIpXG5cbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlcS5oZWFkZXJzKVxuICBoZWFkZXJzLnNldChcIngtYXBpLWtleVwiLCBgJHthbnRocm9waWNBcGlLZXl9YClcblxuICBjb25zb2xlLmxvZyhcInNlbmRpbmcgcmVxdWVzdCB0byBhbnRocm9waWNcIilcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChhbnRocm9waWNVcmwsIHtcbiAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgaGVhZGVyczogaGVhZGVycyxcbiAgICBib2R5OiByZXEuYm9keSxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZHVwbGV4OiBcImhhbGZcIixcbiAgfSkudGhlbigocikgPT4gci5qc29uKCkpXG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeShyZXNwb25zZSksIHtcbiAgICBzdGF0dXM6IDIwMCxcbiAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gIH0pXG59XG4iLCAiaW1wb3J0IGFpIGZyb20gXCIuL2FpL1suLi5hbnlyb3V0ZV1cIlxuZXhwb3J0IGRlZmF1bHQgYWlcbiIsICJpbXBvcnQgeyBSZWFkYWJsZVN0cmVhbSB9IGZyb20gXCJzdHJlYW0vd2ViXCJcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgKHJlcTogUmVxdWVzdCkgPT4ge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpXG4gIGNvbnN0IGFudGhyb3BpY0FwaUtleSA9IHByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfS0VZXG5cbiAgaWYgKCFhbnRocm9waWNBcGlLZXkpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiQW50aHJvcGljIEFQSSBrZXkgaXMgbm90IHNldFwiLCB7IHN0YXR1czogNTAwIH0pXG4gIH1cblxuICBjb25zdCBhbnRocm9waWNVcmwgPVxuICAgIFwiaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbVwiICsgdXJsLnBhdGhuYW1lLnJlcGxhY2UoL15cXC9hcGlcXC9haS8sIFwiXCIpXG5cbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlcS5oZWFkZXJzKVxuICBoZWFkZXJzLnNldChcIngtYXBpLWtleVwiLCBgJHthbnRocm9waWNBcGlLZXl9YClcbiAgaGVhZGVycy5zZXQoXCJBY2NlcHRcIiwgXCJ0ZXh0L2V2ZW50LXN0cmVhbVwiKVxuICBoZWFkZXJzLnNldChcIkNhY2hlLUNvbnRyb2xcIiwgXCJuby1jYWNoZVwiKVxuICBoZWFkZXJzLnNldChcIkNvbm5lY3Rpb25cIiwgXCJrZWVwLWFsaXZlXCIpXG5cbiAgY29uc29sZS5sb2coXCJzZW5kaW5nIHJlcXVlc3QgdG8gYW50aHJvcGljXCIpXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYW50aHJvcGljVXJsLCB7XG4gICAgbWV0aG9kOiByZXEubWV0aG9kLFxuICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgYm9keTogcmVxLmJvZHksXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGR1cGxleDogXCJoYWxmXCIsXG4gIH0pXG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHJlc3BvbnNlIGlzIHN1Y2Nlc3NmdWxcbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICBgQW50aHJvcGljIEFQSSByZXR1cm5lZCBhbiBlcnJvcjogJHtyZXNwb25zZS5zdGF0dXN9ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gLFxuICAgICAge1xuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgUmVhZGFibGVTdHJlYW0gdG8gcHJvY2VzcyB0aGUgcmVzcG9uc2VcbiAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICBhc3luYyBzdGFydChjb250cm9sbGVyKSB7XG4gICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5IS5nZXRSZWFkZXIoKVxuXG4gICAgICB0cnkge1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgICAgICBpZiAoZG9uZSkgYnJlYWtcbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpXG4gICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKVxuICAgICAgfVxuICAgIH0sXG4gIH0pXG5cbiAgLy8gUmV0dXJuIGEgc3RyZWFtaW5nIHJlc3BvbnNlXG4gIHJldHVybiBuZXcgUmVzcG9uc2Uoc3RyZWFtIGFzIGFueSwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9ldmVudC1zdHJlYW1cIixcbiAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcIm5vLWNhY2hlXCIsXG4gICAgICBDb25uZWN0aW9uOiBcImtlZXAtYWxpdmVcIixcbiAgICB9LFxuICB9KVxufVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwcmVmaXg6IHouc3RyaW5nKCksXG4gICAgc3VmZml4OiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgcHJlZGljdGlvbjogei5zdHJpbmcoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgcmV0dXJuIGN0eC5qc29uKHsgcHJlZGljdGlvbjogXCJ7LyogbW9jayBhdXRvY29tcGxldGUgcHJlZGljdGlvbiAqL31cIiB9KVxufSlcbiIsICJpbXBvcnQgeyBidWdSZXBvcnRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5jb25zdCByZXF1ZXN0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0ZXh0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfYXV0b19kZWxldGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGRlbGV0ZV9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdXBlclJlZmluZSgoZGF0YSwgY3R4KSA9PiB7XG4gICAgaWYgKGRhdGEuaXNfYXV0b19kZWxldGVkICYmICFkYXRhLmRlbGV0ZV9hdCkge1xuICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgY29kZTogei5ab2RJc3N1ZUNvZGUuY3VzdG9tLFxuICAgICAgICBtZXNzYWdlOiBcImRlbGV0ZV9hdCBpcyByZXF1aXJlZCB3aGVuIGlzX2F1dG9fZGVsZXRlZCBpcyB0cnVlXCIsXG4gICAgICAgIHBhdGg6IFtcImRlbGV0ZV9hdFwiXSxcbiAgICAgIH0pXG4gICAgfVxuICB9KVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiByZXF1ZXN0U2NoZW1hLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5saXRlcmFsKHRydWUpLFxuICAgIGJ1Z19yZXBvcnQ6IGJ1Z1JlcG9ydFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyB0ZXh0LCBpc19hdXRvX2RlbGV0ZWQgPSBmYWxzZSwgZGVsZXRlX2F0IH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBidWdSZXBvcnQgPSBjdHguZGIuYWRkQnVnUmVwb3J0KHtcbiAgICByZXBvcnRlcl9hY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIHRleHQ6IHRleHQgPz8gbnVsbCxcbiAgICBpc19hdXRvX2RlbGV0ZWQsXG4gICAgZGVsZXRlX2F0OiBpc19hdXRvX2RlbGV0ZWQgPyBkZWxldGVfYXQgOiBudWxsLFxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgYnVnX3JlcG9ydDogYnVnUmVwb3J0LFxuICB9KVxufSlcbiIsICJpbXBvcnQgSlNaaXAgZnJvbSBcImpzemlwXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIGJ1Z19yZXBvcnRfaWQ6IHouc3RyaW5nKCkudXVpZCgpLFxuICB9KSxcbiAgcmF3UmVzcG9uc2U6IHRydWUsXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBidWdfcmVwb3J0X2lkIH0gPSByZXEucXVlcnlcblxuICBjb25zdCBidWdSZXBvcnQgPSBjdHguZGIuZ2V0QnVnUmVwb3J0QnlJZChidWdfcmVwb3J0X2lkKVxuICBpZiAoIWJ1Z1JlcG9ydCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImJ1Z19yZXBvcnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkJ1ZyByZXBvcnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChidWdSZXBvcnQucmVwb3J0ZXJfYWNjb3VudF9pZCAhPT0gY3R4LmF1dGguYWNjb3VudF9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImJ1Z19yZXBvcnRfZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhpcyBidWcgcmVwb3J0XCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGJ1Z1JlcG9ydEZpbGVzID0gY3R4LmRiLmdldEJ1Z1JlcG9ydEZpbGVzQnlCdWdSZXBvcnRJZChidWdfcmVwb3J0X2lkKVxuXG4gIGNvbnN0IHppcCA9IG5ldyBKU1ppcCgpXG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGJ1Z1JlcG9ydEZpbGVzKSB7XG4gICAgaWYgKGZpbGUuaXNfdGV4dCkge1xuICAgICAgemlwLmZpbGUoZmlsZS5maWxlX3BhdGgsIGZpbGUuY29udGVudF90ZXh0ID8/IFwiXCIsIHsgYmluYXJ5OiBmYWxzZSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBieXRlcyA9IGZpbGUuY29udGVudF9ieXRlcyA/PyBuZXcgVWludDhBcnJheSgpXG4gICAgICB6aXAuZmlsZShmaWxlLmZpbGVfcGF0aCwgYnl0ZXMsIHsgYmluYXJ5OiB0cnVlIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgemlwQ29udGVudCA9IGF3YWl0IHppcC5nZW5lcmF0ZUFzeW5jKHsgdHlwZTogXCJhcnJheWJ1ZmZlclwiIH0pXG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh6aXBDb250ZW50LCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi96aXBcIixcbiAgICAgIFwiQ29udGVudC1EaXNwb3NpdGlvblwiOiBgYXR0YWNobWVudDsgZmlsZW5hbWU9XCJidWctcmVwb3J0LSR7YnVnX3JlcG9ydF9pZH0uemlwXCJgLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCJub2RlOmJ1ZmZlclwiXG5pbXBvcnQgeyBidWdSZXBvcnRGaWxlUmVzcG9uc2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoQW5kVmFsaWRhdGUgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3QgcmVxdWVzdFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgYnVnX3JlcG9ydF9pZDogei5zdHJpbmcoKS51dWlkKCksXG4gICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb250ZW50X3RleHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb250ZW50X2Jhc2U2NDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3VwZXJSZWZpbmUoKGRhdGEsIGN0eCkgPT4ge1xuICAgIGlmIChkYXRhLmNvbnRlbnRfdGV4dCAhPT0gdW5kZWZpbmVkICYmIGRhdGEuY29udGVudF9iYXNlNjQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY3R4LmFkZElzc3VlKHtcbiAgICAgICAgY29kZTogei5ab2RJc3N1ZUNvZGUuY3VzdG9tLFxuICAgICAgICBtZXNzYWdlOiBcIlByb3ZpZGUgZWl0aGVyIGNvbnRlbnRfdGV4dCBvciBjb250ZW50X2Jhc2U2NCwgbm90IGJvdGhcIixcbiAgICAgICAgcGF0aDogW1wiY29udGVudF90ZXh0XCJdLFxuICAgICAgfSlcbiAgICB9XG4gIH0pXG5cbmNvbnN0IGluZmVyTWltZXR5cGUgPSAoZmlsZVBhdGg6IHN0cmluZywgcHJvdmlkZWQ/OiBzdHJpbmcpID0+IHtcbiAgaWYgKHByb3ZpZGVkKSByZXR1cm4gcHJvdmlkZWRcblxuICBjb25zdCBsb3dlclBhdGggPSBmaWxlUGF0aC50b0xvd2VyQ2FzZSgpXG4gIGlmIChsb3dlclBhdGguZW5kc1dpdGgoXCIudHNcIikgfHwgbG93ZXJQYXRoLmVuZHNXaXRoKFwiLnRzeFwiKSkge1xuICAgIHJldHVybiBcInRleHQvdHlwZXNjcmlwdFwiXG4gIH1cbiAgaWYgKGxvd2VyUGF0aC5lbmRzV2l0aChcIi5qc1wiKSkgcmV0dXJuIFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiXG4gIGlmIChsb3dlclBhdGguZW5kc1dpdGgoXCIuanNvblwiKSkgcmV0dXJuIFwiYXBwbGljYXRpb24vanNvblwiXG4gIGlmIChsb3dlclBhdGguZW5kc1dpdGgoXCIubWRcIikpIHJldHVybiBcInRleHQvbWFya2Rvd25cIlxuICBpZiAobG93ZXJQYXRoLmVuZHNXaXRoKFwiLmh0bWxcIikpIHJldHVybiBcInRleHQvaHRtbFwiXG4gIGlmIChsb3dlclBhdGguZW5kc1dpdGgoXCIuY3NzXCIpKSByZXR1cm4gXCJ0ZXh0L2Nzc1wiXG4gIGlmIChsb3dlclBhdGguZW5kc1dpdGgoXCIudHh0XCIpKSByZXR1cm4gXCJ0ZXh0L3BsYWluXCJcbiAgcmV0dXJuIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogcmVxdWVzdFNjaGVtYSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHoubGl0ZXJhbCh0cnVlKSxcbiAgICBidWdfcmVwb3J0X2ZpbGU6IGJ1Z1JlcG9ydEZpbGVSZXNwb25zZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIGJ1Z19yZXBvcnRfaWQsXG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfbWltZXR5cGUsXG4gICAgY29udGVudF90ZXh0LFxuICAgIGNvbnRlbnRfYmFzZTY0LFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgYnVnUmVwb3J0ID0gY3R4LmRiLmdldEJ1Z1JlcG9ydEJ5SWQoYnVnX3JlcG9ydF9pZClcbiAgaWYgKCFidWdSZXBvcnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJidWdfcmVwb3J0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJCdWcgcmVwb3J0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoYnVnUmVwb3J0LnJlcG9ydGVyX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJidWdfcmVwb3J0X2ZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG8gbm90IGhhdmUgYWNjZXNzIHRvIG1vZGlmeSB0aGlzIGJ1ZyByZXBvcnRcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmdcbiAgdHJ5IHtcbiAgICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aEFuZFZhbGlkYXRlKGZpbGVfcGF0aClcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX2ZpbGVfcGF0aFwiLFxuICAgICAgbWVzc2FnZTogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBcIkludmFsaWQgZmlsZSBwYXRoXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG1pbWVUeXBlID0gaW5mZXJNaW1ldHlwZShub3JtYWxpemVkUGF0aCwgY29udGVudF9taW1ldHlwZSlcbiAgY29uc3QgaGFzQmFzZTY0ID0gY29udGVudF9iYXNlNjQgIT09IHVuZGVmaW5lZFxuICBjb25zdCBoYXNUZXh0ID0gY29udGVudF90ZXh0ICE9PSB1bmRlZmluZWRcbiAgY29uc3QgaXNUZXh0VXBsb2FkID0gaGFzVGV4dCB8fCAhaGFzQmFzZTY0XG4gIGNvbnN0IHN0b3JlZFRleHQgPSBpc1RleHRVcGxvYWQgPyAoY29udGVudF90ZXh0ID8/IFwiXCIpIDogbnVsbFxuICBjb25zdCBzdG9yZWRCeXRlcyA9XG4gICAgaXNUZXh0VXBsb2FkIHx8ICFoYXNCYXNlNjRcbiAgICAgID8gbnVsbFxuICAgICAgOiBCdWZmZXIuZnJvbShjb250ZW50X2Jhc2U2NCA/PyBcIlwiLCBcImJhc2U2NFwiKVxuXG4gIGNvbnN0IGJ1Z1JlcG9ydEZpbGUgPSBjdHguZGIuYWRkQnVnUmVwb3J0RmlsZSh7XG4gICAgYnVnX3JlcG9ydF9pZCxcbiAgICBmaWxlX3BhdGg6IG5vcm1hbGl6ZWRQYXRoLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IG1pbWVUeXBlLFxuICAgIGlzX3RleHQ6IGlzVGV4dFVwbG9hZCxcbiAgICBjb250ZW50X3RleHQ6IHN0b3JlZFRleHQsXG4gICAgY29udGVudF9ieXRlczogc3RvcmVkQnl0ZXMsXG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBidWdfcmVwb3J0X2ZpbGU6IHtcbiAgICAgIGJ1Z19yZXBvcnRfZmlsZV9pZDogYnVnUmVwb3J0RmlsZS5idWdfcmVwb3J0X2ZpbGVfaWQsXG4gICAgICBidWdfcmVwb3J0X2lkOiBidWdSZXBvcnRGaWxlLmJ1Z19yZXBvcnRfaWQsXG4gICAgICBmaWxlX3BhdGg6IGJ1Z1JlcG9ydEZpbGUuZmlsZV9wYXRoLFxuICAgICAgY29udGVudF9taW1ldHlwZTogYnVnUmVwb3J0RmlsZS5jb250ZW50X21pbWV0eXBlLFxuICAgICAgaXNfdGV4dDogYnVnUmVwb3J0RmlsZS5pc190ZXh0LFxuICAgICAgY3JlYXRlZF9hdDogYnVnUmVwb3J0RmlsZS5jcmVhdGVkX2F0LFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImNvbnN0IFJFU1RSSUNURURfRElSUyA9IFtcIi9ub2RlX21vZHVsZXMvXCIsIFwiL2Rpc3QvXCIsIFwiLy5naXQvXCJdXG5cbi8qKlxuICogQSBub3JtYWxpemVkIHByb2plY3QgcGF0aCBhbHdheXMgc3RhcnRzIHdpdGggXCIuL1wiIGFuZCBuZXZlciBlbmRzIHdpdGggYSBzbGFzaC5cbiAqIEl0IGhhcyBubyBiYWNrd2FyZHMgc2xhc2hlcyBhbmQgbm8gZG91YmxlIHNsYXNoZXMuIEl0IGRvZXMgbm90IGdvIHRvIHBhcmVudFxuICogZGlyZWN0b3JpZXMuIEl0IGlzIG5vdCBhIGRpcmVjdG9yeSAobXVzdCBoYXZlIGEgZmlsZSBleHRlbnNpb24pXG4gKlxuICogR09PRDpcbiAqICAtIHNyYy9pbmRleC50c1xuICogIC0gUkVBRE1FLm1kXG4gKlxuICogQkFEOlxuICogLSAuL1JFQURNRS5tZFxuICogLSAuL3NyYy9pbmRleC50c1xuICogLSBzcmNcXGluZGV4LnRzXG4gKiAtIC4uL1JFQURNRS5tZFxuICogLSAuL3NyYy9cbiAqIC0gLi9zcmNcbiAqXG4gKiBBZGRpdGlvbmFsbHksIHRocm93IG9uIGRpcmVjdG9yaWVzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIGluY2x1ZGVkLCBlLmcuXG4gKiAtIG5vZGVfbW9kdWxlc1xuICogLSBkaXN0XG4gKiAtIC5naXRcbiAqL1xuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aEFuZFZhbGlkYXRlID0gKHJhd1BhdGg6IHN0cmluZykgPT4ge1xuICBjb25zdCBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChyYXdQYXRoKVxuXG4gIGlmIChub3JtYWxpemVkUGF0aC5pbmNsdWRlcyhcIi4uL1wiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiSW52YWxpZCBwcm9qZWN0IGZpbGUgcGF0aC4gUGFyZW50IGRpcmVjdG9yaWVzIGFyZSBub3QgYWxsb3dlZC5cIixcbiAgICApXG4gIH1cblxuICBpZiAoUkVTVFJJQ1RFRF9ESVJTLnNvbWUoKGRpcikgPT4gbm9ybWFsaXplZFBhdGguaW5jbHVkZXMoZGlyKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBwcm9qZWN0IGZpbGUgcGF0aC4gUmVzdHJpY3RlZCBkaXJlY3RvcmllcyAoJHtSRVNUUklDVEVEX0RJUlMubWFwKFxuICAgICAgICAocmQpID0+IHJkLnNsaWNlKDEsIC0xKSxcbiAgICAgICkuam9pbihcIiwgXCIpfSkgYXJlIG5vdCBhbGxvd2VkLmAsXG4gICAgKVxuICB9XG5cbiAgaWYgKCFub3JtYWxpemVkUGF0aC5pbmNsdWRlcyhcIi5cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBwcm9qZWN0IGZpbGUgcGF0aC4gTXVzdCBoYXZlIGEgZmlsZSBleHRlbnNpb24uIEdpdmVuIFwiJHtyYXdQYXRofVwiYCxcbiAgICApXG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZFBhdGhcbn1cblxuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aCA9IChyYXdQYXRoOiBzdHJpbmcpID0+IHtcbiAgbGV0IG5vcm1hbGl6ZWRQYXRoID0gcmF3UGF0aC50cmltKCkgLy8gUmVtb3ZlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZVxuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL1xcLysvZywgXCIvXCIpIC8vIFJlcGxhY2UgbXVsdGlwbGUgY29uc2VjdXRpdmUgc2xhc2hlcyB3aXRoIGEgc2luZ2xlIHNsYXNoXG4gIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZSgvXlxcLlxcLy8sIFwiXCIpIC8vIFJlbW92ZSBsZWFkaW5nIFwiLi9cIlxuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL1xcLyQvLCBcIlwiKSAvLyBSZW1vdmUgdHJhaWxpbmcgc2xhc2hcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKSAvLyBSZXBsYWNlIGJhY2tzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzXG4gIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZSgvXlxcLy8sIFwiXCIpIC8vIFJlbW92ZSBsZWFkaW5nIFwiL1wiXG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoXG59XG4iLCAiaW1wb3J0IHsgZGF0YXNoZWV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIGNoaXBfbmFtZTogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGRhdGFzaGVldDogZGF0YXNoZWV0U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGNoaXBfbmFtZSB9ID0gcmVxLmpzb25Cb2R5XG4gIGNvbnN0IGRhdGFzaGVldCA9IGN0eC5kYi5hZGREYXRhc2hlZXQoeyBjaGlwX25hbWUgfSlcbiAgcmV0dXJuIGN0eC5qc29uKHsgZGF0YXNoZWV0IH0pXG59KVxuIiwgImltcG9ydCB7IGRhdGFzaGVldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGRhdGFzaGVldF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY2hpcF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh2YWwpID0+IHZhbC5kYXRhc2hlZXRfaWQgfHwgdmFsLmNoaXBfbmFtZSwge1xuICAgICAgbWVzc2FnZTogXCJkYXRhc2hlZXRfaWQgb3IgY2hpcF9uYW1lIHJlcXVpcmVkXCIsXG4gICAgfSksXG4gIGpzb25Cb2R5OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGRhdGFzaGVldDogZGF0YXNoZWV0U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGRhdGFzaGVldF9pZCwgY2hpcF9uYW1lIH0gPSByZXEucXVlcnlcbiAgbGV0IGRhdGFzaGVldFxuICBpZiAoZGF0YXNoZWV0X2lkKSB7XG4gICAgZGF0YXNoZWV0ID0gY3R4LmRiLmdldERhdGFzaGVldEJ5SWQoZGF0YXNoZWV0X2lkKVxuICB9IGVsc2UgaWYgKGNoaXBfbmFtZSkge1xuICAgIGRhdGFzaGVldCA9IGN0eC5kYi5nZXREYXRhc2hlZXRCeUNoaXBOYW1lKGNoaXBfbmFtZSlcbiAgfVxuICBpZiAoIWRhdGFzaGVldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImRhdGFzaGVldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRGF0YXNoZWV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIGN0eC5qc29uKHsgZGF0YXNoZWV0IH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgY2hpcF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfcG9wdWxhcjogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGRhdGFzaGVldHM6IHouYXJyYXkoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIGRhdGFzaGVldF9pZDogei5zdHJpbmcoKS51dWlkKCksXG4gICAgICAgIGNoaXBfbmFtZTogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgY2hpcF9uYW1lLCBpc19wb3B1bGFyIH0gPSByZXEuY29tbW9uUGFyYW1zXG4gIGNvbnN0IGRhdGFzaGVldHMgPSBjdHguZGJcbiAgICAubGlzdERhdGFzaGVldHMoeyBjaGlwX25hbWUsIGlzX3BvcHVsYXIgfSlcbiAgICAubWFwKChkcykgPT4gKHtcbiAgICAgIGRhdGFzaGVldF9pZDogZHMuZGF0YXNoZWV0X2lkLFxuICAgICAgY2hpcF9uYW1lOiBkcy5jaGlwX25hbWUsXG4gICAgfSkpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgZGF0YXNoZWV0cyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBhY2NvdW50ID0gY3R4LmRiLmdldEFjY291bnQoY3R4LmF1dGguYWNjb3VudF9pZClcblxuICBpZiAoIWFjY291bnQpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiQWNjb3VudCBub3QgZm91bmRcIiwgeyBzdGF0dXM6IDQwMSB9KVxuICB9XG5cbiAgLy8gR2V0IHJldHVybl90b19wYWdlIGZyb20gcXVlcnkgcGFyYW1zXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybClcbiAgY29uc3QgcmV0dXJuVG9QYWdlID0gdXJsLnNlYXJjaFBhcmFtcy5nZXQoXCJyZXR1cm5fdG9fcGFnZVwiKSB8fCBcIi9cIlxuXG4gIC8vIENoZWNrIGlmIHVzZXIgYWxyZWFkeSBoYXMgYW4gYWN0aXZlIEdpdEh1YiBpbnN0YWxsYXRpb25cbiAgY29uc3QgZXhpc3RpbmdJbnN0YWxsYXRpb24gPSBjdHguZGIuZ2l0aHViSW5zdGFsbGF0aW9ucy5maW5kKFxuICAgIChpbnN0YWxsYXRpb24pID0+XG4gICAgICBpbnN0YWxsYXRpb24uYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBpbnN0YWxsYXRpb24uaXNfYWN0aXZlLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nSW5zdGFsbGF0aW9uKSB7XG4gICAgLy8gSWYgaW5zdGFsbGF0aW9uIGFscmVhZHkgZXhpc3RzLCByZWRpcmVjdCBiYWNrXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcIlwiLCB7XG4gICAgICBzdGF0dXM6IDMwMixcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgTG9jYXRpb246IHJldHVyblRvUGFnZSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIG5ldyBHaXRIdWIgaW5zdGFsbGF0aW9uIChzaW11bGF0aW5nIHRoZSB1c2VyIGNvbXBsZXRpbmcgdGhlIEdpdEh1YiBBcHAgaW5zdGFsbGF0aW9uKVxuICBjb25zdCBnaXRodWJJbnN0YWxsYXRpb25JZCA9IGBmYWtlX2doX2luc3RhbGxhdGlvbl8ke0RhdGUubm93KCl9YFxuICBjb25zdCBtb2NrSW5zdGFsbGF0aW9uSWQgPSBgJHtEYXRlLm5vdygpfWAgLy8gTW9jayBHaXRIdWIgQXBwIGluc3RhbGxhdGlvbiBJRFxuXG4gIGNvbnN0IG5ld0luc3RhbGxhdGlvbiA9IHtcbiAgICBnaXRodWJfaW5zdGFsbGF0aW9uX2lkOiBnaXRodWJJbnN0YWxsYXRpb25JZCxcbiAgICBhY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIGluc3RhbGxhdGlvbl9pZDogbW9ja0luc3RhbGxhdGlvbklkLFxuICAgIGdpdGh1Yl91c2VybmFtZTogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBpc19hY3RpdmU6IHRydWUsXG4gICAgYWNjZXNzX3Rva2VuOiBgZ2hzX21vY2tfdG9rZW5fJHtEYXRlLm5vdygpfWAsIC8vIE1vY2sgYWNjZXNzIHRva2VuXG4gICAgYWNjZXNzX3Rva2VuX2V4cGlyZXNfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgKyAzNjAwMDAwKS50b0lTT1N0cmluZygpLCAvLyAxIGhvdXIgZnJvbSBub3dcbiAgfVxuXG4gIGN0eC5kYi5naXRodWJJbnN0YWxsYXRpb25zLnB1c2gobmV3SW5zdGFsbGF0aW9uKVxuXG4gIC8vIFJldHVybiBIVE1MIHBhZ2UgdGhhdCBzaG93cyBpbnN0YWxsYXRpb24gc3VjY2VzcyBhbmQgcmVkaXJlY3RzIGJhY2tcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICBgXG4gICAgPGh0bWw+XG4gICAgICA8aGVhZD5cbiAgICAgICAgPHRpdGxlPkdpdEh1YiBJbnN0YWxsYXRpb24gQ29tcGxldGU8L3RpdGxlPlxuICAgICAgICA8bWV0YSBodHRwLWVxdWl2PVwicmVmcmVzaFwiIGNvbnRlbnQ9XCIzO3VybD0ke3JldHVyblRvUGFnZX1cIj5cbiAgICAgIDwvaGVhZD5cbiAgICAgIDxib2R5IHN0eWxlPVwiZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyBwYWRkaW5nOiA0MHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgIDxoMT5cdTI3MDUgR2l0SHViIEluc3RhbGxhdGlvbiBDb21wbGV0ZSE8L2gxPlxuICAgICAgICA8cD5Zb3VyIEdpdEh1YiBhY2NvdW50IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjb25uZWN0ZWQgdG8gdHNjaXJjdWl0LjwvcD5cbiAgICAgICAgPHA+WW91IGNhbiBub3cgYWNjZXNzIHlvdXIgcmVwb3NpdG9yaWVzIGluIHRoZSBwYWNrYWdlIHNldHRpbmdzLjwvcD5cbiAgICAgICAgPHA+UmVkaXJlY3RpbmcgeW91IGJhY2sgaW4gMyBzZWNvbmRzLi4uPC9wPlxuICAgICAgICA8YSBocmVmPVwiJHtyZXR1cm5Ub1BhZ2V9XCIgc3R5bGU9XCJjb2xvcjogIzAwNjZjYzsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogYm9sZDtcIj5DbGljayBoZXJlIGlmIHlvdSdyZSBub3QgcmVkaXJlY3RlZCBhdXRvbWF0aWNhbGx5PC9hPlxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgICBgLFxuICAgIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLThcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgKVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgcmVwb3M6IHouYXJyYXkoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIGZ1bGxfbmFtZTogei5zdHJpbmcoKSxcbiAgICAgICAgcHJpdmF0ZTogei5ib29sZWFuKCksXG4gICAgICAgIG93bmVyOiB6Lm9iamVjdCh7XG4gICAgICAgICAgbG9naW46IHouc3RyaW5nKCksXG4gICAgICAgIH0pLFxuICAgICAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgICAgICBkZWZhdWx0X2JyYW5jaDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIH0pLFxufSkoYXN5bmMgKF9yZXEsIGN0eCkgPT4ge1xuICBjb25zdCBhY2NvdW50ID0gY3R4LmRiLmdldEFjY291bnQoY3R4LmF1dGguYWNjb3VudF9pZClcblxuICBpZiAoIWFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMSwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyIGhhcyBHaXRIdWIgYWNjb3VudCBjb25uZWN0ZWRcbiAgaWYgKCFhY2NvdW50LmdpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImdpdGh1Yl9ub3RfY29ubmVjdGVkXCIsXG4gICAgICBtZXNzYWdlOlxuICAgICAgICBcIkdpdEh1YiBhY2NvdW50IG5vdCBjb25uZWN0ZWQuIFBsZWFzZSBjb25uZWN0IHlvdXIgR2l0SHViIGFjY291bnQgZmlyc3QuXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHVzZXIgaGFzIGEgR2l0SHViIGluc3RhbGxhdGlvblxuICBjb25zdCBnaXRodWJJbnN0YWxsYXRpb24gPSBjdHguZGIuZ2l0aHViSW5zdGFsbGF0aW9ucy5maW5kKFxuICAgIChpbnN0YWxsYXRpb24pID0+XG4gICAgICBpbnN0YWxsYXRpb24uYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBpbnN0YWxsYXRpb24uaXNfYWN0aXZlLFxuICApXG5cbiAgaWYgKCFnaXRodWJJbnN0YWxsYXRpb24pIHtcbiAgICAvLyBSZXR1cm4gZW1wdHkgYXJyYXkgaWYgbm8gR2l0SHViIGluc3RhbGxhdGlvbiBmb3VuZFxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICByZXBvczogW10sXG4gICAgfSlcbiAgfVxuXG4gIC8vIE1vY2sgcmVwb3NpdG9yaWVzIGZvciBkZW1vbnN0cmF0aW9uXG4gIC8vIEluIGEgcmVhbCBpbXBsZW1lbnRhdGlvbiwgdGhpcyB3b3VsZCBmZXRjaCBmcm9tIEdpdEh1YiBBUEkgdXNpbmcgdGhlIGluc3RhbGxhdGlvbiBhY2Nlc3MgdG9rZW5cbiAgY29uc3QgbW9ja1JlcG9zID0gW1xuICAgIHtcbiAgICAgIHVuc2NvcGVkX25hbWU6IFwibXktZWxlY3Ryb25pY3MtcHJvamVjdFwiLFxuICAgICAgZnVsbF9uYW1lOiBgJHthY2NvdW50LmdpdGh1Yl91c2VybmFtZX0vbXktZWxlY3Ryb25pY3MtcHJvamVjdGAsXG4gICAgICBvd25lcjoge1xuICAgICAgICBsb2dpbjogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IFwiQXJkdWluby1iYXNlZCBzZW5zb3IgbW9uaXRvcmluZyBzeXN0ZW1cIixcbiAgICAgIHByaXZhdGU6IGZhbHNlLFxuICAgICAgZGVmYXVsdF9icmFuY2g6IFwibWFpblwiLFxuICAgIH0sXG4gICAge1xuICAgICAgdW5zY29wZWRfbmFtZTogXCJwY2ItZGVzaWduc1wiLFxuICAgICAgZnVsbF9uYW1lOiBgJHthY2NvdW50LmdpdGh1Yl91c2VybmFtZX0vcGNiLWRlc2lnbnNgLFxuICAgICAgb3duZXI6IHtcbiAgICAgICAgbG9naW46IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbGxlY3Rpb24gb2YgUENCIGRlc2lnbnMgZm9yIHZhcmlvdXMgcHJvamVjdHNcIixcbiAgICAgIHByaXZhdGU6IHRydWUsXG4gICAgICBkZWZhdWx0X2JyYW5jaDogXCJtYWluXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICB1bnNjb3BlZF9uYW1lOiBcInRzY2lyY3VpdC1leGFtcGxlc1wiLFxuICAgICAgZnVsbF9uYW1lOiBgJHthY2NvdW50LmdpdGh1Yl91c2VybmFtZX0vdHNjaXJjdWl0LWV4YW1wbGVzYCxcbiAgICAgIG93bmVyOiB7XG4gICAgICAgIGxvZ2luOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogXCJFeGFtcGxlcyBhbmQgdHV0b3JpYWxzIGZvciB0c2NpcmN1aXRcIixcbiAgICAgIHByaXZhdGU6IGZhbHNlLFxuICAgICAgZGVmYXVsdF9icmFuY2g6IFwibWFpblwiLFxuICAgIH0sXG4gIF1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHJlcG9zOiBtb2NrUmVwb3MsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc3VjY2Vzczogei5ib29sZWFuKCksXG4gICAgbWVzc2FnZTogei5zdHJpbmcoKSxcbiAgICByZXBvc19yZWZyZXNoZWQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG5cbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDEsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgR2l0SHViIGluc3RhbGxhdGlvblxuICBjb25zdCBnaXRodWJJbnN0YWxsYXRpb24gPSBjdHguZGIuZ2l0aHViSW5zdGFsbGF0aW9ucy5maW5kKFxuICAgIChpbnN0YWxsYXRpb24pID0+XG4gICAgICBpbnN0YWxsYXRpb24uYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBpbnN0YWxsYXRpb24uaXNfYWN0aXZlLFxuICApXG5cbiAgaWYgKCFnaXRodWJJbnN0YWxsYXRpb24pIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJnaXRodWJfbm90X2Nvbm5lY3RlZFwiLFxuICAgICAgbWVzc2FnZTogXCJHaXRIdWIgYWNjb3VudCBub3QgY29ubmVjdGVkXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEluIGEgcmVhbCBpbXBsZW1lbnRhdGlvbiwgdGhpcyB3b3VsZCByZWZyZXNoIHJlcG9zIGZyb20gR2l0SHViIEFQSVxuICAvLyBGb3IgZmFrZSBBUEksIHNpbXVsYXRlIHJlZnJlc2hpbmcgYnkgdXBkYXRpbmcgdGhlIGluc3RhbGxhdGlvbiB0aW1lc3RhbXBcbiAgZ2l0aHViSW5zdGFsbGF0aW9uLnVwZGF0ZWRfYXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgbWVzc2FnZTogXCJHaXRIdWIgcmVwb3NpdG9yaWVzIHJlZnJlc2hlZCBzdWNjZXNzZnVsbHlcIixcbiAgICByZXBvc19yZWZyZXNoZWQ6IDMsIC8vIE1vY2sgbnVtYmVyXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGpzb25SZXNwb25zZTogei5vYmplY3QoeyBvazogei5ib29sZWFuKCkgfSksXG59KShhc3luYyAocmVxOiBhbnksIGN0eDogYW55KSA9PiB7XG4gIHJldHVybiBjdHguanNvbih7IG9rOiB0cnVlIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgbXMgZnJvbSBcIm1zXCJcbmltcG9ydCB7IFNpZ25KV1QgfSBmcm9tIFwiam9zZVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIGdpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNlc3Npb246IHoub2JqZWN0KHtcbiAgICAgIHNlc3Npb25faWQ6IHouc3RyaW5nKCksXG4gICAgICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICAgICAgZXhwaXJlc19hdDogei5zdHJpbmcoKSxcbiAgICAgIGlzX2NsaV9zZXNzaW9uOiB6LmJvb2xlYW4oKSxcbiAgICAgIHRva2VuOiB6LnN0cmluZygpLFxuICAgIH0pLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQgYWNjb3VudFxuICBpZiAoXCJhY2NvdW50X2lkXCIgaW4gcmVxLmpzb25Cb2R5KSB7XG4gICAgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KHJlcS5qc29uQm9keS5hY2NvdW50X2lkKVxuICB9IGVsc2Uge1xuICAgIGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChyZXEuanNvbkJvZHkuZ2l0aHViX3VzZXJuYW1lKVxuICB9XG5cbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbmV3X3Nlc3Npb24gPSBjdHguZGIuY3JlYXRlU2Vzc2lvbih7XG4gICAgZXhwaXJlc19hdDogbmV3IERhdGUoRGF0ZS5ub3coKSArIG1zKFwiNjAgZGF5XCIpKS50b0lTT1N0cmluZygpLFxuICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICBpc19jbGlfc2Vzc2lvbjogZmFsc2UsXG4gIH0pXG5cbiAgY29uc3QgdG9rZW4gPSBhd2FpdCBuZXcgU2lnbkpXVCh7XG4gICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICAgIHNlc3Npb25faWQ6IG5ld19zZXNzaW9uLnNlc3Npb25faWQsXG4gICAgZ2l0aHViX3VzZXJuYW1lOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgfSlcbiAgICAuc2V0UHJvdGVjdGVkSGVhZGVyKHsgYWxnOiBcIkhTMjU2XCIgfSlcbiAgICAuc2V0RXhwaXJhdGlvblRpbWUobmV3IERhdGUoRGF0ZS5ub3coKSArIG1zKFwiNjAgZGF5XCIpKS50b0lTT1N0cmluZygpKVxuICAgIC5zaWduKG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShwcm9jZXNzLmVudi5KV1RfU0VDUkVUIHx8IFwiXCIpKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgc2Vzc2lvbjoge1xuICAgICAgLi4ubmV3X3Nlc3Npb24sXG4gICAgICB0b2tlbixcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJGaWxlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9maWxlX2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfZmlsZTogb3JkZXJGaWxlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZGVyX2ZpbGVfaWQgfSA9IHJlcS5xdWVyeVxuXG4gIGNvbnN0IG9yZGVyRmlsZSA9IGN0eC5kYi5nZXRPcmRlckZpbGVCeUlkKG9yZGVyX2ZpbGVfaWQpXG4gIGlmICghb3JkZXJGaWxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfZmlsZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JkZXIgZmlsZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9maWxlOiBvcmRlckZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlckZpbGVTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgICBjb250ZW50X2Jhc2U2NDogei5zdHJpbmcoKSxcbiAgICBpc19nZXJiZXJzX3ppcDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBmb3JfcHJvdmlkZXI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX2ZpbGU6IG9yZGVyRmlsZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmRlcl9pZCwgY29udGVudF9iYXNlNjQsIGlzX2dlcmJlcnNfemlwLCBmb3JfcHJvdmlkZXIgfSA9XG4gICAgcmVxLmpzb25Cb2R5XG5cbiAgY29uc3Qgb3JkZXIgPSBjdHguZGIuZ2V0T3JkZXJCeUlkKG9yZGVyX2lkKVxuICBpZiAoIW9yZGVyKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBuZXdPcmRlckZpbGUgPSB7XG4gICAgb3JkZXJfaWQsXG4gICAgaXNfZ2VyYmVyc196aXA6IGlzX2dlcmJlcnNfemlwIHx8IGZhbHNlLFxuICAgIGNvbnRlbnRfdHlwZTogXCJiYXNlNjRcIixcbiAgICBmb3JfcHJvdmlkZXI6IGZvcl9wcm92aWRlciB8fCBudWxsLFxuICAgIHVwbG9hZGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgY29udGVudF90ZXh0OiBCdWZmZXIuZnJvbShjb250ZW50X2Jhc2U2NCwgXCJiYXNlNjRcIikudG9TdHJpbmcoXCJ1dGYtOFwiKSxcbiAgICBjb250ZW50X2J5dGVzOiBVaW50OEFycmF5LmZyb20oYXRvYihjb250ZW50X2Jhc2U2NCksIChjKSA9PlxuICAgICAgYy5jaGFyQ29kZUF0KDApLFxuICAgICksXG4gIH1cblxuICBjb25zdCBvcmRlckZpbGUgPSBjdHguZGIuYWRkT3JkZXJGaWxlKG5ld09yZGVyRmlsZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyX2ZpbGU6IG9yZGVyRmlsZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX3F1b3RlX2lkczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQgfSA9IHJlcS5qc29uQm9keVxuICBjb25zdCB2ZW5kb3JOYW1lcyA9IFtcIkpMQ1BDQlwiLCBcIk1hY3JvRmFiXCJdXG5cbiAgbGV0IG9yZGVyUXVvdGVJZHMgPSBbXVxuICBmb3IgKGNvbnN0IHZlbmRvck5hbWUgb2YgdmVuZG9yTmFtZXMpIHtcbiAgICBjb25zdCBvcmRlclF1b3RlSWQgPSBjdHguZGIuYWRkT3JkZXJRdW90ZSh7XG4gICAgICBhY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgdmVuZG9yX25hbWU6IHZlbmRvck5hbWUsXG4gICAgfSlcbiAgICBvcmRlclF1b3RlSWRzLnB1c2gob3JkZXJRdW90ZUlkKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9xdW90ZV9pZHM6IG9yZGVyUXVvdGVJZHMsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gICAgdmVuZG9yX25hbWU6IHoubGl0ZXJhbChcImpsY3BjYlwiKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX3F1b3RlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZXJyb3I6IHpcbiAgICAgIC5vYmplY3Qoe1xuICAgICAgICBlcnJvcl9jb2RlOiB6LnN0cmluZygpLFxuICAgICAgICBtZXNzYWdlOiB6LnN0cmluZygpLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfcmVsZWFzZV9pZCwgdmVuZG9yX25hbWUgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIGNoZWNrIHBhY2thZ2UgcmVsZWFzZSBleGlzdHNcbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKHBhY2thZ2VfcmVsZWFzZV9pZClcbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguanNvbihcbiAgICAgIHtcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7IHN0YXR1czogNDA0IH0sXG4gICAgKVxuICB9XG5cbiAgY29uc3QgcGFja2FnZVJlbGVhc2VGaWxlcyA9XG4gICAgY3R4LmRiLmdldFBhY2thZ2VGaWxlc0J5UmVsZWFzZUlkKHBhY2thZ2VfcmVsZWFzZV9pZClcbiAgaWYgKHBhY2thZ2VSZWxlYXNlRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGN0eC5qc29uKFxuICAgICAge1xuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX2ZpbGVzX25vdF9mb3VuZFwiLFxuICAgICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIGZpbGVzIG5vdCBmb3VuZFwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHsgc3RhdHVzOiA0MDQgfSxcbiAgICApXG4gIH1cblxuICBjb25zdCBvcmRlclF1b3RlSWQgPSBjdHguZGIuYWRkT3JkZXJRdW90ZSh7XG4gICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgdmVuZG9yX25hbWUsXG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9xdW90ZV9pZDogb3JkZXJRdW90ZUlkLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJRdW90ZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX3F1b3RlOiBvcmRlclF1b3RlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZGVyX3F1b3RlX2lkIH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgY29uc3Qgb3JkZXJRdW90ZSA9IGN0eC5kYi5nZXRPcmRlclF1b3RlQnlJZChvcmRlcl9xdW90ZV9pZClcblxuICBpZiAoIW9yZGVyUXVvdGUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmRlcl9xdW90ZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JkZXIgcXVvdGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfcXVvdGU6IG9yZGVyUXVvdGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7XG4gIEpsY3BjYk9yZGVyU3RhdGUsXG4gIHR5cGUgT3JkZXIsXG4gIG9yZGVyU2NoZW1hLFxufSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkudXVpZCgpLm9wdGlvbmFsKCksXG4gICAgICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLFxuICAgIH0pXG4gICAgLnJlZmluZSgoZGF0YSkgPT4gZGF0YS5wYWNrYWdlX3JlbGVhc2VfaWQgfHwgZGF0YS5jaXJjdWl0X2pzb24sIHtcbiAgICAgIG1lc3NhZ2U6IFwiRWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBjaXJjdWl0X2pzb24gbXVzdCBiZSBwcm92aWRlZFwiLFxuICAgIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcjogb3JkZXJTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgY2lyY3VpdF9qc29uIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBuZXdPcmRlciA9IHtcbiAgICBhY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIGlzX3J1bm5pbmc6IGZhbHNlLFxuICAgIGlzX3N0YXJ0ZWQ6IGZhbHNlLFxuICAgIGlzX2ZpbmlzaGVkOiBmYWxzZSxcbiAgICBlcnJvcjogbnVsbCxcbiAgICBoYXNfZXJyb3I6IGZhbHNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzdGFydGVkX2F0OiBudWxsLFxuICAgIGNvbXBsZXRlZF9hdDogbnVsbCxcbiAgICBjaXJjdWl0X2pzb24sXG4gIH1cblxuICBjb25zdCBvcmRlciA9IGN0eC5kYi5hZGRPcmRlcihuZXdPcmRlcilcblxuICBjb25zdCBuZXdKbGNwY2JPcmRlclN0YXRlID0ge1xuICAgIG9yZGVyX2lkOiBvcmRlci5vcmRlcl9pZCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IGZhbHNlLFxuICAgIGlzX2dlcmJlcl9hbmFseXplZDogZmFsc2UsXG4gICAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDogZmFsc2UsXG4gICAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICAgIGlzX2JvbV91cGxvYWRlZDogZmFsc2UsXG4gICAgaXNfcG5wX3VwbG9hZGVkOiBmYWxzZSxcbiAgICBpc19ib21fcG5wX2FuYWx5emVkOiBmYWxzZSxcbiAgICBpc19ib21fcGFyc2luZ19jb21wbGV0ZTogZmFsc2UsXG4gICAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiBmYWxzZSxcbiAgICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICBpc19qc29uX21lcmdlX2ZpbGVfY3JlYXRlZDogZmFsc2UsXG4gICAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IGZhbHNlLFxuICAgIGFyZV9maWxlc19kb3dubG9hZGVkOiBmYWxzZSxcbiAgICBhcmVfcHJvZHVjdF9jYXRlZ29yaWVzX2ZldGNoZWQ6IGZhbHNlLFxuICAgIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiBmYWxzZSxcbiAgICBpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZDogZmFsc2UsXG4gICAgaXNfYWRkZWRfdG9fY2FydDogZmFsc2UsXG4gICAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICBjdXJyZW50X3N0ZXA6IG51bGwsXG4gIH1cblxuICBjdHguZGIuYWRkSmxjcGNiT3JkZXJTdGF0ZShuZXdKbGNwY2JPcmRlclN0YXRlKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXIsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7XG4gIGVycm9yU2NoZW1hLFxuICBqbGNwY2JPcmRlclN0YXRlU2NoZW1hLFxuICBvcmRlclNjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyU3RlcHMgYXMgc2ltdWxhdGVTY2VuYXJpb3MgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvb3JkZXItc3RlcHNcIlxuXG5jb25zdCBkZWZhdWx0T3JkZXJTdGF0ZSA9IHtcbiAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IGZhbHNlLFxuICBpc19nZXJiZXJfYW5hbHl6ZWQ6IGZhbHNlLFxuICBhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkOiBmYWxzZSxcbiAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICBpc19ib21fdXBsb2FkZWQ6IGZhbHNlLFxuICBpc19wbnBfdXBsb2FkZWQ6IGZhbHNlLFxuICBpc19ib21fcG5wX2FuYWx5emVkOiBmYWxzZSxcbiAgaXNfYm9tX3BhcnNpbmdfY29tcGxldGU6IGZhbHNlLFxuICBhcmVfY29tcG9uZW50c19hdmFpbGFibGU6IGZhbHNlLFxuICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IGZhbHNlLFxuICBpc19kZm1fcmVzdWx0X2dlbmVyYXRlZDogZmFsc2UsXG4gIGFyZV9maWxlc19kb3dubG9hZGVkOiBmYWxzZSxcbiAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiBmYWxzZSxcbiAgYXJlX2ZpbmFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IGZhbHNlLFxuICBpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZDogZmFsc2UsXG4gIGlzX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICB1cGxvYWRlZF9nZXJiZXJfbWV0YWRhdGE6IG51bGwsXG4gIGdlcmJlcl9hbmFseXNpczogbnVsbCxcbiAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgY3VycmVudF9zdGVwOiBudWxsIGFzIG51bGwgfCAodHlwZW9mIHNpbXVsYXRlU2NlbmFyaW9zKVtudW1iZXJdLFxufVxuXG5jb25zdCBlcnJvck1hcCA9IHtcbiAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJHRVJCRVJfR0VORVJBVElPTl9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkdlcmJlciBnZW5lcmF0aW9uIGZhaWxlZFwiLFxuICB9LFxuICBhcmVfZ2VyYmVyc191cGxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiR0VSQkVSX1VQTE9BRF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkdlcmJlciB1cGxvYWQgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2dlcmJlcl9hbmFseXplZDoge1xuICAgIGVycm9yX2NvZGU6IFwiQU5BTFlaRV9HRVJCRVJfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJBbmFseXplIGdlcmJlciBmYWlsZWRcIixcbiAgfSxcbiAgaXNfYm9tX3VwbG9hZGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJCT01fVVBMT0FEX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQm9tIHVwbG9hZCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfcG5wX3VwbG9hZGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJQTlBfVVBMT0FEX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiUG5wIHVwbG9hZCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfYm9tX3BucF9hbmFseXplZDoge1xuICAgIGVycm9yX2NvZGU6IFwiQU5BTFlaRV9CT01fQU5EX1BOUF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkFuYWx5emUgYm9tIGFuZCBwbnAgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2JvbV9wYXJzaW5nX2NvbXBsZXRlOiB7XG4gICAgZXJyb3JfY29kZTogXCJCT01fUEFSU0lOR19GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkJvbSBwYXJzaW5nIGZhaWxlZFwiLFxuICB9LFxuICBhcmVfY29tcG9uZW50c19hdmFpbGFibGU6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkNPTVBPTkVOVFNfQVZBSUxBQklMSVRZX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQ29tcG9uZW50cyBhdmFpbGFiaWxpdHkgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX3BhdGNoX21hcF9nZW5lcmF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkdFTkVSQVRFX1BBVENIX01BUF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkdlbmVyYXRlIHBhdGNoIG1hcCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkNSRUFUSU9OX0pTT05fTUVSR0VfRklMRV9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkNyZWF0aW9uIGpzb24gbWVyZ2UgZmlsZSBmYWlsZWRcIixcbiAgfSxcbiAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkdFTkVSQVRFX0RGTV9SRVNVTFRfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZW5lcmF0ZSBkZm0gcmVzdWx0IGZhaWxlZFwiLFxuICB9LFxuICBhcmVfZmlsZXNfZG93bmxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiRE9XTkxPQURfRklMRVNfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJEb3dubG9hZCBmaWxlcyBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJGRVRDSF9QUk9EVUNUX0NBVEVHT1JJRVNfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJGZXRjaCBwcm9kdWN0IGNhdGVnb3JpZXMgZmFpbGVkXCIsXG4gIH0sXG4gIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJGSU5BTF9DT1NUX0NBTENVTEFUSU9OX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiRmluYWwgY29zdCBjYWxjdWxhdGlvbiBmYWlsZWRcIixcbiAgfSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIlVQREFURV9KU09OX01FUkdFX0ZJTEVfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJVcGRhdGUganNvbiBtZXJnZSBmaWxlIGZhaWxlZFwiLFxuICB9LFxuICBpc19wY2JfYWRkZWRfdG9fY2FydDoge1xuICAgIGVycm9yX2NvZGU6IFwiQUREX1BDQl9UT19DQVJUX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQWRkIHBjYiB0byBjYXJ0IGZhaWxlZFwiLFxuICB9LFxuICBpc19hZGRlZF90b19jYXJ0OiB7XG4gICAgZXJyb3JfY29kZTogXCJBRERfVE9fQ0FSVF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkFkZCB0byBjYXJ0IGZhaWxlZFwiLFxuICB9LFxuICBhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJJTklUSUFMX0NPU1RfQ0FMQ1VMQVRJT05fRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJJbml0aWFsIGNvc3QgY2FsY3VsYXRpb24gZmFpbGVkXCIsXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIG9yZGVyX2lkOiB6LnN0cmluZygpLFxuICAgIF9zaW11bGF0ZV9zY2VuYXJpbzogei5lbnVtKHNpbXVsYXRlU2NlbmFyaW9zKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXI6IG9yZGVyU2NoZW1hLFxuICAgIG9yZGVyU3RhdGU6IGpsY3BjYk9yZGVyU3RhdGVTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JkZXJfaWQsIF9zaW11bGF0ZV9zY2VuYXJpbyB9ID0gcmVxLnF1ZXJ5XG5cbiAgY29uc3Qgb3JkZXIgPSBjdHguZGIuZ2V0T3JkZXJCeUlkKG9yZGVyX2lkKVxuICBpZiAoIW9yZGVyKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB1cGRhdGVkT3JkZXJTdGF0ZSA9IHtcbiAgICAuLi5kZWZhdWx0T3JkZXJTdGF0ZSxcbiAgICBvcmRlcl9pZCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH1cblxuICBpZiAoX3NpbXVsYXRlX3NjZW5hcmlvKSB7XG4gICAgY29uc3QgZXJyb3IgPSBlcnJvck1hcFtfc2ltdWxhdGVfc2NlbmFyaW9dXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBvcmRlci5lcnJvciA9IGVycm9yU2NoZW1hLnBhcnNlKGVycm9yKVxuICAgICAgb3JkZXIuaGFzX2Vycm9yID0gdHJ1ZVxuICAgICAgY3R4LmRiLnVwZGF0ZU9yZGVyKG9yZGVyX2lkLCB7IGVycm9yOiBvcmRlci5lcnJvciwgaGFzX2Vycm9yOiB0cnVlIH0pXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHNpbXVsYXRlU2NlbmFyaW9zLmluZGV4T2YoX3NpbXVsYXRlX3NjZW5hcmlvKVxuICAgICAgc2ltdWxhdGVTY2VuYXJpb3Muc2xpY2UoMCwgY3VycmVudEluZGV4KS5mb3JFYWNoKChzY2VuYXJpbykgPT4ge1xuICAgICAgICB1cGRhdGVkT3JkZXJTdGF0ZVtzY2VuYXJpb10gPSB0cnVlXG4gICAgICB9KVxuICAgICAgdXBkYXRlZE9yZGVyU3RhdGUuY3VycmVudF9zdGVwID0gc2ltdWxhdGVTY2VuYXJpb3NbY3VycmVudEluZGV4XVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBleGlzdGluZ1N0YXRlID0gY3R4LmRiLmdldEpsY3BjYk9yZGVyU3RhdGVzQnlPcmRlcklkKG9yZGVyX2lkKVxuICAgIGlmIChleGlzdGluZ1N0YXRlKSB7XG4gICAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgICBvcmRlcixcbiAgICAgICAgb3JkZXJTdGF0ZTogZXhpc3RpbmdTdGF0ZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY3R4LmRiLnVwZGF0ZUpsY3BjYk9yZGVyU3RhdGUob3JkZXJfaWQsIHVwZGF0ZWRPcmRlclN0YXRlKVxuXG4gIGNvbnN0IG9yZGVyU3RhdGUgPSBjdHguZGIuZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQob3JkZXJfaWQpIVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXIsXG4gICAgb3JkZXJTdGF0ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJzOiB6LmFycmF5KG9yZGVyU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcnM6IGN0eC5kYi5vcmRlcnMuZmlsdGVyKChvKSA9PiBvLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JnX2lkOiB6LnN0cmluZygpLFxuICAgIGFjY291bnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB0c2NpcmN1aXRfaGFuZGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7fSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmdfaWQsIGFjY291bnRfaWQsIHRzY2lyY3VpdF9oYW5kbGUgfSA9IHJlcS5jb21tb25QYXJhbXNcblxuICBjb25zdCBvcmcgPSBjdHguZGIuZ2V0T3JnKHsgb3JnX2lkIH0sIGN0eC5hdXRoKVxuXG4gIGlmICghb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JnX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmdhbml6YXRpb24gbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmICghb3JnLmNhbl9tYW5hZ2Vfb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm90X2F1dGhvcml6ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gbWFuYWdlIHRoaXMgb3JnYW5pemF0aW9uXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCBhY2NvdW50ID0gY3R4LmRiLmFjY291bnRzLmZpbmQoKGFjYykgPT4gYWNjLmFjY291bnRfaWQgPT09IGFjY291bnRfaWQpXG4gIGlmICghYWNjb3VudCkge1xuICAgIGFjY291bnQgPSBjdHguZGIuYWNjb3VudHMuZmluZChcbiAgICAgIChhY2MpID0+IGFjYy50c2NpcmN1aXRfaGFuZGxlID09PSB0c2NpcmN1aXRfaGFuZGxlLFxuICAgIClcbiAgfVxuXG4gIGlmICghYWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGN0eC5kYi5hZGRPcmdhbml6YXRpb25BY2NvdW50KHtcbiAgICBvcmdfaWQsXG4gICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7fSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHB1YmxpY01hcE9yZyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1vcmdcIlxuaW1wb3J0IHtcbiAgcHVibGljT3JnU2NoZW1hLFxuICB0c2NpcmN1aXRIYW5kbGVTY2hlbWEsXG59IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGNvbW1vblBhcmFtczogelxuICAgIC5vYmplY3Qoe1xuICAgICAgZGlzcGxheV9uYW1lOiB6LnN0cmluZygpLm1pbigzKS5tYXgoNDApLm9wdGlvbmFsKCksXG4gICAgICB0c2NpcmN1aXRfaGFuZGxlOiB0c2NpcmN1aXRIYW5kbGVTY2hlbWEubWluKDMpLm9wdGlvbmFsKCksXG4gICAgICBuYW1lOiB0c2NpcmN1aXRIYW5kbGVTY2hlbWEubWluKDMpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAucmVmaW5lKChkYXRhKSA9PiBkYXRhLnRzY2lyY3VpdF9oYW5kbGUgfHwgZGF0YS5uYW1lLCB7XG4gICAgICBtZXNzYWdlOiBcIkVpdGhlciB0c2NpcmN1aXRfaGFuZGxlIG9yIG5hbWUgaXMgcmVxdWlyZWRcIixcbiAgICB9KSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZzogcHVibGljT3JnU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGRpc3BsYXlfbmFtZSwgdHNjaXJjdWl0X2hhbmRsZSwgbmFtZSB9ID0gcmVxLmNvbW1vblBhcmFtc1xuICBjb25zdCBoYW5kbGUgPSB0c2NpcmN1aXRfaGFuZGxlIHx8IG5hbWVcblxuICBjb25zdCBleGlzdGluZyA9IGN0eC5kYi5nZXRPcmcoeyB0c2NpcmN1aXRfaGFuZGxlOiBoYW5kbGUgfSlcblxuICBpZiAoZXhpc3RpbmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmdfYWxyZWFkeV9leGlzdHNcIixcbiAgICAgIG1lc3NhZ2U6IFwiQW4gb3JnYW5pemF0aW9uIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG5ld09yZyA9IHtcbiAgICBvd25lcl9hY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIG9yZ19kaXNwbGF5X25hbWU6IGRpc3BsYXlfbmFtZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLFxuICAgIGNhbl9tYW5hZ2Vfb3JnOiB0cnVlLFxuICAgIHRzY2lyY3VpdF9oYW5kbGU6IGhhbmRsZSxcbiAgfVxuXG4gIGNvbnN0IG9yZyA9IGN0eC5kYi5hZGRPcmdhbml6YXRpb24obmV3T3JnKVxuXG4gIGN0eC5kYi5hZGRPcmdhbml6YXRpb25BY2NvdW50KHtcbiAgICBvcmdfaWQ6IG9yZy5vcmdfaWQsXG4gICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBpc19vd25lcjogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmdWxsT3JnID0gY3R4LmRiLmdldE9yZyh7IG9yZ19pZDogb3JnLm9yZ19pZCB9LCBjdHguYXV0aClcbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmc6IHB1YmxpY01hcE9yZyhmdWxsT3JnISksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCAqIGFzIFpUIGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGNvbnN0IHB1YmxpY01hcE9yZyA9IChcbiAgaW50ZXJuYWxfb3JnOiBaVC5Pcmdhbml6YXRpb24gJiB7XG4gICAgbWVtYmVyX2NvdW50OiBudW1iZXJcbiAgICBwYWNrYWdlX2NvdW50OiBudW1iZXJcbiAgICBjYW5fbWFuYWdlX29yZzogYm9vbGVhblxuICB9LFxuKTogei5pbmZlcjx0eXBlb2YgWlQucHVibGljT3JnU2NoZW1hPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBjYW5fbWFuYWdlX29yZyxcbiAgICBnaXRodWJfaGFuZGxlLFxuICAgIG1lbWJlcl9jb3VudCxcbiAgICBwYWNrYWdlX2NvdW50LFxuICAgIGNyZWF0ZWRfYXQsXG4gICAgaXNfcGVyc29uYWxfb3JnLFxuICAgIG9yZ19kaXNwbGF5X25hbWUsXG4gICAgdHNjaXJjdWl0X2hhbmRsZSxcbiAgICBhdmF0YXJfdXJsLFxuICAgIC4uLm9yZ1xuICB9ID0gaW50ZXJuYWxfb3JnXG4gIHJldHVybiB7XG4gICAgb3JnX2lkOiBvcmcub3JnX2lkLFxuICAgIGRpc3BsYXlfbmFtZTogb3JnX2Rpc3BsYXlfbmFtZSA/PyB0c2NpcmN1aXRfaGFuZGxlID8/IHVuZGVmaW5lZCxcbiAgICBvd25lcl9hY2NvdW50X2lkOiBvcmcub3duZXJfYWNjb3VudF9pZCxcbiAgICBuYW1lOiB0c2NpcmN1aXRfaGFuZGxlLFxuICAgIGF2YXRhcl91cmw6IGF2YXRhcl91cmwgPz8gbnVsbCxcbiAgICBtZW1iZXJfY291bnQ6IE51bWJlcihtZW1iZXJfY291bnQpIHx8IDAsXG4gICAgcGFja2FnZV9jb3VudDogTnVtYmVyKHBhY2thZ2VfY291bnQpIHx8IDAsXG4gICAgaXNfcGVyc29uYWxfb3JnOiBCb29sZWFuKGlzX3BlcnNvbmFsX29yZyksXG4gICAgY3JlYXRlZF9hdDogU3RyaW5nKGNyZWF0ZWRfYXQpLFxuICAgIGdpdGh1Yl9oYW5kbGUsXG4gICAgdHNjaXJjdWl0X2hhbmRsZSxcbiAgICAuLi4oY2FuX21hbmFnZV9vcmcgPyB7IHVzZXJfcGVybWlzc2lvbnM6IHsgY2FuX21hbmFnZV9vcmc6IHRydWUgfSB9IDoge30pLFxuICB9XG59XG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIiwgXCJERUxFVEVcIl0sXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIG9yZ19pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JnX2lkIH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgY29uc3Qgb3JnID0gY3R4LmRiLmdldE9yZyh7IG9yZ19pZCB9LCBjdHguYXV0aClcblxuICBpZiAoIW9yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZ19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JnYW5pemF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIW9yZy5jYW5fbWFuYWdlX29yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9hdXRob3JpemVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGlzIG9yZ2FuaXphdGlvblwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAob3JnLmlzX3BlcnNvbmFsX29yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImNhbm5vdF9kZWxldGVfcGVyc29uYWxfb3JnXCIsXG4gICAgICBtZXNzYWdlOiBcIlBlcnNvbmFsIG9yZ2FuaXphdGlvbnMgY2Fubm90IGJlIGRlbGV0ZWRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcGFja2FnZUNvdW50ID0gY3R4LmRiLnBhY2thZ2VzLmZpbHRlcihcbiAgICAocGtnKSA9PiBwa2cub3duZXJfb3JnX2lkID09PSBvcmdfaWQsXG4gICkubGVuZ3RoXG5cbiAgaWYgKHBhY2thZ2VDb3VudCA+IDApIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmdfaGFzX3BhY2thZ2VzXCIsXG4gICAgICBtZXNzYWdlOiBcIkNhbm5vdCBkZWxldGUgb3JnYW5pemF0aW9uIHdpdGggZXhpc3RpbmcgcGFja2FnZXNcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZGVsZXRlZCA9IGN0eC5kYi5kZWxldGVPcmdhbml6YXRpb24ob3JnX2lkKVxuXG4gIGlmICghZGVsZXRlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImRlbGV0ZV9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGRlbGV0ZSBvcmdhbml6YXRpb25cIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7XG4gIG9yZ0FjY291bnRTY2hlbWEsXG4gIHVzZXJQZXJtaXNzaW9uc1NjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmdfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZ19tZW1iZXI6IG9yZ0FjY291bnRTY2hlbWEubWVyZ2UoXG4gICAgICB6Lm9iamVjdCh7IG9yZ19tZW1iZXJfcGVybWlzc2lvbnM6IHVzZXJQZXJtaXNzaW9uc1NjaGVtYS5udWxsYWJsZSgpIH0pLFxuICAgICksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JnX2lkLCBhY2NvdW50X2lkIH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgY29uc3Qgb3JnID0gY3R4LmRiLmdldE9yZyhcbiAgICB7XG4gICAgICBvcmdfaWQsXG4gICAgfSxcbiAgICBjdHguYXV0aCxcbiAgKVxuXG4gIGlmICghb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JnX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmdhbml6YXRpb24gbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG1lbWJlck9yZ0FjY291bnQgPSBjdHguZGIuZ2V0T3JnYW5pemF0aW9uQWNjb3VudCh7XG4gICAgb3JnX2lkOiBvcmcub3JnX2lkLFxuICAgIGFjY291bnRfaWQ6IGFjY291bnRfaWQsXG4gIH0pXG5cbiAgY29uc3QgbWVtYmVyT3JnID0gY3R4LmRiLmdldE9yZyhcbiAgICB7XG4gICAgICBvcmdfaWQsXG4gICAgfSxcbiAgICB7XG4gICAgICBhY2NvdW50X2lkOiBhY2NvdW50X2lkISxcbiAgICB9LFxuICApXG5cbiAgaWYgKCFtZW1iZXJPcmdBY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWVtYmVyX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJNZW1iZXIgbm90IGZvdW5kIGluIG9yZ2FuaXphdGlvblwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZ19tZW1iZXI6IHtcbiAgICAgIC4uLm1lbWJlck9yZ0FjY291bnQsXG4gICAgICBvcmdfbWVtYmVyX3Blcm1pc3Npb25zOiBtZW1iZXJPcmcsXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHB1YmxpY01hcE9yZyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1vcmdcIlxuaW1wb3J0IHsgcHVibGljT3JnU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgY29tbW9uUGFyYW1zOiB6XG4gICAgLm9iamVjdCh7IG9yZ19pZDogei5zdHJpbmcoKSB9KVxuICAgIC5vcih6Lm9iamVjdCh7IGdpdGh1Yl9oYW5kbGU6IHouc3RyaW5nKCkgfSkpXG4gICAgLm9yKHoub2JqZWN0KHsgdHNjaXJjdWl0X2hhbmRsZTogei5zdHJpbmcoKSB9KSksXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmc6IHB1YmxpY09yZ1NjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgcGFyYW1zID0gcmVxLmNvbW1vblBhcmFtcyBhcyB7XG4gICAgb3JnX2lkPzogc3RyaW5nXG4gICAgZ2l0aHViX2hhbmRsZT86IHN0cmluZ1xuICAgIHRzY2lyY3VpdF9oYW5kbGU/OiBzdHJpbmdcbiAgfVxuXG4gIGNvbnN0IG9yZyA9IGN0eC5kYi5nZXRPcmcoXG4gICAge1xuICAgICAgb3JnX2lkOiBwYXJhbXMub3JnX2lkLFxuICAgICAgZ2l0aHViX2hhbmRsZTogcGFyYW1zLmdpdGh1Yl9oYW5kbGUsXG4gICAgICB0c2NpcmN1aXRfaGFuZGxlOiBwYXJhbXMudHNjaXJjdWl0X2hhbmRsZSxcbiAgICB9LFxuICAgIGN0eC5hdXRoLFxuICApXG5cbiAgaWYgKCFvcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmdfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZ2FuaXphdGlvbiBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG4gIHJldHVybiBjdHguanNvbih7IG9yZzogcHVibGljTWFwT3JnKG9yZykgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIGludml0YXRpb25fdG9rZW46IHouc3RyaW5nKCksXG4gIH0pLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JnX2FjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gICAgb3JnOiB6Lm9iamVjdCh7XG4gICAgICBvcmdfaWQ6IHouc3RyaW5nKCksXG4gICAgICBvcmdfbmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgICAgb3JnX2Rpc3BsYXlfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGludml0YXRpb25fdG9rZW4gfSA9IHJlcS5jb21tb25QYXJhbXNcblxuICAvLyBGaW5kIHRoZSBpbnZpdGF0aW9uXG4gIGNvbnN0IGludml0YXRpb24gPSBjdHguZGIuZ2V0T3JnSW52aXRhdGlvbkJ5VG9rZW4oaW52aXRhdGlvbl90b2tlbilcblxuICBpZiAoIWludml0YXRpb24pIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZpdGF0aW9uX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJJbnZhbGlkIGludml0YXRpb24gbGlua1wiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBpbnZpdGF0aW9uIGlzIHJldm9rZWRcbiAgaWYgKGludml0YXRpb24uaXNfcmV2b2tlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludml0YXRpb25fcmV2b2tlZFwiLFxuICAgICAgbWVzc2FnZTogXCJUaGlzIGludml0YXRpb24gd2FzIGNhbmNlbGxlZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBpbnZpdGF0aW9uIGlzIGFscmVhZHkgYWNjZXB0ZWRcbiAgaWYgKGludml0YXRpb24uaXNfYWNjZXB0ZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZpdGF0aW9uX2FscmVhZHlfYWNjZXB0ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91J3ZlIGFscmVhZHkgam9pbmVkIHRoaXMgb3JnYW5pemF0aW9uXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGludml0YXRpb24gaXMgZXhwaXJlZFxuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXG4gIGlmIChuZXcgRGF0ZShpbnZpdGF0aW9uLmV4cGlyZXNfYXQpIDwgbm93KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52aXRhdGlvbl9leHBpcmVkXCIsXG4gICAgICBtZXNzYWdlOiBgVGhpcyBpbnZpdGF0aW9uIGV4cGlyZWQgb24gJHtuZXcgRGF0ZShpbnZpdGF0aW9uLmV4cGlyZXNfYXQpLnRvTG9jYWxlRGF0ZVN0cmluZygpfWAsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCBjdXJyZW50IHVzZXIncyBhY2NvdW50XG4gIGNvbnN0IGN1cnJlbnRBY2NvdW50ID0gY3R4LmRiLmFjY291bnRzLmZpbmQoXG4gICAgKGFjYykgPT4gYWNjLmFjY291bnRfaWQgPT09IGN0eC5hdXRoIS5hY2NvdW50X2lkLFxuICApXG5cbiAgaWYgKCFjdXJyZW50QWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdXIgYWNjb3VudCB3YXMgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHVzZXIncyBlbWFpbCBtYXRjaGVzIGludml0YXRpb24gZW1haWxcbiAgaWYgKFxuICAgIGludml0YXRpb24uaW52aXRlZV9lbWFpbCAmJlxuICAgIGN1cnJlbnRBY2NvdW50LmVtYWlsICE9PSBpbnZpdGF0aW9uLmludml0ZWVfZW1haWxcbiAgKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZW1haWxfbWlzbWF0Y2hcIixcbiAgICAgIG1lc3NhZ2U6IGBUaGlzIGludml0ZSBpcyBmb3IgJHtpbnZpdGF0aW9uLmludml0ZWVfZW1haWx9LiBQbGVhc2UgbG9nIGluIHdpdGggdGhhdCBlbWFpbC5gLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyIGlzIGFscmVhZHkgYSBtZW1iZXJcbiAgY29uc3QgZXhpc3RpbmdNZW1iZXIgPSBjdHguZGIuZ2V0T3JnYW5pemF0aW9uQWNjb3VudCh7XG4gICAgb3JnX2lkOiBpbnZpdGF0aW9uLm9yZ19pZCxcbiAgICBhY2NvdW50X2lkOiBjdXJyZW50QWNjb3VudC5hY2NvdW50X2lkLFxuICB9KVxuXG4gIGlmIChleGlzdGluZ01lbWJlcikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFscmVhZHlfbWVtYmVyXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSdyZSBhbHJlYWR5IGEgbWVtYmVyIG9mIHRoaXMgb3JnYW5pemF0aW9uXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCBvcmdhbml6YXRpb24gZGV0YWlsc1xuICBjb25zdCBvcmcgPSBjdHguZGIub3JnYW5pemF0aW9ucy5maW5kKChvKSA9PiBvLm9yZ19pZCA9PT0gaW52aXRhdGlvbi5vcmdfaWQpXG4gIGlmICghb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JnX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmdhbml6YXRpb24gbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEFkZCB1c2VyIHRvIG9yZ2FuaXphdGlvblxuICBjb25zdCBvcmdBY2NvdW50ID0gY3R4LmRiLmFkZE9yZ2FuaXphdGlvbkFjY291bnQoe1xuICAgIG9yZ19pZDogaW52aXRhdGlvbi5vcmdfaWQsXG4gICAgYWNjb3VudF9pZDogY3VycmVudEFjY291bnQuYWNjb3VudF9pZCxcbiAgICBpc19vd25lcjogZmFsc2UsXG4gIH0pXG5cbiAgLy8gTWFyayBpbnZpdGF0aW9uIGFzIGFjY2VwdGVkXG4gIGN0eC5kYi51cGRhdGVPcmdJbnZpdGF0aW9uKGludml0YXRpb24ub3JnX2ludml0YXRpb25faWQsIHtcbiAgICBpc19wZW5kaW5nOiBmYWxzZSxcbiAgICBpc19hY2NlcHRlZDogdHJ1ZSxcbiAgICBhY2NlcHRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGFjY2VwdGVkX2J5X2FjY291bnRfaWQ6IGN1cnJlbnRBY2NvdW50LmFjY291bnRfaWQsXG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmdfYWNjb3VudF9pZDogb3JnQWNjb3VudC5vcmdfYWNjb3VudF9pZCxcbiAgICBvcmc6IHtcbiAgICAgIG9yZ19pZDogb3JnLm9yZ19pZCxcbiAgICAgIG9yZ19uYW1lOiBvcmcudHNjaXJjdWl0X2hhbmRsZSxcbiAgICAgIG9yZ19kaXNwbGF5X25hbWU6IG9yZy5vcmdfZGlzcGxheV9uYW1lLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gXCJub2RlOmNyeXB0b1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmdfaWQ6IHouc3RyaW5nKCksXG4gICAgaW52aXRlZV9lbWFpbDogei5zdHJpbmcoKS5lbWFpbCgpLFxuICB9KSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZ19pbnZpdGF0aW9uX2lkOiB6LnN0cmluZygpLFxuICAgIGludml0YXRpb25fdG9rZW46IHouc3RyaW5nKCksXG4gICAgaW52aXRlZV9lbWFpbDogei5zdHJpbmcoKSxcbiAgICBleHBpcmVzX2F0OiB6LnN0cmluZygpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZ19pZCwgaW52aXRlZV9lbWFpbCB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIC8vIENoZWNrIGlmIG9yZyBleGlzdHMgYW5kIHVzZXIgaGFzIHBlcm1pc3Npb25cbiAgY29uc3Qgb3JnID0gY3R4LmRiLmdldE9yZyh7IG9yZ19pZCB9LCBjdHguYXV0aClcblxuICBpZiAoIW9yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZ19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JnYW5pemF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIW9yZy5jYW5fbWFuYWdlX29yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9hdXRob3JpemVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGlzIG9yZ2FuaXphdGlvblwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIHBlbmRpbmcgaW52aXRhdGlvblxuICBjb25zdCBleGlzdGluZ0ludml0YXRpb25zID0gY3R4LmRiLmxpc3RPcmdJbnZpdGF0aW9ucyhvcmdfaWQpXG4gIGNvbnN0IGR1cGxpY2F0ZVBlbmRpbmcgPSBleGlzdGluZ0ludml0YXRpb25zLmZpbmQoXG4gICAgKGludikgPT5cbiAgICAgIGludi5pbnZpdGVlX2VtYWlsID09PSBpbnZpdGVlX2VtYWlsICYmXG4gICAgICBpbnYuaXNfcGVuZGluZyAmJlxuICAgICAgIWludi5pc19yZXZva2VkICYmXG4gICAgICBuZXcgRGF0ZShpbnYuZXhwaXJlc19hdCkgPiBuZXcgRGF0ZSgpLFxuICApXG5cbiAgaWYgKGR1cGxpY2F0ZVBlbmRpbmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJkdXBsaWNhdGVfcGVuZGluZ19pbnZpdGF0aW9uXCIsXG4gICAgICBtZXNzYWdlOiBcIkEgcGVuZGluZyBpbnZpdGF0aW9uIGZvciB0aGlzIGVtYWlsIGFscmVhZHkgZXhpc3RzXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHVzZXIgaXMgYWxyZWFkeSBhIG1lbWJlclxuICBjb25zdCBpbnZpdGVlQWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKFxuICAgIChhY2MpID0+IGFjYy5lbWFpbCA9PT0gaW52aXRlZV9lbWFpbCxcbiAgKVxuICBpZiAoaW52aXRlZUFjY291bnQpIHtcbiAgICBjb25zdCBleGlzdGluZ01lbWJlciA9IGN0eC5kYi5nZXRPcmdhbml6YXRpb25BY2NvdW50KHtcbiAgICAgIG9yZ19pZCxcbiAgICAgIGFjY291bnRfaWQ6IGludml0ZWVBY2NvdW50LmFjY291bnRfaWQsXG4gICAgfSlcbiAgICBpZiAoZXhpc3RpbmdNZW1iZXIpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwiYWxyZWFkeV9tZW1iZXJcIixcbiAgICAgICAgbWVzc2FnZTogXCJUaGlzIHVzZXIgaXMgYWxyZWFkeSBhIG1lbWJlciBvZiB0aGUgb3JnYW5pemF0aW9uXCIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIEdlbmVyYXRlIHNlY3VyZSB0b2tlblxuICBjb25zdCBpbnZpdGF0aW9uX3Rva2VuID0gcmFuZG9tQnl0ZXMoMzIpLnRvU3RyaW5nKFwiaGV4XCIpXG5cbiAgLy8gQ3JlYXRlIGludml0YXRpb25cbiAgY29uc3QgaW52aXRhdGlvbiA9IGN0eC5kYi5hZGRPcmdJbnZpdGF0aW9uKHtcbiAgICBvcmdfaWQsXG4gICAgaW52aXRlZV9lbWFpbCxcbiAgICBpbnZpdGVyX2FjY291bnRfaWQ6IGN0eC5hdXRoIS5hY2NvdW50X2lkLFxuICAgIGludml0YXRpb25fdG9rZW4sXG4gIH0pXG5cbiAgLy8gTG9nIGVtYWlsIHNlbmRpbmcgKGZha2UgQVBJIGRvZXNuJ3QgYWN0dWFsbHkgc2VuZCBlbWFpbHMpXG4gIGNvbnN0IG9yaWdpbiA9IHJlcS5oZWFkZXJzLmdldChcIm9yaWdpblwiKSB8fCBcImh0dHA6Ly9sb2NhbGhvc3Q6NTE3M1wiXG4gIGNvbnN0IGludml0ZVVybCA9IGAke29yaWdpbn0vb3Jncy9pbnZpdGU/dG9rZW49JHtpbnZpdGF0aW9uX3Rva2VufWBcbiAgY29uc29sZS5sb2coYFtGQUtFIEVNQUlMXSBTZW5kaW5nIGludml0YXRpb24gdG8gJHtpbnZpdGVlX2VtYWlsfWApXG4gIGNvbnNvbGUubG9nKFxuICAgIGBbRkFLRSBFTUFJTF0gT3JnYW5pemF0aW9uOiAke29yZy50c2NpcmN1aXRfaGFuZGxlIHx8IG9yZy5vcmdfaWR9YCxcbiAgKVxuICBjb25zb2xlLmxvZyhgW0ZBS0UgRU1BSUxdIEludml0YXRpb24gVVJMOiAke2ludml0ZVVybH1gKVxuICBjb25zb2xlLmxvZyhgW0ZBS0UgRU1BSUxdIEV4cGlyZXM6ICR7aW52aXRhdGlvbi5leHBpcmVzX2F0fWApXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmdfaW52aXRhdGlvbl9pZDogaW52aXRhdGlvbi5vcmdfaW52aXRhdGlvbl9pZCxcbiAgICBpbnZpdGF0aW9uX3Rva2VuOiBpbnZpdGF0aW9uLmludml0YXRpb25fdG9rZW4sXG4gICAgaW52aXRlZV9lbWFpbDogaW52aXRlZV9lbWFpbCxcbiAgICBleHBpcmVzX2F0OiBpbnZpdGF0aW9uLmV4cGlyZXNfYXQsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIHRva2VuOiB6LnN0cmluZygpLFxuICB9KSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGludml0YXRpb246IHoub2JqZWN0KHtcbiAgICAgIG9yZ19pbnZpdGF0aW9uX2lkOiB6LnN0cmluZygpLFxuICAgICAgaW52aXRlZV9lbWFpbDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgICAgaXNfcGVuZGluZzogei5ib29sZWFuKCksXG4gICAgICBpc19hY2NlcHRlZDogei5ib29sZWFuKCksXG4gICAgICBpc19yZXZva2VkOiB6LmJvb2xlYW4oKSxcbiAgICAgIGlzX2V4cGlyZWQ6IHouYm9vbGVhbigpLFxuICAgICAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgICAgIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG4gICAgICBvcmc6IHoub2JqZWN0KHtcbiAgICAgICAgb3JnX2lkOiB6LnN0cmluZygpLFxuICAgICAgICBvcmdfbmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgICAgICBvcmdfZGlzcGxheV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICB9KSxcbiAgICAgIGludml0ZXI6IHoub2JqZWN0KHtcbiAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgICAgIHRzY2lyY3VpdF9oYW5kbGU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHRva2VuIH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgY29uc3QgaW52aXRhdGlvbiA9IGN0eC5kYi5nZXRPcmdJbnZpdGF0aW9uQnlUb2tlbih0b2tlbilcblxuICBpZiAoIWludml0YXRpb24pIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZpdGF0aW9uX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJJbnZpdGF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgb3JnYW5pemF0aW9uIGRldGFpbHNcbiAgY29uc3Qgb3JnID0gY3R4LmRiLm9yZ2FuaXphdGlvbnMuZmluZCgobykgPT4gby5vcmdfaWQgPT09IGludml0YXRpb24ub3JnX2lkKVxuICBpZiAoIW9yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZ19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JnYW5pemF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgaW52aXRlciBkZXRhaWxzXG4gIGNvbnN0IGludml0ZXIgPSBjdHguZGIuYWNjb3VudHMuZmluZChcbiAgICAoYWNjKSA9PiBhY2MuYWNjb3VudF9pZCA9PT0gaW52aXRhdGlvbi5pbnZpdGVyX2FjY291bnRfaWQsXG4gIClcblxuICAvLyBDb21wdXRlIGlzX2V4cGlyZWQgZHluYW1pY2FsbHlcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuICBjb25zdCBpc19leHBpcmVkID1cbiAgICBpbnZpdGF0aW9uLmlzX3BlbmRpbmcgJiZcbiAgICAhaW52aXRhdGlvbi5pc19yZXZva2VkICYmXG4gICAgbmV3IERhdGUoaW52aXRhdGlvbi5leHBpcmVzX2F0KSA8IG5vd1xuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgaW52aXRhdGlvbjoge1xuICAgICAgb3JnX2ludml0YXRpb25faWQ6IGludml0YXRpb24ub3JnX2ludml0YXRpb25faWQsXG4gICAgICBpbnZpdGVlX2VtYWlsOiBpbnZpdGF0aW9uLmludml0ZWVfZW1haWwsXG4gICAgICBpc19wZW5kaW5nOiBpbnZpdGF0aW9uLmlzX3BlbmRpbmcsXG4gICAgICBpc19hY2NlcHRlZDogaW52aXRhdGlvbi5pc19hY2NlcHRlZCxcbiAgICAgIGlzX3Jldm9rZWQ6IGludml0YXRpb24uaXNfcmV2b2tlZCxcbiAgICAgIGlzX2V4cGlyZWQsXG4gICAgICBjcmVhdGVkX2F0OiBpbnZpdGF0aW9uLmNyZWF0ZWRfYXQsXG4gICAgICBleHBpcmVzX2F0OiBpbnZpdGF0aW9uLmV4cGlyZXNfYXQsXG4gICAgICBvcmc6IHtcbiAgICAgICAgb3JnX2lkOiBvcmcub3JnX2lkLFxuICAgICAgICBvcmdfbmFtZTogb3JnLnRzY2lyY3VpdF9oYW5kbGUsXG4gICAgICAgIG9yZ19kaXNwbGF5X25hbWU6IG9yZy5vcmdfZGlzcGxheV9uYW1lLFxuICAgICAgfSxcbiAgICAgIGludml0ZXI6IHtcbiAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiBpbnZpdGVyPy5naXRodWJfdXNlcm5hbWUgfHwgbnVsbCxcbiAgICAgICAgdHNjaXJjdWl0X2hhbmRsZTogaW52aXRlcj8udHNjaXJjdWl0X2hhbmRsZSB8fCBudWxsLFxuICAgICAgfSxcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmdfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgaW52aXRhdGlvbnM6IHouYXJyYXkoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIG9yZ19pbnZpdGF0aW9uX2lkOiB6LnN0cmluZygpLFxuICAgICAgICBpbnZpdGVlX2VtYWlsOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgICAgIGlzX3BlbmRpbmc6IHouYm9vbGVhbigpLFxuICAgICAgICBpc19hY2NlcHRlZDogei5ib29sZWFuKCksXG4gICAgICAgIGlzX2V4cGlyZWQ6IHouYm9vbGVhbigpLFxuICAgICAgICBpc19yZXZva2VkOiB6LmJvb2xlYW4oKSxcbiAgICAgICAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgICAgICAgZXhwaXJlc19hdDogei5zdHJpbmcoKSxcbiAgICAgICAgYWNjZXB0ZWRfYXQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgICAgaW52aXRlcjogei5vYmplY3Qoe1xuICAgICAgICAgIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gICAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgICAgICAgdHNjaXJjdWl0X2hhbmRsZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgICksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JnX2lkIH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgLy8gQ2hlY2sgaWYgb3JnIGV4aXN0cyBhbmQgdXNlciBoYXMgcGVybWlzc2lvblxuICBjb25zdCBvcmcgPSBjdHguZGIuZ2V0T3JnKHsgb3JnX2lkIH0sIGN0eC5hdXRoKVxuXG4gIGlmICghb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JnX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmdhbml6YXRpb24gbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmICghb3JnLmNhbl9tYW5hZ2Vfb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm90X2F1dGhvcml6ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gbWFuYWdlIHRoaXMgb3JnYW5pemF0aW9uXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCBhbGwgaW52aXRhdGlvbnMgZm9yIHRoaXMgb3JnXG4gIGNvbnN0IGludml0YXRpb25zID0gY3R4LmRiLmxpc3RPcmdJbnZpdGF0aW9ucyhvcmdfaWQpXG5cbiAgLy8gQ29tcHV0ZSBpc19leHBpcmVkIGZvciBlYWNoIGludml0YXRpb25cbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuICBjb25zdCBpbnZpdGF0aW9uc1dpdGhFeHBpcnkgPSBpbnZpdGF0aW9ucy5tYXAoKGludikgPT4ge1xuICAgIGNvbnN0IGlzX2V4cGlyZWQgPSBuZXcgRGF0ZShpbnYuZXhwaXJlc19hdCkgPCBub3cgJiYgaW52LmlzX3BlbmRpbmdcblxuICAgIC8vIEdldCBpbnZpdGVyIGRldGFpbHNcbiAgICBjb25zdCBpbnZpdGVyID0gY3R4LmRiLmFjY291bnRzLmZpbmQoXG4gICAgICAoYWNjKSA9PiBhY2MuYWNjb3VudF9pZCA9PT0gaW52Lmludml0ZXJfYWNjb3VudF9pZCxcbiAgICApXG5cbiAgICByZXR1cm4ge1xuICAgICAgb3JnX2ludml0YXRpb25faWQ6IGludi5vcmdfaW52aXRhdGlvbl9pZCxcbiAgICAgIGludml0ZWVfZW1haWw6IGludi5pbnZpdGVlX2VtYWlsLFxuICAgICAgaXNfcGVuZGluZzogaW52LmlzX3BlbmRpbmcsXG4gICAgICBpc19hY2NlcHRlZDogaW52LmlzX2FjY2VwdGVkLFxuICAgICAgaXNfZXhwaXJlZCxcbiAgICAgIGlzX3Jldm9rZWQ6IGludi5pc19yZXZva2VkLFxuICAgICAgY3JlYXRlZF9hdDogaW52LmNyZWF0ZWRfYXQsXG4gICAgICBleHBpcmVzX2F0OiBpbnYuZXhwaXJlc19hdCxcbiAgICAgIGFjY2VwdGVkX2F0OiBpbnYuYWNjZXB0ZWRfYXQsXG4gICAgICBpbnZpdGVyOiB7XG4gICAgICAgIGFjY291bnRfaWQ6IGludi5pbnZpdGVyX2FjY291bnRfaWQsXG4gICAgICAgIGdpdGh1Yl91c2VybmFtZTogaW52aXRlcj8uZ2l0aHViX3VzZXJuYW1lIHx8IG51bGwsXG4gICAgICAgIHRzY2lyY3VpdF9oYW5kbGU6IGludml0ZXI/LnRzY2lyY3VpdF9oYW5kbGUgfHwgbnVsbCxcbiAgICAgIH0sXG4gICAgfVxuICB9KVxuXG4gIC8vIFNvcnQgYnkgY3JlYXRlZF9hdCBERVNDIChuZXdlc3QgZmlyc3QpXG4gIGludml0YXRpb25zV2l0aEV4cGlyeS5zb3J0KChhLCBiKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKClcbiAgfSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIGludml0YXRpb25zOiBpbnZpdGF0aW9uc1dpdGhFeHBpcnksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJERUxFVEVcIiwgXCJQT1NUXCJdLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmdfaW52aXRhdGlvbl9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JnX2ludml0YXRpb25faWQgfSA9IHJlcS5jb21tb25QYXJhbXNcblxuICAvLyBGaW5kIHRoZSBpbnZpdGF0aW9uXG4gIGNvbnN0IGludml0YXRpb24gPSBjdHguZGIub3JnSW52aXRhdGlvbnMuZmluZChcbiAgICAoaW52KSA9PiBpbnYub3JnX2ludml0YXRpb25faWQgPT09IG9yZ19pbnZpdGF0aW9uX2lkLFxuICApXG5cbiAgaWYgKCFpbnZpdGF0aW9uKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52aXRhdGlvbl9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiSW52aXRhdGlvbiBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgb3JnIGV4aXN0cyBhbmQgdXNlciBoYXMgcGVybWlzc2lvblxuICBjb25zdCBvcmcgPSBjdHguZGIuZ2V0T3JnKHsgb3JnX2lkOiBpbnZpdGF0aW9uLm9yZ19pZCB9LCBjdHguYXV0aClcblxuICBpZiAoIW9yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZ19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JnYW5pemF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIW9yZy5jYW5fbWFuYWdlX29yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9hdXRob3JpemVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGlzIG9yZ2FuaXphdGlvblwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBpbnZpdGF0aW9uIGlzIGFscmVhZHkgYWNjZXB0ZWRcbiAgaWYgKGludml0YXRpb24uaXNfYWNjZXB0ZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZpdGF0aW9uX2FscmVhZHlfYWNjZXB0ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQ2Fubm90IHJldm9rZSBhbiBpbnZpdGF0aW9uIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBhY2NlcHRlZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBSZXZva2UgdGhlIGludml0YXRpb25cbiAgY3R4LmRiLnVwZGF0ZU9yZ0ludml0YXRpb24ob3JnX2ludml0YXRpb25faWQsIHtcbiAgICBpc19yZXZva2VkOiB0cnVlLFxuICAgIGlzX3BlbmRpbmc6IGZhbHNlLFxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7IG9rOiB0cnVlIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQge1xuICBhY2NvdW50U2NoZW1hLFxuICB1c2VyUGVybWlzc2lvbnNTY2hlbWEsXG59IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIG9yZ19pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmdfbWVtYmVyczogei5hcnJheShcbiAgICAgIGFjY291bnRTY2hlbWEub21pdCh7IHNoaXBwaW5nSW5mbzogdHJ1ZSB9KS5leHRlbmQoe1xuICAgICAgICBqb2luZWRfYXQ6IHouc3RyaW5nKCksXG4gICAgICAgIG9yZ19tZW1iZXJfcGVybWlzc2lvbnM6IHVzZXJQZXJtaXNzaW9uc1NjaGVtYSxcbiAgICAgIH0pLFxuICAgICksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHBhcmFtcyA9IHJlcS5jb21tb25QYXJhbXMgYXMgeyBvcmdfaWQ/OiBzdHJpbmcgfVxuXG4gIGNvbnN0IG9yZyA9IGN0eC5kYi5nZXRPcmcoXG4gICAge1xuICAgICAgb3JnX2lkOiBwYXJhbXMub3JnX2lkLFxuICAgIH0sXG4gICAgY3R4LmF1dGgsXG4gIClcblxuICBpZiAoIW9yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZ19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JnYW5pemF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjdXJyZW50QWNjb3VudElkID0gY3R4LmF1dGg/LmFjY291bnRfaWRcbiAgY29uc3QgaXNDdXJyZW50VXNlck1lbWJlciA9XG4gICAgY3VycmVudEFjY291bnRJZCAmJlxuICAgIChjdXJyZW50QWNjb3VudElkID09PSBvcmcub3duZXJfYWNjb3VudF9pZCB8fFxuICAgICAgY3R4LmRiLm9yZ0FjY291bnRzLnNvbWUoXG4gICAgICAgIChtKSA9PiBtLm9yZ19pZCA9PT0gb3JnLm9yZ19pZCAmJiBtLmFjY291bnRfaWQgPT09IGN1cnJlbnRBY2NvdW50SWQsXG4gICAgICApKVxuXG4gIGNvbnN0IG1lbWJlcnMgPSBjdHguZGIub3JnQWNjb3VudHNcbiAgICAubWFwKChtKSA9PiB7XG4gICAgICBpZiAobS5vcmdfaWQgIT09IG9yZy5vcmdfaWQpIHJldHVybiB1bmRlZmluZWRcbiAgICAgIGNvbnN0IGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChtLmFjY291bnRfaWQpXG4gICAgICBpZiAoIWFjY291bnQpIHJldHVybiB1bmRlZmluZWRcbiAgICAgIGNvbnN0IG1lbWJlck9yZyA9IGN0eC5kYi5nZXRPcmcoXG4gICAgICAgIHtcbiAgICAgICAgICBvcmdfaWQ6IG9yZy5vcmdfaWQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgICAgIH0sXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmFjY291bnQsXG4gICAgICAgIHVzZXJfcGVybWlzc2lvbnM6IG1lbWJlck9yZyxcbiAgICAgICAgam9pbmVkX2F0OiBtLmNyZWF0ZWRfYXQsXG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKFxuICAgICAgKG1lbWJlcik6IG1lbWJlciBpcyBOb25OdWxsYWJsZTx0eXBlb2YgbWVtYmVyPiA9PiBtZW1iZXIgIT09IHVuZGVmaW5lZCxcbiAgICApXG4gIGNvbnN0IGhhc093bmVyID0gbWVtYmVycy5zb21lKChtKSA9PiBtPy5hY2NvdW50X2lkID09PSBvcmcub3duZXJfYWNjb3VudF9pZClcbiAgbGV0IGZ1bGxNZW1iZXJzID0gbWVtYmVyc1xuXG4gIGlmICghaGFzT3duZXIpIHtcbiAgICBjb25zdCBvd25lciA9IGN0eC5kYi5hY2NvdW50cy5maW5kKFxuICAgICAgKGFjYykgPT4gYWNjLmFjY291bnRfaWQgPT09IG9yZy5vd25lcl9hY2NvdW50X2lkLFxuICAgIClcbiAgICBpZiAob3duZXIpIHtcbiAgICAgIGNvbnN0IG1lbWJlck9yZyA9IGN0eC5kYi5nZXRPcmcoXG4gICAgICAgIHtcbiAgICAgICAgICBvcmdfaWQ6IG9yZy5vcmdfaWQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBhY2NvdW50X2lkOiBvd25lci5hY2NvdW50X2lkLFxuICAgICAgICB9LFxuICAgICAgKVxuICAgICAgZnVsbE1lbWJlcnMgPSBbXG4gICAgICAgIC4uLm1lbWJlcnMsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5vd25lcixcbiAgICAgICAgICB1c2VyX3Blcm1pc3Npb25zOiBtZW1iZXJPcmcsXG4gICAgICAgICAgam9pbmVkX2F0OiBvcmcuY3JlYXRlZF9hdCxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmdfbWVtYmVyczogZnVsbE1lbWJlcnMubWFwKChtKSA9PiAoe1xuICAgICAgLi4ubSxcbiAgICAgIGVtYWlsOiBpc0N1cnJlbnRVc2VyTWVtYmVyID8gbS5lbWFpbCA6IHVuZGVmaW5lZCxcbiAgICAgIG9yZ19tZW1iZXJfcGVybWlzc2lvbnM6IG0udXNlcl9wZXJtaXNzaW9ucyA/PyB7XG4gICAgICAgIGNhbl9tYW5hZ2Vfb3JnOiBmYWxzZSxcbiAgICAgICAgY2FuX21hbmFnZV9wYWNrYWdlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSkpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBwdWJsaWNPcmdTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgcHVibGljTWFwT3JnIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLW9yZ1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm9wdGlvbmFsX3Nlc3Npb25cIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgYWNjb3VudF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHRzY2lyY3VpdF9oYW5kbGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBvcmdzOiB6LmFycmF5KHB1YmxpY09yZ1NjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgYWNjb3VudF9pZCwgdHNjaXJjdWl0X2hhbmRsZSB9ID0gcmVxLmNvbW1vblBhcmFtc1xuICBpZiAoIWN0eC5hdXRoICYmICFhY2NvdW50X2lkICYmICF0c2NpcmN1aXRfaGFuZGxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9yZXF1ZXN0XCIsXG4gICAgICBtZXNzYWdlOlxuICAgICAgICBcIllvdSBtdXN0IHByb3ZpZGUgZWl0aGVyIGFjY291bnRfaWQgb3IgdHNjaXJjdWl0X2hhbmRsZSB3aGVuIG5vdCBhdXRoZW50aWNhdGVkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG9yZ3MgPSBjdHguZGIuZ2V0T3JncyhcbiAgICB7XG4gICAgICBhY2NvdW50X2lkOiBhY2NvdW50X2lkLFxuICAgICAgdHNjaXJjdWl0X2hhbmRsZSxcbiAgICAgIC4uLighYWNjb3VudF9pZCAmJiAhdHNjaXJjdWl0X2hhbmRsZVxuICAgICAgICA/IHsgb3duZXJfYWNjb3VudF9pZDogY3R4LmF1dGg/LmFjY291bnRfaWQgfVxuICAgICAgICA6IHt9KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFjY291bnRfaWQ6IGN0eC5hdXRoPy5hY2NvdW50X2lkLFxuICAgIH0sXG4gIClcbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBvcmdzOiBvcmdzLm1hcCgob3JnKSA9PiBwdWJsaWNNYXBPcmcob3JnKSksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmdfaWQ6IHouc3RyaW5nKCksXG4gICAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHt9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZ19pZCwgYWNjb3VudF9pZCB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIGNvbnN0IG9yZyA9IGN0eC5kYi5nZXRPcmcoeyBvcmdfaWQgfSwgY3R4LmF1dGgpXG5cbiAgaWYgKCFvcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmdfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZ2FuaXphdGlvbiBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFvcmcuY2FuX21hbmFnZV9vcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJub3RfYXV0aG9yaXplZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhpcyBvcmdhbml6YXRpb25cIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKChhY2MpID0+IGFjYy5hY2NvdW50X2lkID09PSBhY2NvdW50X2lkKVxuXG4gIGlmICghYWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGN0eC5kYi5yZW1vdmVPcmdhbml6YXRpb25BY2NvdW50KHtcbiAgICBvcmdfaWQsXG4gICAgYWNjb3VudF9pZCxcbiAgfSlcblxuICByZXR1cm4gY3R4Lmpzb24oe30pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyB1c2VyUGVybWlzc2lvbnNTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCIsIFwiUFVUXCJdLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmdfaWQ6IHouc3RyaW5nKCksXG4gICAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgICBvcmdfbWVtYmVyX3Blcm1pc3Npb25zOiB1c2VyUGVybWlzc2lvbnNTY2hlbWEsXG4gIH0pLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7fSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmdfaWQsIGFjY291bnRfaWQsIG9yZ19tZW1iZXJfcGVybWlzc2lvbnMgfSA9IHJlcS5jb21tb25QYXJhbXNcblxuICBjb25zdCBvcmcgPSBjdHguZGIuZ2V0T3JnKHsgb3JnX2lkIH0sIGN0eC5hdXRoKVxuXG4gIGlmICghb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JnX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmdhbml6YXRpb24gbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmICghb3JnLmNhbl9tYW5hZ2Vfb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm90X2F1dGhvcml6ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gbWFuYWdlIHRoaXMgb3JnYW5pemF0aW9uXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChhY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiY2Fubm90X3VwZGF0ZV9zZWxmXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBjYW5ub3QgdXBkYXRlIHlvdXIgb3duIHBlcm1pc3Npb25zXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nTWVtYmVyID0gY3R4LmRiLmdldE9yZ2FuaXphdGlvbkFjY291bnQoe1xuICAgIG9yZ19pZCxcbiAgICBhY2NvdW50X2lkLFxuICB9KVxuXG4gIGlmICghZXhpc3RpbmdNZW1iZXIpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtZW1iZXJfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk1lbWJlciBub3QgZm91bmQgaW4gdGhpcyBvcmdhbml6YXRpb25cIixcbiAgICB9KVxuICB9XG5cbiAgY3R4LmRiLnVwZGF0ZU9yZ2FuaXphdGlvbkFjY291bnQoXG4gICAgeyBvcmdfaWQsIGFjY291bnRfaWQgfSxcbiAgICBvcmdfbWVtYmVyX3Blcm1pc3Npb25zLFxuICApXG5cbiAgcmV0dXJuIGN0eC5qc29uKHt9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHtcbiAgcHVibGljT3JnU2NoZW1hLFxuICB0c2NpcmN1aXRIYW5kbGVTY2hlbWEsXG59IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHB1YmxpY01hcE9yZyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1vcmdcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiLCBcIlBBVENIXCJdLFxuICBjb21tb25QYXJhbXM6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIG9yZ19pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5hbmQoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIGRpc3BsYXlfbmFtZTogei5zdHJpbmcoKS5tYXgoNTApLm9wdGlvbmFsKCksXG4gICAgICAgIHRzY2lyY3VpdF9oYW5kbGU6IHRzY2lyY3VpdEhhbmRsZVNjaGVtYS5vcHRpb25hbCgpLFxuICAgICAgfSksXG4gICAgKSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZzogcHVibGljT3JnU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZ19pZCwgZGlzcGxheV9uYW1lLCB0c2NpcmN1aXRfaGFuZGxlIH0gPSByZXEuY29tbW9uUGFyYW1zIGFzIHtcbiAgICBvcmdfaWQ6IHN0cmluZ1xuICAgIGRpc3BsYXlfbmFtZT86IHN0cmluZ1xuICAgIHRzY2lyY3VpdF9oYW5kbGU/OiBzdHJpbmcgfCBudWxsXG4gIH1cblxuICBjb25zdCBvcmcgPSBjdHguZGIuZ2V0T3JnKHsgb3JnX2lkIH0sIGN0eC5hdXRoKVxuXG4gIGlmICghb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JnX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmdhbml6YXRpb24gbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmICghb3JnLmNhbl9tYW5hZ2Vfb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm90X2F1dGhvcml6ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gbWFuYWdlIHRoaXMgb3JnYW5pemF0aW9uXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIE5vIGNoYW5nZXMgcHJvdmlkZWRcbiAgaWYgKGRpc3BsYXlfbmFtZSA9PT0gdW5kZWZpbmVkICYmIHRzY2lyY3VpdF9oYW5kbGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBjdHguanNvbih7IG9yZzogcHVibGljTWFwT3JnKG9yZykgfSlcbiAgfVxuXG4gIGlmICh0c2NpcmN1aXRfaGFuZGxlICYmIHRzY2lyY3VpdF9oYW5kbGUgIT09IG9yZy50c2NpcmN1aXRfaGFuZGxlKSB7XG4gICAgY29uc3QgZHVwbGljYXRlID0gY3R4LmRiLmdldE9yZyh7IHRzY2lyY3VpdF9oYW5kbGUgfSlcblxuICAgIGlmIChkdXBsaWNhdGUgJiYgZHVwbGljYXRlLm9yZ19pZCAhPT0gb3JnX2lkKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcIm9yZ190c2NpcmN1aXRfaGFuZGxlX2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiQW4gb3JnYW5pemF0aW9uIHdpdGggdGhpcyB0c2NpcmN1aXRfaGFuZGxlIGFscmVhZHkgZXhpc3RzXCIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuICBjb25zdCB1cGRhdGVzOiB7XG4gICAgb3JnX2Rpc3BsYXlfbmFtZT86IHN0cmluZ1xuICAgIHRzY2lyY3VpdF9oYW5kbGU/OiBzdHJpbmcgfCBudWxsXG4gIH0gPSB7fVxuXG4gIGlmICh0c2NpcmN1aXRfaGFuZGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICB1cGRhdGVzLnRzY2lyY3VpdF9oYW5kbGUgPSB0c2NpcmN1aXRfaGFuZGxlXG4gIH1cblxuICBpZiAoZGlzcGxheV9uYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB0cmltbWVkRGlzcGxheU5hbWUgPSBkaXNwbGF5X25hbWUudHJpbSgpXG4gICAgY29uc3QgZmFsbGJhY2tEaXNwbGF5TmFtZSA9IG9yZy50c2NpcmN1aXRfaGFuZGxlID8/IHVuZGVmaW5lZFxuICAgIHVwZGF0ZXMub3JnX2Rpc3BsYXlfbmFtZSA9XG4gICAgICB0cmltbWVkRGlzcGxheU5hbWUubGVuZ3RoID4gMCA/IHRyaW1tZWREaXNwbGF5TmFtZSA6IGZhbGxiYWNrRGlzcGxheU5hbWVcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWQgPSBjdHguZGIudXBkYXRlT3JnYW5pemF0aW9uKG9yZ19pZCwgdXBkYXRlcylcblxuICBpZiAoIXVwZGF0ZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ1cGRhdGVfZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byB1cGRhdGUgb3JnYW5pemF0aW9uXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRPcmdXaXRoUGVybWlzc2lvbnMgPSBjdHguZGIuZ2V0T3JnKHsgb3JnX2lkIH0sIGN0eC5hdXRoKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JnOiBwdWJsaWNNYXBPcmcodXBkYXRlZE9yZ1dpdGhQZXJtaXNzaW9ucyEpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcHVibGljT3JnU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgcHVibGljTWFwT3JnIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLW9yZ1wiXG5cbmNvbnN0IE1BWF9BVkFUQVJfQllURVMgPSA1ICogMTAyNCAqIDEwMjQgLy8gNU1CXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JnOiBwdWJsaWNPcmdTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IGZvcm1EYXRhID0gYXdhaXQgcmVxLmZvcm1EYXRhKCkuY2F0Y2goKCkgPT4gbnVsbClcblxuICBpZiAoIWZvcm1EYXRhKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9mb3JtX2RhdGFcIixcbiAgICAgIG1lc3NhZ2U6IFwiRXhwZWN0ZWQgbXVsdGlwYXJ0IGZvcm0gZGF0YVwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBvcmdJZFZhbHVlID0gZm9ybURhdGEuZ2V0KFwib3JnX2lkXCIpXG4gIGNvbnN0IGF2YXRhckZpbGUgPSBmb3JtRGF0YS5nZXQoXCJhdmF0YXJcIilcblxuICBpZiAoIW9yZ0lkVmFsdWUgfHwgdHlwZW9mIG9yZ0lkVmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtaXNzaW5nX29yZ19pZFwiLFxuICAgICAgbWVzc2FnZTogXCJvcmdfaWQgaXMgcmVxdWlyZWRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3Qgb3JnID0gY3R4LmRiLmdldE9yZyh7IG9yZ19pZDogb3JnSWRWYWx1ZSB9LCBjdHguYXV0aClcblxuICBpZiAoIW9yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZ19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JnYW5pemF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIW9yZy5jYW5fbWFuYWdlX29yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9hdXRob3JpemVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGlzIG9yZ2FuaXphdGlvblwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIShhdmF0YXJGaWxlIGluc3RhbmNlb2YgRmlsZSkpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtaXNzaW5nX2F2YXRhclwiLFxuICAgICAgbWVzc2FnZTogXCJBbiBhdmF0YXIgZmlsZSBpcyByZXF1aXJlZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBtaW1lVHlwZSA9IChhdmF0YXJGaWxlLnR5cGUgJiYgYXZhdGFyRmlsZS50eXBlLnRyaW0oKSkgfHwgXCJpbWFnZS9wbmdcIlxuXG4gIGlmICghbWltZVR5cGUuc3RhcnRzV2l0aChcImltYWdlL1wiKSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfYXZhdGFyX3R5cGVcIixcbiAgICAgIG1lc3NhZ2U6IFwiQXZhdGFyIG11c3QgYmUgYW4gaW1hZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgYXZhdGFyQnVmZmVyID0gQnVmZmVyLmZyb20oYXdhaXQgYXZhdGFyRmlsZS5hcnJheUJ1ZmZlcigpKVxuXG4gIGlmIChhdmF0YXJCdWZmZXIuYnl0ZUxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImVtcHR5X2F2YXRhclwiLFxuICAgICAgbWVzc2FnZTogXCJBdmF0YXIgZmlsZSBpcyBlbXB0eVwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoYXZhdGFyQnVmZmVyLmJ5dGVMZW5ndGggPiBNQVhfQVZBVEFSX0JZVEVTKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MTMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYXZhdGFyX3Rvb19sYXJnZVwiLFxuICAgICAgbWVzc2FnZTogXCJBdmF0YXIgZmlsZSBpcyB0b28gbGFyZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgYmFzZTY0ID0gYXZhdGFyQnVmZmVyLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gIGNvbnN0IGRhdGFVcmwgPSBgZGF0YToke21pbWVUeXBlfTtiYXNlNjQsJHtiYXNlNjR9YFxuXG4gIGNvbnN0IHVwZGF0ZWQgPSBjdHguZGIudXBkYXRlT3JnYW5pemF0aW9uKG9yZ0lkVmFsdWUsIHtcbiAgICBhdmF0YXJfdXJsOiBkYXRhVXJsLFxuICB9KVxuXG4gIGlmICghdXBkYXRlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInVwZGF0ZV9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIHVwZGF0ZSBvcmdhbml6YXRpb25cIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgdXBkYXRlZE9yZyA9IGN0eC5kYi5nZXRPcmcoeyBvcmdfaWQ6IG9yZ0lkVmFsdWUgfSwgY3R4LmF1dGgpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmc6IHB1YmxpY01hcE9yZyh1cGRhdGVkT3JnISksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlQnVpbGQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1idWlsZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfYnVpbGRfaWQ6IHouc3RyaW5nKCksXG4gICAgaW5jbHVkZV9sb2dzOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9idWlsZDogei5hbnkoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2J1aWxkX2lkLCBpbmNsdWRlX2xvZ3MgfSA9IHJlcS5xdWVyeVxuXG4gIGlmICghcGFja2FnZV9idWlsZF9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfcmVxdWVzdFwiLFxuICAgICAgbWVzc2FnZTogXCJwYWNrYWdlX2J1aWxkX2lkIGlzIHJlcXVpcmVkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VCdWlsZCA9IGN0eC5kYi5wYWNrYWdlQnVpbGRzLmZpbmQoXG4gICAgKGJ1aWxkKSA9PiBidWlsZC5wYWNrYWdlX2J1aWxkX2lkID09PSBwYWNrYWdlX2J1aWxkX2lkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlQnVpbGQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX2J1aWxkX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIGJ1aWxkIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocHIpID0+IHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZUJ1aWxkLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9pZCxcbiAgKVxuICBpZiAoIXBrZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChwa2cuY3JlYXRvcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwidW5hdXRob3JpemVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBhcmUgbm90IGF1dGhvcml6ZWQgdG8gYWNjZXNzIHRoaXMgcGFja2FnZSBidWlsZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwdWJsaWNCdWlsZCA9IHB1YmxpY01hcFBhY2thZ2VCdWlsZChwYWNrYWdlQnVpbGQsIHtcbiAgICBpbmNsdWRlX2xvZ3MsXG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBwYWNrYWdlX2J1aWxkOiBwdWJsaWNCdWlsZCxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0ICogYXMgWlQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgY29uc3QgcHVibGljTWFwUGFja2FnZUJ1aWxkID0gKFxuICBpbnRlcm5hbFBhY2thZ2VCdWlsZDogWlQuUGFja2FnZUJ1aWxkICYge1xuICAgIHVzZXJfY29kZV9qb2JfZXJyb3I/OiBhbnkgfCBudWxsXG4gICAgdXNlcl9jb2RlX2pvYl9jb21wbGV0ZWRfYXQ/OiBzdHJpbmcgfCBudWxsXG4gICAgdXNlcl9jb2RlX2pvYl9jb21wbGV0ZWRfbG9ncz86IGFueSB8IG51bGxcbiAgICB1c2VyX2NvZGVfam9iX2xvZ19zdHJlYW1fdXJsPzogc3RyaW5nIHwgbnVsbFxuICAgIHVzZXJfY29kZV9qb2Jfc3RhcnRlZF9hdD86IHN0cmluZyB8IG51bGxcbiAgfSxcbiAgb3B0aW9uczoge1xuICAgIGluY2x1ZGVfbG9ncz86IGJvb2xlYW5cbiAgfSA9IHtcbiAgICBpbmNsdWRlX2xvZ3M6IGZhbHNlLFxuICB9LFxuKTogWlQuUGFja2FnZUJ1aWxkID0+IHtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIC4uLmludGVybmFsUGFja2FnZUJ1aWxkLFxuICAgIGNyZWF0ZWRfYXQ6IGludGVybmFsUGFja2FnZUJ1aWxkLmNyZWF0ZWRfYXQsXG4gICAgdHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0OiBpbnRlcm5hbFBhY2thZ2VCdWlsZC50cmFuc3BpbGF0aW9uX3N0YXJ0ZWRfYXQsXG4gICAgdHJhbnNwaWxhdGlvbl9jb21wbGV0ZWRfYXQ6IGludGVybmFsUGFja2FnZUJ1aWxkLnRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0LFxuICAgIHRyYW5zcGlsYXRpb25fbG9nczogb3B0aW9ucy5pbmNsdWRlX2xvZ3NcbiAgICAgID8gaW50ZXJuYWxQYWNrYWdlQnVpbGQudHJhbnNwaWxhdGlvbl9sb2dzXG4gICAgICA6IG51bGwsXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogaW50ZXJuYWxQYWNrYWdlQnVpbGQudHJhbnNwaWxhdGlvbl9lcnJvcixcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDpcbiAgICAgIGludGVybmFsUGFja2FnZUJ1aWxkLmNpcmN1aXRfanNvbl9idWlsZF9zdGFydGVkX2F0LFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6XG4gICAgICBpbnRlcm5hbFBhY2thZ2VCdWlsZC5jaXJjdWl0X2pzb25fYnVpbGRfY29tcGxldGVkX2F0LFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBvcHRpb25zLmluY2x1ZGVfbG9nc1xuICAgICAgPyBpbnRlcm5hbFBhY2thZ2VCdWlsZC5jaXJjdWl0X2pzb25fYnVpbGRfbG9nc1xuICAgICAgOiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogaW50ZXJuYWxQYWNrYWdlQnVpbGQuY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yLFxuICAgIGltYWdlX2dlbmVyYXRpb25faW5fcHJvZ3Jlc3M6XG4gICAgICBpbnRlcm5hbFBhY2thZ2VCdWlsZC5pbWFnZV9nZW5lcmF0aW9uX2luX3Byb2dyZXNzLFxuICAgIGltYWdlX2dlbmVyYXRpb25fc3RhcnRlZF9hdDpcbiAgICAgIGludGVybmFsUGFja2FnZUJ1aWxkLmltYWdlX2dlbmVyYXRpb25fc3RhcnRlZF9hdCxcbiAgICBpbWFnZV9nZW5lcmF0aW9uX2NvbXBsZXRlZF9hdDpcbiAgICAgIGludGVybmFsUGFja2FnZUJ1aWxkLmltYWdlX2dlbmVyYXRpb25fY29tcGxldGVkX2F0LFxuICAgIGltYWdlX2dlbmVyYXRpb25fbG9nczogb3B0aW9ucy5pbmNsdWRlX2xvZ3NcbiAgICAgID8gaW50ZXJuYWxQYWNrYWdlQnVpbGQuaW1hZ2VfZ2VuZXJhdGlvbl9sb2dzXG4gICAgICA6IG51bGwsXG4gICAgaW1hZ2VfZ2VuZXJhdGlvbl9lcnJvcjogaW50ZXJuYWxQYWNrYWdlQnVpbGQuaW1hZ2VfZ2VuZXJhdGlvbl9lcnJvcixcbiAgICBidWlsZF9zdGFydGVkX2F0OiBpbnRlcm5hbFBhY2thZ2VCdWlsZC5idWlsZF9zdGFydGVkX2F0LFxuICAgIGJ1aWxkX2NvbXBsZXRlZF9hdDogaW50ZXJuYWxQYWNrYWdlQnVpbGQuYnVpbGRfY29tcGxldGVkX2F0LFxuICAgIGJ1aWxkX2Vycm9yOiBpbnRlcm5hbFBhY2thZ2VCdWlsZC5idWlsZF9lcnJvcixcbiAgICBidWlsZF9lcnJvcl9sYXN0X3VwZGF0ZWRfYXQ6XG4gICAgICBpbnRlcm5hbFBhY2thZ2VCdWlsZC5idWlsZF9lcnJvcl9sYXN0X3VwZGF0ZWRfYXQsXG4gICAgcHJldmlld191cmw6IGludGVybmFsUGFja2FnZUJ1aWxkLnByZXZpZXdfdXJsLFxuICAgIGJ1aWxkX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzID8gaW50ZXJuYWxQYWNrYWdlQnVpbGQuYnVpbGRfbG9ncyA6IG51bGwsXG4gICAgdXNlcl9jb2RlX3N0YXJ0ZWRfYXQ6IGludGVybmFsUGFja2FnZUJ1aWxkLnVzZXJfY29kZV9qb2Jfc3RhcnRlZF9hdCA/PyBudWxsLFxuICAgIHVzZXJfY29kZV9jb21wbGV0ZWRfYXQ6XG4gICAgICBpbnRlcm5hbFBhY2thZ2VCdWlsZC51c2VyX2NvZGVfam9iX2NvbXBsZXRlZF9hdCA/PyBudWxsLFxuICAgIHVzZXJfY29kZV9lcnJvcjogaW50ZXJuYWxQYWNrYWdlQnVpbGQudXNlcl9jb2RlX2pvYl9lcnJvciA/PyBudWxsLFxuICAgIHVzZXJfY29kZV9idWlsZF9sb2dzOiBvcHRpb25zLmluY2x1ZGVfbG9nc1xuICAgICAgPyBpbnRlcm5hbFBhY2thZ2VCdWlsZC51c2VyX2NvZGVfam9iX2NvbXBsZXRlZF9sb2dzXG4gICAgICA6IG51bGwsXG4gICAgdXNlcl9jb2RlX2xvZ19zdHJlYW1fdXJsOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlQnVpbGQudXNlcl9jb2RlX2pvYl9sb2dfc3RyZWFtX3VybCA/PyBudWxsLFxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlQnVpbGQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1idWlsZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfYnVpbGRzOiB6LmFycmF5KHouYW55KCkpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIHBhY2thZ2VfcmVsZWFzZV9pZCB9ID0gcmVxLnF1ZXJ5XG4gIGlmICghcGFja2FnZV9pZCAmJiAhcGFja2FnZV9yZWxlYXNlX2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9yZXF1ZXN0XCIsXG4gICAgICBtZXNzYWdlOiBcIkVpdGhlciBwYWNrYWdlX2lkIG9yIHBhY2thZ2VfcmVsZWFzZV9pZCBtdXN0IGJlIHByb3ZpZGVkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCB0YXJnZXRQYWNrYWdlSWQgPSBwYWNrYWdlX2lkXG5cbiAgaWYgKHBhY2thZ2VfcmVsZWFzZV9pZCkge1xuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG4gICAgdGFyZ2V0UGFja2FnZUlkID0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9pZFxuICB9XG5cbiAgaWYgKHRhcmdldFBhY2thZ2VJZCkge1xuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHRhcmdldFBhY2thZ2VJZClcbiAgICBpZiAoIXBrZykge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAocGtnLmNyZWF0b3JfYWNjb3VudF9pZCAhPT0gY3R4LmF1dGguYWNjb3VudF9pZCkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJ1bmF1dGhvcml6ZWRcIixcbiAgICAgICAgbWVzc2FnZTogXCJZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIGFjY2VzcyB0aGlzIHBhY2thZ2VcIixcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgbGV0IGJ1aWxkcyA9IGN0eC5kYi5wYWNrYWdlQnVpbGRzXG5cbiAgaWYgKHBhY2thZ2VfaWQpIHtcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZXMgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbHRlcihcbiAgICAgICh4KSA9PiB4LnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQsXG4gICAgKVxuICAgIGlmIChwYWNrYWdlUmVsZWFzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2VJZHMgPSBwYWNrYWdlUmVsZWFzZXNcbiAgICAgIC5maWx0ZXIoKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkKVxuICAgICAgLm1hcCgocHIpID0+IHByLnBhY2thZ2VfcmVsZWFzZV9pZClcblxuICAgIGJ1aWxkcyA9IGJ1aWxkcy5maWx0ZXIoKGJ1aWxkKSA9PlxuICAgICAgcGFja2FnZVJlbGVhc2VJZHMuaW5jbHVkZXMoYnVpbGQucGFja2FnZV9yZWxlYXNlX2lkKSxcbiAgICApXG4gIH1cblxuICBpZiAocGFja2FnZV9yZWxlYXNlX2lkKSB7XG4gICAgYnVpbGRzID0gYnVpbGRzLmZpbHRlcihcbiAgICAgIChidWlsZCkgPT4gYnVpbGQucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuICB9XG5cbiAgYnVpbGRzID0gYnVpbGRzLnNvcnQoXG4gICAgKGEsIGIpID0+XG4gICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICApXG5cbiAgY29uc3QgcHVibGljQnVpbGRzID0gYnVpbGRzLm1hcCgoYnVpbGQpID0+XG4gICAgcHVibGljTWFwUGFja2FnZUJ1aWxkKGJ1aWxkLCB7XG4gICAgICBpbmNsdWRlX2xvZ3M6IGZhbHNlLFxuICAgIH0pLFxuICApXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBwYWNrYWdlX2J1aWxkczogcHVibGljQnVpbGRzLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBQYWNrYWdlLCBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGNvbnN0IGZpbmRQYWNrYWdlUmVsZWFzZUlkID0gYXN5bmMgKFxuICBwYXJhbXM6XG4gICAgfCBzdHJpbmdcbiAgICB8IHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBzdHJpbmdcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgcGFja2FnZV9uYW1lOiBzdHJpbmdcbiAgICAgICAgdXNlX2xhdGVzdF92ZXJzaW9uOiB0cnVlXG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHN0cmluZ1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ/OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICAgfSxcbiAgY3R4OiB7IGRiOiBhbnkgfSxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gPT4ge1xuICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBmaW5kUGFja2FnZVJlbGVhc2VJZEZyb21QYWNrYWdlTmFtZVdpdGhWZXJzaW9uKHBhcmFtcywgY3R4LmRiKVxuICB9XG5cbiAgaWYgKFxuICAgIFwicGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiIGluIHBhcmFtcyAmJlxuICAgIHBhcmFtcy5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXG4gICkge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiB9ID0gcGFyYW1zXG5cbiAgICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5lbmRzV2l0aChcIkBsYXRlc3RcIikpIHtcbiAgICAgIGNvbnN0IFtwYWNrYWdlTmFtZV0gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVxuICAgICAgcmV0dXJuIGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgICB7XG4gICAgICAgICAgcGFja2FnZV9uYW1lOiBwYWNrYWdlTmFtZSEsXG4gICAgICAgICAgdXNlX2xhdGVzdF92ZXJzaW9uOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjdHgsXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBmaW5kUGFja2FnZVJlbGVhc2VJZEZyb21QYWNrYWdlTmFtZVdpdGhWZXJzaW9uKFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiEsXG4gICAgICBjdHguZGIsXG4gICAgKVxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9yZWxlYXNlX2lkXCIgaW4gcGFyYW1zICYmIHBhcmFtcy5wYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFyYW1zLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtcy5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfbmFtZVwiIGluIHBhcmFtcykge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lLCB1c2VfbGF0ZXN0X3ZlcnNpb24gfSA9IHBhcmFtc1xuXG4gICAgaWYgKCF1c2VfbGF0ZXN0X3ZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInVzZV9sYXRlc3RfdmVyc2lvbiBtdXN0IGJlIHRydWVcIilcbiAgICB9XG5cbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwOiBQYWNrYWdlKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VfbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpLFxuICAgIClcbiAgICBpZiAoIXBrZykge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBmaW5kUGFja2FnZVJlbGVhc2VJZEZyb21QYWNrYWdlTmFtZVdpdGhWZXJzaW9uID0gKFxuICBwYWNrYWdlTmFtZVdpdGhWZXJzaW9uOiBzdHJpbmcsXG4gIGRiOiBhbnksXG4pOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKCFwYWNrYWdlTmFtZVdpdGhWZXJzaW9uKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IFtwYWNrYWdlTmFtZSwgdmVyc2lvbl0gPSBwYWNrYWdlTmFtZVdpdGhWZXJzaW9uXG4gICAgLnJlcGxhY2UoL15ALywgXCJcIilcbiAgICAuc3BsaXQoXCJAXCIpXG5cbiAgY29uc3QgcGtnID0gZGIucGFja2FnZXMuZmluZCgocDogUGFja2FnZSkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgaWYgKCFwa2cpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlXG5cbiAgaWYgKCF2ZXJzaW9uIHx8IHZlcnNpb24gPT09IFwibGF0ZXN0XCIpIHtcbiAgICBwYWNrYWdlUmVsZWFzZSA9IGRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByOiBQYWNrYWdlUmVsZWFzZSkgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgIClcbiAgfSBlbHNlIHtcbiAgICBwYWNrYWdlUmVsZWFzZSA9IGRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByOiBQYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICApXG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbn1cbiIsICJpbXBvcnQgKiBhcyB6dCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgaXNfcmVsZWFzZV90YXJiYWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgICAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb250ZW50X2Jhc2U2NDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBucG1fcGFja19vdXRwdXQ6IHouYW55KCkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnBhY2thZ2VfcmVsZWFzZV9pZCkgcmV0dXJuIHRydWVcbiAgICAgIGlmICh2LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBcIk11c3Qgc3BlY2lmeSBlaXRoZXIgcGFja2FnZV9yZWxlYXNlX2lkIG9yIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQgJiYgdi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJDYW5ub3Qgc3BlY2lmeSBib3RoIHBhY2thZ2VfcmVsZWFzZV9pZCBhbmQgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiKVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LmNvbnRlbnRfYmFzZTY0ICYmIHYuY29udGVudF90ZXh0KSByZXR1cm4gZmFsc2VcbiAgICAgIGlmICghdi5jb250ZW50X2Jhc2U2NCAmJiB2LmNvbnRlbnRfdGV4dCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJFaXRoZXIgY29udGVudF9iYXNlNjQgb3IgY29udGVudF90ZXh0IGlzIHJlcXVpcmVkXCIpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9maWxlOiB6dC5wYWNrYWdlRmlsZVNjaGVtYSxcbiAgfSksXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMocm91dGVTcGVjKShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbGVfcGF0aCxcbiAgICBjb250ZW50X21pbWV0eXBlOiBwcm92aWRlZENvbnRlbnRNaW1ldHlwZSxcbiAgICBjb250ZW50X2Jhc2U2NCxcbiAgICBjb250ZW50X3RleHQsXG4gICAgaXNfcmVsZWFzZV90YXJiYWxsLFxuICAgIG5wbV9wYWNrX291dHB1dCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGlmIChpc19yZWxlYXNlX3RhcmJhbGwgJiYgIW5wbV9wYWNrX291dHB1dCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm1pc3Npbmdfb3B0aW9uc1wiLFxuICAgICAgbWVzc2FnZTogXCJucG1fcGFja19vdXRwdXQgaXMgcmVxdWlyZWQgZm9yIHJlbGVhc2UgdGFyYmFsbHNcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFpc19yZWxlYXNlX3RhcmJhbGwgJiYgbnBtX3BhY2tfb3V0cHV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcIm5wbV9wYWNrX291dHB1dCBpcyBvbmx5IHZhbGlkIGZvciByZWxlYXNlIHRhcmJhbGxzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCBwYWNrYWdlUmVsZWFzZUlkID0gcmVxLmpzb25Cb2R5LnBhY2thZ2VfcmVsZWFzZV9pZFxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCAmJiByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikge1xuICAgIGNvbnN0IGZvdW5kUGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgeyBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiB9LFxuICAgICAgY3R4LFxuICAgIClcbiAgICBpZiAoZm91bmRQYWNrYWdlUmVsZWFzZUlkKSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZUlkID0gZm91bmRQYWNrYWdlUmVsZWFzZUlkXG4gICAgfVxuICB9XG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFZlcmlmeSB0aGUgcGFja2FnZSByZWxlYXNlIGV4aXN0c1xuICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocHIpID0+IHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IHRoZSBwYWNrYWdlIHRvIGNoZWNrIHBlcm1pc3Npb25zXG4gIGNvbnN0IGV4aXN0aW5nUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfaWQsXG4gIClcblxuICBpZiAoIWV4aXN0aW5nUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHVzZXIgaGFzIHBlcm1pc3Npb24gdG8gY3JlYXRlL3VwZGF0ZSB0aGUgZmlsZVxuICBpZiAoZXhpc3RpbmdQYWNrYWdlLmNyZWF0b3JfYWNjb3VudF9pZCAhPT0gY3R4LmF1dGguYWNjb3VudF9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBmaWxlcyBpbiB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgZmlsZSBleGlzdHNcbiAgY29uc3QgZXhpc2l0aW5nRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAocGYpID0+XG4gICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQgJiYgcGYuZmlsZV9wYXRoID09PSBmaWxlX3BhdGgsXG4gIClcblxuICAvLyBEZXRlcm1pbmUgY29udGVudCBtaW1ldHlwZVxuICBjb25zdCBjb250ZW50TWltZXR5cGUgPVxuICAgIHByb3ZpZGVkQ29udGVudE1pbWV0eXBlIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi50c1wiKSB8fCBmaWxlX3BhdGguZW5kc1dpdGgoXCIudHN4XCIpXG4gICAgICA/IFwidGV4dC90eXBlc2NyaXB0XCJcbiAgICAgIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmpzXCIpID8gXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuanNvblwiKSA/IFwiYXBwbGljYXRpb24vanNvblwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLm1kXCIpID8gXCJ0ZXh0L21hcmtkb3duXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuaHRtbFwiKSA/IFwidGV4dC9odG1sXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuY3NzXCIpID8gXCJ0ZXh0L2Nzc1wiIDogbnVsbCkgfHxcbiAgICBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG5cbiAgaWYgKGV4aXNpdGluZ0ZpbGUpIHtcbiAgICBjb25zdCBwYWNrYWdlX2ZpbGUgPSBjdHguZGIudXBkYXRlUGFja2FnZUZpbGUoXG4gICAgICBleGlzaXRpbmdGaWxlLnBhY2thZ2VfZmlsZV9pZCxcbiAgICAgIHtcbiAgICAgICAgY29udGVudF90ZXh0OlxuICAgICAgICAgIGNvbnRlbnRfdGV4dCA/P1xuICAgICAgICAgIChjb250ZW50X2Jhc2U2NFxuICAgICAgICAgICAgPyBCdWZmZXIuZnJvbShjb250ZW50X2Jhc2U2NCwgXCJiYXNlNjRcIikudG9TdHJpbmcoKVxuICAgICAgICAgICAgOiBudWxsKSxcbiAgICAgICAgY29udGVudF9taW1ldHlwZTogY29udGVudE1pbWV0eXBlLFxuICAgICAgICBpc19yZWxlYXNlX3RhcmJhbGw6IGlzX3JlbGVhc2VfdGFyYmFsbCB8fCBmYWxzZSxcbiAgICAgICAgbnBtX3BhY2tfb3V0cHV0OiBucG1fcGFja19vdXRwdXQgfHwgbnVsbCxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgLy8gVXBkYXRlIGZzX3NoYSBmb3IgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGN0eC5kYi51cGRhdGVQYWNrYWdlUmVsZWFzZUZzU2hhKHBhY2thZ2VSZWxlYXNlSWQpXG5cbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBwYWNrYWdlX2ZpbGUsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChcbiAgICAhcmVxLmpzb25Cb2R5LnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICFyZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblxuICApXG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOlxuICAgICAgICBcIk11c3Qgc3BlY2lmeSBlaXRoZXIgcGFja2FnZV9yZWxlYXNlX2lkIG9yIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIixcbiAgICB9KVxuICAvLyBDcmVhdGUgdGhlIHBhY2thZ2UgZmlsZVxuICBjb25zdCBuZXdQYWNrYWdlRmlsZSA9IHtcbiAgICBwYWNrYWdlX2ZpbGVfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkLFxuICAgIGZpbGVfcGF0aCxcbiAgICBjb250ZW50X3RleHQ6XG4gICAgICBjb250ZW50X3RleHQgPz9cbiAgICAgIChjb250ZW50X2Jhc2U2NFxuICAgICAgICA/IEJ1ZmZlci5mcm9tKGNvbnRlbnRfYmFzZTY0LCBcImJhc2U2NFwiKS50b1N0cmluZygpXG4gICAgICAgIDogbnVsbCksXG4gICAgY29udGVudF9taW1ldHlwZTogY29udGVudE1pbWV0eXBlLFxuICAgIGlzX2RpcmVjdG9yeTogZmFsc2UsXG4gICAgaXNfcmVsZWFzZV90YXJiYWxsOiBpc19yZWxlYXNlX3RhcmJhbGwgfHwgZmFsc2UsXG4gICAgbnBtX3BhY2tfb3V0cHV0OiBucG1fcGFja19vdXRwdXQgfHwgbnVsbCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH1cblxuICAvLyBBZGQgdG8gdGhlIHRlc3QgZGF0YWJhc2VcbiAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKG5ld1BhY2thZ2VGaWxlKVxuXG4gIC8vIFVwZGF0ZSBmc19zaGEgZm9yIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgY3R4LmRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlRnNTaGEocGFja2FnZVJlbGVhc2VJZClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZTogbmV3UGFja2FnZUZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCAqIGFzIHp0IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IGZpbmRQYWNrYWdlUmVsZWFzZUlkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWRcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmNvbnN0IHJvdXRlU3BlYyA9IHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICBpc19yZWxlYXNlX3RhcmJhbGw6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gICAgICBjb250ZW50X21pbWV0eXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb250ZW50X3RleHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNvbnRlbnRfYmFzZTY0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIG5wbV9wYWNrX291dHB1dDogei5hbnkoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkKSByZXR1cm4gdHJ1ZVxuICAgICAgaWYgKHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIHRydWVcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sIFwiTXVzdCBzcGVjaWZ5IGVpdGhlciBwYWNrYWdlX3JlbGVhc2VfaWQgb3IgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiKVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnBhY2thZ2VfcmVsZWFzZV9pZCAmJiB2LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcIkNhbm5vdCBzcGVjaWZ5IGJvdGggcGFja2FnZV9yZWxlYXNlX2lkIGFuZCBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYuY29udGVudF9iYXNlNjQgJiYgdi5jb250ZW50X3RleHQpIHJldHVybiBmYWxzZVxuICAgICAgaWYgKCF2LmNvbnRlbnRfYmFzZTY0ICYmICF2LmNvbnRlbnRfdGV4dCkgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiRWl0aGVyIGNvbnRlbnRfYmFzZTY0IG9yIGNvbnRlbnRfdGV4dCBpcyByZXF1aXJlZFwiKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VfZmlsZTogenQucGFja2FnZUZpbGVTY2hlbWEsXG4gIH0pLFxufSBhcyBjb25zdFxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHJvdXRlU3BlYykoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWxlX3BhdGgsXG4gICAgY29udGVudF9taW1ldHlwZTogcHJvdmlkZWRDb250ZW50TWltZXR5cGUsXG4gICAgY29udGVudF9iYXNlNjQsXG4gICAgY29udGVudF90ZXh0LFxuICAgIGlzX3JlbGVhc2VfdGFyYmFsbCxcbiAgICBucG1fcGFja19vdXRwdXQsXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBpZiAoaXNfcmVsZWFzZV90YXJiYWxsICYmICFucG1fcGFja19vdXRwdXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtaXNzaW5nX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwibnBtX3BhY2tfb3V0cHV0IGlzIHJlcXVpcmVkIGZvciByZWxlYXNlIHRhcmJhbGxzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmICghaXNfcmVsZWFzZV90YXJiYWxsICYmIG5wbV9wYWNrX291dHB1dCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfb3B0aW9uc1wiLFxuICAgICAgbWVzc2FnZTogXCJucG1fcGFja19vdXRwdXQgaXMgb25seSB2YWxpZCBmb3IgcmVsZWFzZSB0YXJiYWxsc1wiLFxuICAgIH0pXG4gIH1cblxuICBsZXQgcGFja2FnZVJlbGVhc2VJZCA9IHJlcS5qc29uQm9keS5wYWNrYWdlX3JlbGVhc2VfaWRcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQgJiYgcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHtcbiAgICBjb25zdCBmb3VuZFBhY2thZ2VSZWxlYXNlSWQgPSBhd2FpdCBmaW5kUGFja2FnZVJlbGVhc2VJZChcbiAgICAgIHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLFxuICAgICAgY3R4LFxuICAgIClcbiAgICBpZiAoZm91bmRQYWNrYWdlUmVsZWFzZUlkKSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZUlkID0gZm91bmRQYWNrYWdlUmVsZWFzZUlkXG4gICAgfVxuICB9XG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFZlcmlmeSB0aGUgcGFja2FnZSByZWxlYXNlIGV4aXN0c1xuICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocHIpID0+IHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gRGV0ZXJtaW5lIGNvbnRlbnQgbWltZXR5cGVcbiAgY29uc3QgY29udGVudE1pbWV0eXBlID1cbiAgICBwcm92aWRlZENvbnRlbnRNaW1ldHlwZSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIudHNcIikgfHwgZmlsZV9wYXRoLmVuZHNXaXRoKFwiLnRzeFwiKVxuICAgICAgPyBcInRleHQvdHlwZXNjcmlwdFwiXG4gICAgICA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5qc1wiKSA/IFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmpzb25cIikgPyBcImFwcGxpY2F0aW9uL2pzb25cIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5tZFwiKSA/IFwidGV4dC9tYXJrZG93blwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmh0bWxcIikgPyBcInRleHQvaHRtbFwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmNzc1wiKSA/IFwidGV4dC9jc3NcIiA6IG51bGwpIHx8XG4gICAgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIlxuXG4gIC8vIENyZWF0ZSB0aGUgcGFja2FnZSBmaWxlXG4gIGNvbnN0IG5ld1BhY2thZ2VGaWxlID0ge1xuICAgIHBhY2thZ2VfZmlsZV9pZDogY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfdGV4dDpcbiAgICAgIGNvbnRlbnRfdGV4dCB8fFxuICAgICAgKGNvbnRlbnRfYmFzZTY0XG4gICAgICAgID8gQnVmZmVyLmZyb20oY29udGVudF9iYXNlNjQsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKClcbiAgICAgICAgOiBudWxsKSxcbiAgICBjb250ZW50X21pbWV0eXBlOiBjb250ZW50TWltZXR5cGUsXG4gICAgaXNfZGlyZWN0b3J5OiBmYWxzZSxcbiAgICBpc19yZWxlYXNlX3RhcmJhbGw6IGlzX3JlbGVhc2VfdGFyYmFsbCB8fCBmYWxzZSxcbiAgICBucG1fcGFja19vdXRwdXQ6IG5wbV9wYWNrX291dHB1dCB8fCBudWxsLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfVxuXG4gIC8vIEFkZCB0byB0aGUgdGVzdCBkYXRhYmFzZVxuICBjdHguZGIuYWRkUGFja2FnZUZpbGUobmV3UGFja2FnZUZpbGUpXG5cbiAgLy8gVXBkYXRlIGZzX3NoYSBmb3IgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICBjdHguZGIudXBkYXRlUGFja2FnZVJlbGVhc2VGc1NoYShwYWNrYWdlUmVsZWFzZUlkKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9maWxlOiBuZXdQYWNrYWdlRmlsZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IGZpbmRQYWNrYWdlUmVsZWFzZUlkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWRcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnBhY2thZ2VfcmVsZWFzZV9pZCkgcmV0dXJuIHRydWVcbiAgICAgIGlmICh2LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBcIk11c3Qgc3BlY2lmeSBlaXRoZXIgcGFja2FnZV9yZWxlYXNlX2lkIG9yIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQgJiYgdi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJDYW5ub3Qgc3BlY2lmeSBib3RoIHBhY2thZ2VfcmVsZWFzZV9pZCBhbmQgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGZpbGVfcGF0aCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlSWQgPSByZXEuanNvbkJvZHkucGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkICYmIHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSB7XG4gICAgY29uc3QgZm91bmRQYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQoXG4gICAgICByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgICAgIGN0eCxcbiAgICApXG4gICAgaWYgKGZvdW5kUGFja2FnZVJlbGVhc2VJZCkge1xuICAgICAgcGFja2FnZVJlbGVhc2VJZCA9IGZvdW5kUGFja2FnZVJlbGVhc2VJZFxuICAgIH1cbiAgfVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZSB0byBjaGVjayBwZXJtaXNzaW9uc1xuICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocHIpID0+IHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IHRoZSBwYWNrYWdlIHRvIGNoZWNrIHBlcm1pc3Npb25zXG4gIGNvbnN0IGV4aXN0aW5ncGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfaWQsXG4gIClcblxuICBpZiAoIWV4aXN0aW5ncGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHVzZXIgaGFzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBmaWxlXG4gIGlmIChleGlzdGluZ3BhY2thZ2UuY3JlYXRvcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gZGVsZXRlIGZpbGVzIGluIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBGaW5kIHRoZSBmaWxlXG4gIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChmKSA9PlxuICAgICAgZi5maWxlX3BhdGggPT09IGZpbGVfcGF0aCAmJiBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJmaWxlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIERlbGV0ZSB0aGUgZmlsZSB1c2luZyBkZWxldGVQYWNrYWdlRmlsZSBtZXRob2RcbiAgY29uc3QgZGVsZXRlZCA9IGN0eC5kYi5kZWxldGVQYWNrYWdlRmlsZShwYWNrYWdlRmlsZS5wYWNrYWdlX2ZpbGVfaWQpXG5cbiAgaWYgKCFkZWxldGVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZmlsZV9kZWxldGlvbl9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGRlbGV0ZSBwYWNrYWdlIGZpbGVcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVXBkYXRlIGZzX3NoYSBmb3IgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICBjdHguZGIudXBkYXRlUGFja2FnZVJlbGVhc2VGc1NoYShwYWNrYWdlUmVsZWFzZUlkKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCAqIGFzIFpUIGZyb20gXCIuLi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL3V0aWxzL25vcm1hbGl6ZVByb2plY3RGaWxlUGF0aFwiXG5leHBvcnQgY29uc3QgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvciA9IGFzeW5jIChcbiAgZGVzY3JpcHRvcjpcbiAgICB8IHsgcGFja2FnZV9maWxlX2lkOiBzdHJpbmcgfVxuICAgIHwgeyBwYWNrYWdlX3JlbGVhc2VfaWQ6IHN0cmluZzsgZmlsZV9wYXRoOiBzdHJpbmcgfVxuICAgIHwgeyBwYWNrYWdlX2lkOiBzdHJpbmc7IHZlcnNpb24/OiBzdHJpbmc7IGZpbGVfcGF0aDogc3RyaW5nIH1cbiAgICB8IHsgcGFja2FnZV9uYW1lOiBzdHJpbmc7IHZlcnNpb24/OiBzdHJpbmc7IGZpbGVfcGF0aDogc3RyaW5nIH1cbiAgICB8IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogc3RyaW5nOyBmaWxlX3BhdGg6IHN0cmluZyB9LFxuICBjdHg6IHsgZGI6IGFueSB9LFxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgaWYgKFwicGFja2FnZV9maWxlX2lkXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT4gcGYucGFja2FnZV9maWxlX2lkID09PSBkZXNjcmlwdG9yLnBhY2thZ2VfZmlsZV9pZCxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvci5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfcmVsZWFzZV9pZFwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfcmVsZWFzZV9pZCwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX2lkXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHsgcGFja2FnZV9pZCwgdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG5cbiAgICAvLyBWZXJpZnkgcGFja2FnZSBleGlzdHNcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwOiBaVC5QYWNrYWdlKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQsXG4gICAgKVxuICAgIGlmICghcGtnKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2Ugbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgbGV0IHBhY2thZ2VSZWxlYXNlXG4gICAgaWYgKHZlcnNpb24pIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGZpbGVcbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+XG4gICAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChwZi5maWxlX3BhdGgpID09PVxuICAgICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChmaWxlX3BhdGgpLFxuICAgIClcblxuICAgIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlRmlsZS5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfbmFtZVwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZSwgdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIGZpcnN0XG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHA6IFpULlBhY2thZ2UpID0+IHAubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuICAgIGlmICghcGtnKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUGFja2FnZSBub3QgZm91bmQ6ICR7cGFja2FnZV9uYW1lfWApXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgbGV0IHBhY2thZ2VSZWxlYXNlXG4gICAgaWYgKHZlcnNpb24pIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBmaWxlXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVswXVxuICAgIGNvbnN0IHZlcnNpb24gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVsxXVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZVxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwOiBaVC5QYWNrYWdlKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuICAgIGlmICghcGtnKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUGFja2FnZSBub3QgZm91bmQ6ICR7cGFja2FnZU5hbWV9YClcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBsZXQgcGFja2FnZVJlbGVhc2VcbiAgICBpZiAoIXZlcnNpb24gfHwgdmVyc2lvbiA9PT0gXCJsYXRlc3RcIikge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci52ZXJzaW9uID09PSB2ZXJzaW9uLFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZCBmb3IgdmVyc2lvbjogJHt2ZXJzaW9uIHx8IFwibGF0ZXN0XCJ9YCxcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBmaWxlXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUGFja2FnZSBmaWxlIG5vdCBmb3VuZDogJHtmaWxlX3BhdGh9YClcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIkludmFsaWQgcGFja2FnZSBmaWxlIGRlc2NyaXB0b3JcIilcbn1cbiIsICJpbXBvcnQgeyBnZXRQYWNrYWdlRmlsZUlkRnJvbUZpbGVEZXNjcmlwdG9yIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX2ZpbGUvZ2V0LXBhY2thZ2UtZmlsZS1pZC1mcm9tLWZpbGUtZGVzY3JpcHRvclwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9maWxlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHouYW55KCksIC8vIFVzaW5nIGFueSBiZWNhdXNlIHdlJ3JlIHJldHVybmluZyBiaW5hcnkgZGF0YVxufSBhcyBjb25zdFxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHJvdXRlU3BlYykoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGxldCBwYWNrYWdlRmlsZUlkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgY29uc3QgcGFyYW1zID0gcmVxLnF1ZXJ5XG5cbiAgaWYgKFwicGFja2FnZV9maWxlX2lkXCIgaW4gcGFyYW1zKSB7XG4gICAgcGFja2FnZUZpbGVJZCA9IHBhcmFtcy5wYWNrYWdlX2ZpbGVfaWRcbiAgfSBlbHNlIGlmIChcInBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIiBpbiBwYXJhbXMpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sIGZpbGVfcGF0aCB9ID0gcGFyYW1zXG5cbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQoXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLFxuICAgICAgY3R4LFxuICAgIClcblxuICAgIGlmICghcGFja2FnZVJlbGVhc2VJZCkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBwYWNrYWdlRmlsZUlkID0gYXdhaXQgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvcihcbiAgICAgICAge1xuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZCxcbiAgICAgICAgICBmaWxlX3BhdGg6IGZpbGVfcGF0aCxcbiAgICAgICAgfSxcbiAgICAgICAgY3R4LFxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcIm5vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKCFwYWNrYWdlRmlsZUlkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYmFkX3JlcXVlc3RcIixcbiAgICAgIG1lc3NhZ2U6IFwiQ291bGQgbm90IGRldGVybWluZSBwYWNrYWdlX2ZpbGVfaWRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKHBmKSA9PiBwZi5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgaGVhZGVycyA9IHtcbiAgICBcIkNvbnRlbnQtVHlwZVwiOlxuICAgICAgcGFja2FnZUZpbGUuY29udGVudF9taW1ldHlwZSB8fFxuICAgICAgKHBhY2thZ2VGaWxlLmNvbnRlbnRfdGV4dFxuICAgICAgICA/IFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiXG4gICAgICAgIDogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIiksXG4gICAgXCJDb250ZW50LURpc3Bvc2l0aW9uXCI6IGBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiR7cGFja2FnZUZpbGUuZmlsZV9wYXRoLnNwbGl0KFwiL1wiKS5wb3AoKX1cImAsXG4gICAgXCJDYWNoZS1Db250cm9sXCI6IFwicHVibGljLCBtYXgtYWdlPTg2NDAwLCBzdGFsZS13aGlsZS1yZXZhbGlkYXRlPTYwNDgwMFwiLFxuICAgIEV4cGlyZXM6IG5ldyBEYXRlKERhdGUubm93KCkgKyA4NjQwMDAwMCkudG9VVENTdHJpbmcoKSxcbiAgfVxuXG4gIC8vIFJldHVybiB0ZXh0IGNvbnRlbnQgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgYmluYXJ5IGNvbnRlbnRcbiAgaWYgKHBhY2thZ2VGaWxlLmNvbnRlbnRfdGV4dCkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UocGFja2FnZUZpbGUuY29udGVudF90ZXh0LCB7IGhlYWRlcnMgfSlcbiAgfVxuXG4gIC8vIENvbnZlcnQgQnVmZmVyIHRvIFVpbnQ4QXJyYXkgZm9yIFJlc3BvbnNlIGNvbXBhdGliaWxpdHlcbiAgY29uc3QgdWludDhBcnJheSA9IHBhY2thZ2VGaWxlLmNvbnRlbnRfYnl0ZXNcbiAgICA/IG5ldyBVaW50OEFycmF5KHBhY2thZ2VGaWxlLmNvbnRlbnRfYnl0ZXMpXG4gICAgOiBuZXcgVWludDhBcnJheSgpXG4gIHJldHVybiBuZXcgUmVzcG9uc2UodWludDhBcnJheSwgeyBoZWFkZXJzIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0ICogYXMgWlQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvciB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9maWxlL2dldC1wYWNrYWdlLWZpbGUtaWQtZnJvbS1maWxlLWRlc2NyaXB0b3JcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9maWxlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgICAgIHZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgfSksXG4gICAgKVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLFxuICAgICAgICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIGpzb25SZXNwb25zZTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgb2s6IHouYm9vbGVhbigpLFxuICAgICAgcGFja2FnZV9maWxlOiBaVC5wYWNrYWdlRmlsZVNjaGVtYS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm9yKFpULmVycm9yUmVzcG9uc2VTY2hlbWEpLFxufSBhcyBjb25zdFxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHJvdXRlU3BlYykoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHBhY2thZ2VGaWxlSWQgPSBhd2FpdCBnZXRQYWNrYWdlRmlsZUlkRnJvbUZpbGVEZXNjcmlwdG9yKHJlcS5xdWVyeSwgY3R4KVxuXG4gIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+IHBmLnBhY2thZ2VfZmlsZV9pZCA9PT0gcGFja2FnZUZpbGVJZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX2ZpbGVfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX2ZpbGU6IHtcbiAgICAgIC4uLnBhY2thZ2VGaWxlLFxuICAgICAgY3JlYXRlZF9hdDogcGFja2FnZUZpbGUuY3JlYXRlZF9hdC50b1N0cmluZygpLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0ICogYXMgWlQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZmluZFBhY2thZ2VSZWxlYXNlSWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfcmVsZWFzZS9maW5kLXBhY2thZ2UtcmVsZWFzZS1pZFwiXG5cbmNvbnN0IHJvdXRlU3BlYyA9IHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLFxuICAgICAgICB1c2VfbGF0ZXN0X3ZlcnNpb246IHoucHJlcHJvY2VzcyhcbiAgICAgICAgICAodmFsKSA9PiAodmFsID09PSBcInRydWVcIiA/IHRydWUgOiB2YWwpLFxuICAgICAgICAgIHoubGl0ZXJhbCh0cnVlKSxcbiAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9maWxlczogei5hcnJheShaVC5wYWNrYWdlRmlsZVNjaGVtYSksXG4gIH0pLFxufSBhcyBjb25zdFxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHJvdXRlU3BlYykoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlSWQgPSBhd2FpdCBmaW5kUGFja2FnZVJlbGVhc2VJZChyZXEucXVlcnksIGN0eClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gT21pdCB0aGUgY29udGVudF90ZXh0IGZpZWxkXG4gIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGN0eC5kYi5wYWNrYWdlRmlsZXNcbiAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZClcbiAgICAubWFwKCh7IGNvbnRlbnRfdGV4dCwgLi4uZmlsZSB9KSA9PiAoe1xuICAgICAgLi4uZmlsZSxcbiAgICB9KSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZXM6IHBhY2thZ2VGaWxlcyxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0ICogYXMgWlQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHR5cGUgeyBEYkNsaWVudCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvZGItY2xpZW50XCJcblxuZXhwb3J0IGNvbnN0IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlID0gKFxuICBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2U6IFpULlBhY2thZ2VSZWxlYXNlLFxuICBvcHRpb25zOiB7XG4gICAgaW5jbHVkZV9sb2dzPzogYm9vbGVhblxuICAgIGluY2x1ZGVfYWlfcmV2aWV3PzogYm9vbGVhblxuICAgIGRiPzogRGJDbGllbnRcbiAgfSA9IHtcbiAgICBpbmNsdWRlX2xvZ3M6IGZhbHNlLFxuICAgIGluY2x1ZGVfYWlfcmV2aWV3OiBmYWxzZSxcbiAgfSxcbik6IFpULlBhY2thZ2VSZWxlYXNlID0+IHtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIC4uLmludGVybmFsX3BhY2thZ2VfcmVsZWFzZSxcbiAgICBjcmVhdGVkX2F0OiBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuY3JlYXRlZF9hdCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OlxuICAgICAgaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmNpcmN1aXRfanNvbl9idWlsZF9lcnJvcl9sYXN0X3VwZGF0ZWRfYXQsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yOiBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yLFxuICAgIHRyYW5zcGlsYXRpb25fbG9nczogb3B0aW9ucy5pbmNsdWRlX2xvZ3NcbiAgICAgID8gaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLnRyYW5zcGlsYXRpb25fbG9nc1xuICAgICAgOiBbXSxcbiAgICB1c2VyX2NvZGVfYnVpbGRfbG9nczogb3B0aW9ucy5pbmNsdWRlX2xvZ3NcbiAgICAgID8gaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLnVzZXJfY29kZV9idWlsZF9sb2dzXG4gICAgICA6IG51bGwsXG4gICAgdXNlcl9jb2RlX2xvZ19zdHJlYW1fdXJsOiBvcHRpb25zLmluY2x1ZGVfbG9nc1xuICAgICAgPyBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UudXNlcl9jb2RlX2xvZ19zdHJlYW1fdXJsXG4gICAgICA6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzXG4gICAgICA/IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5jaXJjdWl0X2pzb25fYnVpbGRfbG9nc1xuICAgICAgOiBbXSxcbiAgICBpbWFnZV9nZW5lcmF0aW9uX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzXG4gICAgICA/IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5pbWFnZV9nZW5lcmF0aW9uX2xvZ3NcbiAgICAgIDogbnVsbCxcbiAgICBpbWFnZV9nZW5lcmF0aW9uX2luX3Byb2dyZXNzOlxuICAgICAgaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmltYWdlX2dlbmVyYXRpb25faW5fcHJvZ3Jlc3MsXG4gICAgaW1hZ2VfZ2VuZXJhdGlvbl9zdGFydGVkX2F0OlxuICAgICAgaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmltYWdlX2dlbmVyYXRpb25fc3RhcnRlZF9hdCA/PyBudWxsLFxuICAgIGltYWdlX2dlbmVyYXRpb25fY29tcGxldGVkX2F0OlxuICAgICAgaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmltYWdlX2dlbmVyYXRpb25fY29tcGxldGVkX2F0ID8/IG51bGwsXG4gICAgaW1hZ2VfZ2VuZXJhdGlvbl9pc19zdGFsZTpcbiAgICAgIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5pbWFnZV9nZW5lcmF0aW9uX2lzX3N0YWxlLFxuICAgIGltYWdlX2dlbmVyYXRpb25fZXJyb3I6XG4gICAgICBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuaW1hZ2VfZ2VuZXJhdGlvbl9lcnJvciA/PyBudWxsLFxuICAgIGltYWdlX2dlbmVyYXRpb25fZXJyb3JfbGFzdF91cGRhdGVkX2F0OlxuICAgICAgaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmltYWdlX2dlbmVyYXRpb25fZXJyb3JfbGFzdF91cGRhdGVkX2F0ID8/IG51bGwsXG4gICAgaW1hZ2VfZ2VuZXJhdGlvbl9kaXNwbGF5X3N0YXR1czpcbiAgICAgIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5pbWFnZV9nZW5lcmF0aW9uX2Rpc3BsYXlfc3RhdHVzLFxuICAgIGlzX3ByX3ByZXZpZXc6IEJvb2xlYW4oaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmlzX3ByX3ByZXZpZXcpLFxuICAgIGdpdGh1Yl9wcl9udW1iZXI6IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5naXRodWJfcHJfbnVtYmVyLFxuICAgIGJyYW5jaF9uYW1lOiBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuYnJhbmNoX25hbWUsXG4gICAgY29tbWl0X21lc3NhZ2U6IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5jb21taXRfbWVzc2FnZSA/PyBudWxsLFxuICAgIGNvbW1pdF9hdXRob3I6IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5jb21taXRfYXV0aG9yID8/IG51bGwsXG4gICAgcGNiX3ByZXZpZXdfaW1hZ2VfdXJsOlxuICAgICAgaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLnBjYl9wcmV2aWV3X2ltYWdlX3VybCA/PyBudWxsLFxuICAgIHNjaF9wcmV2aWV3X2ltYWdlX3VybDpcbiAgICAgIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5zY2hfcHJldmlld19pbWFnZV91cmwgPz8gbnVsbCxcbiAgICBjYWRfcHJldmlld19pbWFnZV91cmw6XG4gICAgICBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuY2FkX3ByZXZpZXdfaW1hZ2VfdXJsID8/IG51bGwsXG4gIH1cblxuICBpZiAob3B0aW9ucy5pbmNsdWRlX2FpX3JldmlldyAmJiBvcHRpb25zLmRiKSB7XG4gICAgY29uc3QgcmV2aWV3cyA9IG9wdGlvbnMuZGJcbiAgICAgIC5saXN0QWlSZXZpZXdzKClcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChyKSA9PlxuICAgICAgICAgIHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgKVxuICAgICAgLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gICAgICApXG5cbiAgICBpZiAocmV2aWV3cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsYXRlc3QgPSByZXZpZXdzWzBdXG4gICAgICByZXN1bHQuYWlfcmV2aWV3X3RleHQgPSBsYXRlc3QuYWlfcmV2aWV3X3RleHQgPz8gbnVsbFxuICAgICAgcmVzdWx0LmFpX3Jldmlld19zdGFydGVkX2F0ID0gbGF0ZXN0LnN0YXJ0X3Byb2Nlc3NpbmdfYXQgPz8gbnVsbFxuICAgICAgcmVzdWx0LmFpX3Jldmlld19jb21wbGV0ZWRfYXQgPSBsYXRlc3QuZmluaXNoZWRfcHJvY2Vzc2luZ19hdCA/PyBudWxsXG4gICAgICByZXN1bHQuYWlfcmV2aWV3X2Vycm9yID0gbGF0ZXN0LnByb2Nlc3NpbmdfZXJyb3IgPz8gbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8vIE9ubHkgaW5jbHVkZSBBSSByZXZpZXcgZmllbGRzIHdoZW4gaW5jbHVkZV9haV9yZXZpZXcgaXMgdHJ1ZVxuICBpZiAoIW9wdGlvbnMuaW5jbHVkZV9haV9yZXZpZXcpIHtcbiAgICBkZWxldGUgcmVzdWx0LmFpX3Jldmlld190ZXh0XG4gICAgZGVsZXRlIHJlc3VsdC5haV9yZXZpZXdfc3RhcnRlZF9hdFxuICAgIGRlbGV0ZSByZXN1bHQuYWlfcmV2aWV3X2NvbXBsZXRlZF9hdFxuICAgIGRlbGV0ZSByZXN1bHQuYWlfcmV2aWV3X2Vycm9yXG4gICAgZGVsZXRlIHJlc3VsdC5haV9yZXZpZXdfbG9nc1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIiwgImltcG9ydCB7IHBhY2thZ2VSZWxlYXNlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtcmVsZWFzZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX2xhdGVzdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBjb21taXRfc2hhOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VfcmVsZWFzZTogcGFja2FnZVJlbGVhc2VTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGxldCB7XG4gICAgcGFja2FnZV9pZCxcbiAgICBwYWNrYWdlX25hbWUsXG4gICAgaXNfbGF0ZXN0ID0gdHJ1ZSxcbiAgICB2ZXJzaW9uLFxuICAgIGNvbW1pdF9zaGEsXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGlmIChwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uICYmICFwYWNrYWdlX2lkKSB7XG4gICAgY29uc3QgW3BhY2thZ2VOYW1lLCBwYXJzZWRWZXJzaW9uXSA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gcGFja2FnZU5hbWUpXG5cbiAgICBpZiAoIXBrZykge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBgUGFja2FnZSBub3QgZm91bmQ6ICR7cGFja2FnZU5hbWV9YCxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcGFja2FnZV9pZCA9IHBrZy5wYWNrYWdlX2lkXG4gICAgdmVyc2lvbiA9IHBhcnNlZFZlcnNpb25cbiAgfVxuXG4gIGlmICghcGFja2FnZV9pZCAmJiBwYWNrYWdlX25hbWUpIHtcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSBwYWNrYWdlX25hbWUpXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kOiAke3BhY2thZ2VfbmFtZX1gLFxuICAgICAgfSlcbiAgICB9XG4gICAgcGFja2FnZV9pZCA9IHBrZy5wYWNrYWdlX2lkXG4gIH1cblxuICBpZiAoIXBhY2thZ2VfaWQgfHwgIXZlcnNpb24pIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtaXNzaW5nX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwicGFja2FnZV9pZCBvciBwYWNrYWdlX25hbWUgYW5kIHZlcnNpb24gYXJlIHJlcXVpcmVkXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHZlcnNpb24gYWxyZWFkeSBleGlzdHNcbiAgY29uc3QgZXhpc3RpbmdSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCAmJiBwci52ZXJzaW9uID09PSB2ZXJzaW9uLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInZlcnNpb25fYWxyZWFkeV9leGlzdHNcIixcbiAgICAgIG1lc3NhZ2U6IGBWZXJzaW9uICR7dmVyc2lvbn0gYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMgcGFja2FnZWAsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFVwZGF0ZSBwcmV2aW91cyBsYXRlc3QgaWYgbmVlZGVkXG4gIGlmIChpc19sYXRlc3QpIHtcbiAgICBjdHguZGIucGFja2FnZVJlbGVhc2VzXG4gICAgICAuZmlsdGVyKChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCAmJiBwci5pc19sYXRlc3QpXG4gICAgICAuZm9yRWFjaCgocHIpID0+IChwci5pc19sYXRlc3QgPSBmYWxzZSkpXG4gIH1cblxuICBjb25zdCBuZXdQYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5hZGRQYWNrYWdlUmVsZWFzZSh7XG4gICAgcGFja2FnZV9pZCxcbiAgICBpc19sYXRlc3QsXG4gICAgdmVyc2lvbixcbiAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBjb21taXRfc2hhOiBjb21taXRfc2hhID8/IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yOiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcl9sYXN0X3VwZGF0ZWRfYXQ6IG51bGwsXG4gICAgLy8gU2V0dGluZyB0aGUgdHJhbnNwaWxlZCBhcyB0cnVlIG9uIGNyZWF0aW9uXG4gICAgaGFzX3RyYW5zcGlsZWQ6IHRydWUsXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogbnVsbCxcbiAgfSlcblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIGlmIHRoaXMgaXMgdGhlIGxhdGVzdCByZWxlYXNlXG4gIGlmIChpc19sYXRlc3QpIHtcbiAgICBjdHguZGIudXBkYXRlUGFja2FnZShwYWNrYWdlX2lkLCB7XG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogdmVyc2lvbixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlKG5ld1BhY2thZ2VSZWxlYXNlLCB7IGRiOiBjdHguZGIgfSksXG4gIH0pXG59KVxuIiwgImltcG9ydCAqIGFzIHp0IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtcmVsZWFzZVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBpbmNsdWRlX2xvZ3M6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gICAgaW5jbHVkZV9haV9yZXZpZXc6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gIH0pLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwYWNrYWdlX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VfcmVsZWFzZTogenQucGFja2FnZVJlbGVhc2VTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgICBwYWNrYWdlX25hbWUsXG4gICAgcGFja2FnZV9pZCxcbiAgICBpc19sYXRlc3QsXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBIYW5kbGUgcGFja2FnZV9uYW1lIHdpdGggaXNfbGF0ZXN0XG4gIGlmIChwYWNrYWdlX25hbWUgJiYgaXNfbGF0ZXN0ID09PSB0cnVlKSB7XG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHgpID0+IHgubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBTb3J0IHJlbGVhc2VzIGJ5IHZlcnNpb24gdG8gZmluZCB0aGUgbGF0ZXN0IG9uZVxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlcyA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcbiAgICAgIC5maWx0ZXIoKHgpID0+IHgucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQpXG4gICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKClcbiAgICAgICAgKVxuICAgICAgfSlcblxuICAgIGlmIChwYWNrYWdlUmVsZWFzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJObyByZWxlYXNlcyBmb3VuZCBmb3IgdGhpcyBwYWNrYWdlXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZTogcHVibGljTWFwUGFja2FnZVJlbGVhc2UocGFja2FnZVJlbGVhc2VzWzBdLCB7XG4gICAgICAgIGluY2x1ZGVfYWlfcmV2aWV3OiByZXEuY29tbW9uUGFyYW1zPy5pbmNsdWRlX2FpX3JldmlldyxcbiAgICAgICAgZGI6IGN0eC5kYixcbiAgICAgIH0pLFxuICAgIH0pXG4gIH1cblxuICAvLyBIYW5kbGUgcGFja2FnZV9pZCB3aXRoIGlzX2xhdGVzdFxuICBpZiAocGFja2FnZV9pZCAmJiBpc19sYXRlc3QgPT09IHRydWUpIHtcbiAgICAvLyBTb3J0IHJlbGVhc2VzIGJ5IHZlcnNpb24gdG8gZmluZCB0aGUgbGF0ZXN0IG9uZVxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlcyA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcbiAgICAgIC5maWx0ZXIoKHgpID0+IHgucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKVxuICAgICAgICApXG4gICAgICB9KVxuXG4gICAgaWYgKHBhY2thZ2VSZWxlYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIk5vIHJlbGVhc2VzIGZvdW5kIGZvciB0aGlzIHBhY2thZ2VcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwYWNrYWdlUmVsZWFzZXNbMF0sIHtcbiAgICAgICAgaW5jbHVkZV9haV9yZXZpZXc6IHJlcS5jb21tb25QYXJhbXM/LmluY2x1ZGVfYWlfcmV2aWV3LFxuICAgICAgICBkYjogY3R4LmRiLFxuICAgICAgfSksXG4gICAgfSlcbiAgfVxuXG4gIGlmIChwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uICYmICFwYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICBjb25zdCBbcGFja2FnZU5hbWUsIHBhcnNlZFZlcnNpb25dID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgoeCkgPT4geC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgICBjb25zdCBwa2dSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKCh4KSA9PiB7XG4gICAgICByZXR1cm4geC52ZXJzaW9uID09IHBhcnNlZFZlcnNpb24gJiYgeC5wYWNrYWdlX2lkID09IHBrZz8ucGFja2FnZV9pZFxuICAgIH0pXG5cbiAgICBpZiAoIXBrZ1JlbGVhc2UpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwa2dSZWxlYXNlLCB7XG4gICAgICAgIGluY2x1ZGVfYWlfcmV2aWV3OiByZXEuY29tbW9uUGFyYW1zPy5pbmNsdWRlX2FpX3JldmlldyxcbiAgICAgICAgZGI6IGN0eC5kYixcbiAgICAgIH0pLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBmb3VuZFJlbGVhc2UgPVxuICAgIHBhY2thZ2VfcmVsZWFzZV9pZCAmJiBjdHguZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKHBhY2thZ2VfcmVsZWFzZV9pZClcblxuICBpZiAoIWZvdW5kUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfcmVsZWFzZTogcHVibGljTWFwUGFja2FnZVJlbGVhc2UoZm91bmRSZWxlYXNlLCB7XG4gICAgICBpbmNsdWRlX2xvZ3M6IHJlcS5jb21tb25QYXJhbXM/LmluY2x1ZGVfbG9ncyxcbiAgICAgIGluY2x1ZGVfYWlfcmV2aWV3OiByZXEuY29tbW9uUGFyYW1zPy5pbmNsdWRlX2FpX3JldmlldyxcbiAgICAgIGRiOiBjdHguZGIsXG4gICAgfSksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VSZWxlYXNlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtcmVsZWFzZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgaW5jbHVkZV9haV9yZXZpZXc6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gIH0pLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb21taXRfc2hhOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh7IHBhY2thZ2VfaWQsIHBhY2thZ2VfbmFtZSB9KSA9PiB7XG4gICAgICBpZiAocGFja2FnZV9pZCAmJiBwYWNrYWdlX25hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwicGFja2FnZV9pZCBhbmQgcGFja2FnZV9uYW1lIGFyZSBtdXR1YWxseSBleGNsdXNpdmVcIilcbiAgICAucmVmaW5lKCh7IHBhY2thZ2VfaWQsIHBhY2thZ2VfbmFtZSB9KSA9PiB7XG4gICAgICBpZiAoIXBhY2thZ2VfaWQgJiYgIXBhY2thZ2VfbmFtZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJwYWNrYWdlX2lkIG9yIHBhY2thZ2VfbmFtZSBpcyByZXF1aXJlZFwiKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VfcmVsZWFzZXM6IHouYXJyYXkocGFja2FnZVJlbGVhc2VTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIHBhY2thZ2VfbmFtZSwgaXNfbGF0ZXN0LCB2ZXJzaW9uLCBjb21taXRfc2hhIH0gPVxuICAgIHJlcS5qc29uQm9keVxuXG4gIGlmICghcGFja2FnZV9pZCAmJiAhcGFja2FnZV9uYW1lICYmICFpc19sYXRlc3QgJiYgIXZlcnNpb24gJiYgIWNvbW1pdF9zaGEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX3F1ZXJ5XCIsXG4gICAgICBtZXNzYWdlOlxuICAgICAgICBcIkF0IGxlYXN0IG9uZSBvZiBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUsIGlzX2xhdGVzdCwgdmVyc2lvbiBvciBjb21taXRfc2hhIGlzIHJlcXVpcmVkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCByZWxlYXNlcyA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcblxuICAvLyBBcHBseSBmaWx0ZXJzXG4gIGlmIChwYWNrYWdlX2lkKSB7XG4gICAgcmVsZWFzZXMgPSByZWxlYXNlcy5maWx0ZXIoKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkKVxuICB9XG5cbiAgaWYgKHBhY2thZ2VfbmFtZSkge1xuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VfbmFtZSlcbiAgICBpZiAocGtnKSB7XG4gICAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkKVxuICAgIH0gZWxzZSB7XG4gICAgICByZWxlYXNlcyA9IFtdXG4gICAgfVxuICB9XG5cbiAgaWYgKGlzX2xhdGVzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVsZWFzZXMgPSByZWxlYXNlcy5maWx0ZXIoKHByKSA9PiBwci5pc19sYXRlc3QgPT09IGlzX2xhdGVzdClcbiAgfVxuXG4gIGlmICh2ZXJzaW9uKSB7XG4gICAgcmVsZWFzZXMgPSByZWxlYXNlcy5maWx0ZXIoKHByKSA9PiBwci52ZXJzaW9uID09PSB2ZXJzaW9uKVxuICB9XG5cbiAgaWYgKGNvbW1pdF9zaGEpIHtcbiAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLmNvbW1pdF9zaGEgPT09IGNvbW1pdF9zaGEpXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfcmVsZWFzZXM6IHJlbGVhc2VzLm1hcCgocHIpID0+XG4gICAgICBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwciwge1xuICAgICAgICBpbmNsdWRlX2FpX3JldmlldzogcmVxLmNvbW1vblBhcmFtcz8uaW5jbHVkZV9haV9yZXZpZXcsXG4gICAgICAgIGRiOiBjdHguZGIsXG4gICAgICB9KSxcbiAgICApLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IERlYnVnIGZyb20gXCJkZWJ1Z1wiXG5cbmNvbnN0IGRlYnVnID0gRGVidWcoXCJmYWtlLXNuaXBwZXRzLWFwaTpyZWJ1aWxkLXBhY2thZ2VcIilcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgICByZWJ1aWxkX3RyYW5zcGlsYXRpb246IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgcmVidWlsZF9jaXJjdWl0X2pzb246IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkLCByZWJ1aWxkX3RyYW5zcGlsYXRpb24sIHJlYnVpbGRfY2lyY3VpdF9qc29uIH0gPVxuICAgIHJlcS5qc29uQm9keVxuXG4gIC8vIEdldCB0aGUgcGFja2FnZSByZWxlYXNlIGluZm8gZm9yIGxvZ2dpbmdcbiAgY29uc3QgcmVsZWFzZSA9IGN0eC5kYi5nZXRQYWNrYWdlUmVsZWFzZUJ5SWQocGFja2FnZV9yZWxlYXNlX2lkKVxuXG4gIGlmICghcmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwYWNrYWdlSW5mbyA9IGN0eC5kYi5nZXRQYWNrYWdlQnlJZChyZWxlYXNlLnBhY2thZ2VfaWQpXG5cbiAgaWYgKCFwYWNrYWdlSW5mbykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChwYWNrYWdlSW5mby5vd25lcl9vcmdfaWQgIT09IGN0eC5hdXRoLnBlcnNvbmFsX29yZ19pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byByZWJ1aWxkIHRoaXMgcGFja2FnZSByZWxlYXNlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGRlYnVnKFxuICAgIGBSZWJ1aWxkaW5nIHBhY2thZ2UgcmVsZWFzZSAke3BhY2thZ2VfcmVsZWFzZV9pZH0gZm9yICR7cGFja2FnZUluZm8ubmFtZX1AJHtyZWxlYXNlLnZlcnNpb259YCxcbiAgKVxuXG4gIC8vIFRyaWdnZXIgdHJhbnNwaWxhdGlvbiBpZiByZXF1ZXN0ZWRcbiAgaWYgKHJlYnVpbGRfdHJhbnNwaWxhdGlvbikge1xuICAgIGRlYnVnKFwiUmVzZXR0aW5nIHRyYW5zcGlsYXRpb24gc3RhdGVcIilcbiAgfVxuXG4gIC8vIFNldCBjaXJjdWl0IEpTT04gYnVpbGQgc3RhdGUgdG8gcGVuZGluZyBmb3Igd29ya2VyIHBpY2t1cCBpZiByZXF1ZXN0ZWRcbiAgaWYgKHJlYnVpbGRfY2lyY3VpdF9qc29uKSB7XG4gICAgZGVidWcoXCJSZXNldHRpbmcgY2lyY3VpdCBKU09OIGJ1aWxkIHN0YXRlXCIpXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX2xvY2tlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgbGljZW5zZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGZzX3NoYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHJlYWR5X3RvX2J1aWxkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGFpX3Jldmlld19yZXF1ZXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgICBpc19sb2NrZWQsXG4gICAgaXNfbGF0ZXN0LFxuICAgIGxpY2Vuc2UsXG4gICAgZnNfc2hhLFxuICAgIHJlYWR5X3RvX2J1aWxkLFxuICAgIGFpX3Jldmlld19yZXF1ZXN0ZWQsXG4gIH0gPSByZXEuanNvbkJvZHlcbiAgbGV0IHJlbGVhc2VJZCA9IHBhY2thZ2VfcmVsZWFzZV9pZFxuXG4gIC8vIEhhbmRsZSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uIGxvb2t1cFxuICBpZiAoIXJlbGVhc2VJZCAmJiBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSB7XG4gICAgY29uc3QgW3BhY2thZ2VOYW1lLCB2ZXJzaW9uXSA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gcGFja2FnZU5hbWUpXG4gICAgaWYgKHBrZykge1xuICAgICAgY29uc3QgcmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci52ZXJzaW9uID09PSB2ZXJzaW9uLFxuICAgICAgKVxuICAgICAgaWYgKHJlbGVhc2UpIHtcbiAgICAgICAgcmVsZWFzZUlkID0gcmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoIXJlbGVhc2VJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBkZWx0YSA9IHtcbiAgICBpc19sb2NrZWQsXG4gICAgaXNfbGF0ZXN0LFxuICAgIGxpY2Vuc2UsXG4gICAgZnNfc2hhLFxuICAgIHJlYWR5X3RvX2J1aWxkLFxuICAgIGFpX3Jldmlld19yZXF1ZXN0ZWQsXG4gIH1cbiAgaWYgKFxuICAgIE9iamVjdC5rZXlzKGRlbHRhKS5maWx0ZXIoXG4gICAgICAoaykgPT4gZGVsdGFbayBhcyBrZXlvZiB0eXBlb2YgZGVsdGFdICE9PSB1bmRlZmluZWQsXG4gICAgKS5sZW5ndGggPT09IDBcbiAgKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm9fZmllbGRzX3Byb3ZpZGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIk5vIGZpZWxkcyBwcm92aWRlZCB0byB1cGRhdGVcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocHIpID0+IHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcmVsZWFzZUlkLFxuICApXG4gIGlmICghcmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDcmVhdGUgdXBkYXRlZCByZWxlYXNlIG9iamVjdFxuICBjb25zdCB1cGRhdGVkUmVsZWFzZSA9IHtcbiAgICAuLi5yZWxlYXNlLFxuICAgIC4uLihpc19sb2NrZWQgIT09IHVuZGVmaW5lZCAmJiB7IGlzX2xvY2tlZCB9KSxcbiAgICAuLi4oaXNfbGF0ZXN0ICE9PSB1bmRlZmluZWQgJiYgeyBpc19sYXRlc3QgfSksXG4gICAgLi4uKGxpY2Vuc2UgIT09IHVuZGVmaW5lZCAmJiB7IGxpY2Vuc2UgfSksXG4gICAgLi4uKGZzX3NoYSAhPT0gdW5kZWZpbmVkICYmIHsgZnNfc2hhIH0pLFxuICAgIC4uLihyZWFkeV90b19idWlsZCAhPT0gdW5kZWZpbmVkICYmIHsgcmVhZHlfdG9fYnVpbGQgfSksXG4gICAgLi4uKGFpX3Jldmlld19yZXF1ZXN0ZWQgIT09IHVuZGVmaW5lZCAmJiB7IGFpX3Jldmlld19yZXF1ZXN0ZWQgfSksXG4gICAgLi4uKGFpX3Jldmlld19yZXF1ZXN0ZWQgPT09IHRydWUgJiYge1xuICAgICAgYWlfcmV2aWV3X3RleHQ6IFwiUGxhY2Vob2xkZXIgQUkgUmV2aWV3IFRleHRcIixcbiAgICB9KSxcbiAgfVxuXG4gIC8vIEhhbmRsZSBpc19sYXRlc3QgdXBkYXRlcyBhdG9taWNhbGx5XG4gIGlmIChpc19sYXRlc3QgIT09IHVuZGVmaW5lZCAmJiBpc19sYXRlc3QpIHtcbiAgICAvLyBHZXQgYWxsIHJlbGVhc2VzIGZvciB0aGlzIHBhY2thZ2UgdGhhdCBhcmUgY3VycmVudGx5IG1hcmtlZCBhcyBsYXRlc3RcbiAgICBjb25zdCBvdGhlckxhdGVzdFJlbGVhc2VzID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maWx0ZXIoXG4gICAgICAocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHJlbGVhc2UucGFja2FnZV9pZCAmJlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgIT09IHJlbGVhc2VJZCAmJlxuICAgICAgICBwci5pc19sYXRlc3QsXG4gICAgKVxuXG4gICAgLy8gVXBkYXRlIGFsbCByZWxlYXNlcyBpbiBhIHNpbmdsZSBvcGVyYXRpb25cbiAgICBmb3IgKGNvbnN0IGxhdGVzdFJlbGVhc2Ugb2Ygb3RoZXJMYXRlc3RSZWxlYXNlcykge1xuICAgICAgY3R4LmRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlKHtcbiAgICAgICAgLi4ubGF0ZXN0UmVsZWFzZSxcbiAgICAgICAgaXNfbGF0ZXN0OiBmYWxzZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLy8gVXBkYXRlIHRoZSB0YXJnZXQgcmVsZWFzZVxuICBjdHguZGIudXBkYXRlUGFja2FnZVJlbGVhc2UodXBkYXRlZFJlbGVhc2UpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcih6Lm9iamVjdCh7IG5hbWU6IHouc3RyaW5nKCkgfSkpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGxldCBwYWNrYWdlSWQ6IHN0cmluZ1xuXG4gIC8vIEdldCBwYWNrYWdlIElEIGVpdGhlciBkaXJlY3RseSBvciBieSBuYW1lXG4gIGlmIChcInBhY2thZ2VfaWRcIiBpbiByZXEuanNvbkJvZHkpIHtcbiAgICBjb25zdCBib2R5ID0gcmVxLmpzb25Cb2R5XG4gICAgcGFja2FnZUlkID0gYm9keS5wYWNrYWdlX2lkXG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgbmFtZSBpcyBwcm92aWRlZCwgbG9vayB1cCB0aGUgcGFja2FnZV9pZFxuICAgIGNvbnN0IGJvZHkgPSByZXEuanNvbkJvZHlcbiAgICBjb25zdCBwYWNrYWdlRGF0YSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy5uYW1lID09PSBib2R5Lm5hbWUpXG5cbiAgICBpZiAoIXBhY2thZ2VEYXRhKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcGFja2FnZUlkID0gcGFja2FnZURhdGEucGFja2FnZV9pZFxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgcGFja2FnZSBleGlzdHMgKGV4dHJhIGNoZWNrIGZvciBJRC1iYXNlZCBsb29rdXApXG4gIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZClcblxuICBpZiAoIXBrZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGFscmVhZHkgc3RhcnJlZFxuICBjb25zdCBleGlzdGluZyA9IGN0eC5kYi5hY2NvdW50UGFja2FnZXMuZmluZChcbiAgICAoYXApID0+XG4gICAgICBhcC5hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkICYmIGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCxcbiAgKVxuXG4gIGlmIChleGlzdGluZz8uaXNfc3RhcnJlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFscmVhZHlfc3RhcnJlZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgaGF2ZSBhbHJlYWR5IHN0YXJyZWQgdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFVwZGF0ZSB0aGUgcGFja2FnZSdzIHN0YXIgY291bnRcbiAgcGtnLnN0YXJfY291bnQgPSAocGtnLnN0YXJfY291bnQgfHwgMCkgKyAxXG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgLy8gSWYgcmVjb3JkIGV4aXN0cyBidXQgaXNfc3RhcnJlZCBpcyBmYWxzZSwgdXBkYXRlIHRvIGlzX3N0YXJyZWQ9dHJ1ZVxuICAgIGV4aXN0aW5nLmlzX3N0YXJyZWQgPSB0cnVlXG4gICAgZXhpc3RpbmcudXBkYXRlZF9hdCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICB9IGVsc2Uge1xuICAgIC8vIEFkZCBzdGFyIGJ5IGNyZWF0aW5nIGEgbmV3IGFjY291bnRfcGFja2FnZSByZWNvcmRcbiAgICBjb25zdCBuZXdUaW1lc3RhbXAgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICBjb25zdCBuZXdBY2NvdW50UGFja2FnZSA9IHtcbiAgICAgIGFjY291bnRfcGFja2FnZV9pZDogYGFwXyR7RGF0ZS5ub3coKX1gLFxuICAgICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VJZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBuZXdUaW1lc3RhbXAsXG4gICAgICB1cGRhdGVkX2F0OiBuZXdUaW1lc3RhbXAsXG4gICAgfVxuICAgIGN0eC5kYi5hZGRBY2NvdW50UGFja2FnZShuZXdBY2NvdW50UGFja2FnZSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB0eXBlICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgY29uc3QgcHVibGljTWFwUGFja2FnZSA9IChpbnRlcm5hbFBhY2thZ2U6IHtcbiAgcGFja2FnZV9pZDogc3RyaW5nXG4gIGNyZWF0b3JfYWNjb3VudF9pZDogc3RyaW5nXG4gIG93bmVyX29yZ19pZDogc3RyaW5nXG4gIG93bmVyX2dpdGh1Yl91c2VybmFtZT86IHN0cmluZyB8IG51bGxcbiAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBib29sZWFuXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsXG4gIGxhdGVzdF92ZXJzaW9uPzogc3RyaW5nIHwgbnVsbFxuICBsYXRlc3RfbGljZW5zZT86IHN0cmluZyB8IG51bGxcbiAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZD86IHN0cmluZyB8IG51bGxcbiAgc3Rhcl9jb3VudD86IG51bWJlciB8IG51bGxcbiAgbmFtZTogc3RyaW5nXG4gIHdlYnNpdGU6IHN0cmluZyB8IG51bGxcbiAgdW5zY29wZWRfbmFtZTogc3RyaW5nXG4gIHVwZGF0ZWRfYXQ6IHN0cmluZ1xuICBjcmVhdGVkX2F0OiBzdHJpbmdcbiAgYWlfZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGxcbiAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiBzdHJpbmcgfCBudWxsXG4gIGlzX3NuaXBwZXQ6IGJvb2xlYW5cbiAgaXNfYm9hcmQ6IGJvb2xlYW5cbiAgaXNfcGFja2FnZTogYm9vbGVhblxuICBpc19tb2RlbDogYm9vbGVhblxuICBpc19mb290cHJpbnQ6IGJvb2xlYW5cbiAgaXNfcHJpdmF0ZTogYm9vbGVhbiB8IG51bGxcbiAgaXNfdW5saXN0ZWQ6IGJvb2xlYW4gfCBudWxsXG4gIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfZnNfc2hhOiBzdHJpbmcgfCBudWxsXG4gIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZT86IHN0cmluZyB8IG51bGxcbiAgYWxsb3dfcHJfcHJldmlld3M/OiBib29sZWFuXG4gIGxhdGVzdF9wY2JfcHJldmlld19pbWFnZV91cmw/OiBzdHJpbmcgfCBudWxsXG4gIGxhdGVzdF9zY2hfcHJldmlld19pbWFnZV91cmw/OiBzdHJpbmcgfCBudWxsXG4gIGxhdGVzdF9jYWRfcHJldmlld19pbWFnZV91cmw/OiBzdHJpbmcgfCBudWxsXG4gIG9yZ19vd25lcl90c2NpcmN1aXRfaGFuZGxlPzogc3RyaW5nIHwgbnVsbFxufSk6IHp0LlBhY2thZ2UgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLmludGVybmFsUGFja2FnZSxcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgPz8gbnVsbCxcbiAgICBsYXRlc3RfdmVyc2lvbjogaW50ZXJuYWxQYWNrYWdlLmxhdGVzdF92ZXJzaW9uID8/IG51bGwsXG4gICAgbGljZW5zZTogaW50ZXJuYWxQYWNrYWdlLmxhdGVzdF9saWNlbnNlID8/IG51bGwsXG4gICAgd2Vic2l0ZTogaW50ZXJuYWxQYWNrYWdlLndlYnNpdGUgPz8gbnVsbCxcbiAgICBzdGFyX2NvdW50OiBpbnRlcm5hbFBhY2thZ2Uuc3Rhcl9jb3VudCA/PyAwLFxuICAgIGNyZWF0ZWRfYXQ6IGludGVybmFsUGFja2FnZS5jcmVhdGVkX2F0LFxuICAgIHVwZGF0ZWRfYXQ6IGludGVybmFsUGFja2FnZS51cGRhdGVkX2F0LFxuICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogaW50ZXJuYWxQYWNrYWdlLmdpdGh1Yl9yZXBvX2Z1bGxfbmFtZSA/PyBudWxsLFxuICAgIGlzX3ByaXZhdGU6IGludGVybmFsUGFja2FnZS5pc19wcml2YXRlID8/IGZhbHNlLFxuICAgIGlzX3B1YmxpYzogaW50ZXJuYWxQYWNrYWdlLmlzX3ByaXZhdGUgPT09IHRydWUgPyBmYWxzZSA6IHRydWUsXG4gICAgaXNfdW5saXN0ZWQ6XG4gICAgICBpbnRlcm5hbFBhY2thZ2UuaXNfcHJpdmF0ZSA9PT0gdHJ1ZVxuICAgICAgICA/IHRydWVcbiAgICAgICAgOiAoaW50ZXJuYWxQYWNrYWdlLmlzX3VubGlzdGVkID8/IGZhbHNlKSxcbiAgICBhbGxvd19wcl9wcmV2aWV3czogQm9vbGVhbihpbnRlcm5hbFBhY2thZ2UuYWxsb3dfcHJfcHJldmlld3MpLFxuICAgIGxhdGVzdF9wY2JfcHJldmlld19pbWFnZV91cmw6XG4gICAgICBpbnRlcm5hbFBhY2thZ2UubGF0ZXN0X3BjYl9wcmV2aWV3X2ltYWdlX3VybCA/PyBudWxsLFxuICAgIGxhdGVzdF9zY2hfcHJldmlld19pbWFnZV91cmw6XG4gICAgICBpbnRlcm5hbFBhY2thZ2UubGF0ZXN0X3NjaF9wcmV2aWV3X2ltYWdlX3VybCA/PyBudWxsLFxuICAgIGxhdGVzdF9jYWRfcHJldmlld19pbWFnZV91cmw6XG4gICAgICBpbnRlcm5hbFBhY2thZ2UubGF0ZXN0X2NhZF9wcmV2aWV3X2ltYWdlX3VybCA/PyBudWxsLFxuICAgIG9yZ19vd25lcl90c2NpcmN1aXRfaGFuZGxlOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlLm9yZ19vd25lcl90c2NpcmN1aXRfaGFuZGxlID8/IG51bGwsXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBuYW1lOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5yZWdleChcbiAgICAgICAgL15bQGEtekEtWjAtOS1fXFwvXSskLyxcbiAgICAgICAgXCJQYWNrYWdlIG5hbWUgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBoeXBoZW5zLCB1bmRlcnNjb3JlcywgYW5kIGZvcndhcmQgc2xhc2hlc1wiLFxuICAgICAgKVxuICAgICAgLnRyYW5zZm9ybSgobmFtZSkgPT4gbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpKVxuICAgICAgLm9wdGlvbmFsKCksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgIG9yZ19pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYS5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG5hbWUsIGRlc2NyaXB0aW9uLCBpc19wcml2YXRlLCBpc191bmxpc3RlZCwgb3JnX2lkIH0gPSByZXEuanNvbkJvZHlcbiAgbGV0IG93bmVyX3NlZ21lbnQgPSBuYW1lPy5zcGxpdChcIi9cIilbMF1cbiAgbGV0IHVuc2NvcGVkX25hbWUgPSBuYW1lPy5zcGxpdChcIi9cIilbMV1cblxuICBpZiAobmFtZSAmJiAhdW5zY29wZWRfbmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfcGFja2FnZV9uYW1lXCIsXG4gICAgICBtZXNzYWdlOlxuICAgICAgICBcIlBhY2thZ2UgbmFtZSBtdXN0IGluY2x1ZGUgYW4gYXV0aG9yIHNlZ21lbnQgKGUuZy4gYXV0aG9yL3BhY2thZ2VfbmFtZSlcIixcbiAgICB9KVxuICB9XG4gIGNvbnN0IG9yZyA9IG9yZ19pZCA/IGN0eC5kYi5nZXRPcmcoeyBvcmdfaWQgfSkgOiBudWxsXG4gIGlmIChvcmdfaWQgJiYgIW9yZylcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmdfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZ2FuaXphdGlvbiBub3QgZm91bmRcIixcbiAgICB9KVxuXG4gIGlmICghdW5zY29wZWRfbmFtZSkge1xuICAgIGNvbnN0IHN0YXRlID0gY3R4LmRiLmdldFN0YXRlKClcblxuICAgIGNvbnN0IGNvdW50ID0gb3JnX2lkXG4gICAgICA/IHN0YXRlLnBhY2thZ2VzLmZpbHRlcigocGtnKSA9PiBwa2cub3duZXJfb3JnX2lkID09PSBvcmdfaWQpLmxlbmd0aFxuICAgICAgOiBzdGF0ZS5wYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgKHBrZykgPT4gcGtnLmNyZWF0b3JfYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgICAgKS5sZW5ndGhcblxuICAgIHVuc2NvcGVkX25hbWUgPSBgdW50aXRsZWQtcGFja2FnZS0ke2NvdW50fWBcbiAgfVxuXG4gIGlmICghb3duZXJfc2VnbWVudCkge1xuICAgIG93bmVyX3NlZ21lbnQgPSBvcmdfaWRcbiAgICAgID8gKG9yZyEudHNjaXJjdWl0X2hhbmRsZSA/PyB1bmRlZmluZWQpXG4gICAgICA6IChjdHguYXV0aC50c2NpcmN1aXRfaGFuZGxlID8/IHVuZGVmaW5lZClcbiAgfVxuXG4gIGlmICghb3duZXJfc2VnbWVudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm1pc3Npbmdfb3duZXJfc2VnbWVudFwiLFxuICAgICAgbWVzc2FnZTogXCJPd25lciBzZWdtZW50IGlzIHJlcXVpcmVkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGZpbmFsX25hbWUgPSBuYW1lID8/IGAke293bmVyX3NlZ21lbnR9LyR7dW5zY29wZWRfbmFtZX1gXG5cbiAgY29uc3QgcmVxdWVzdGVkX293bmVyX2xvd2VyID0gb3duZXJfc2VnbWVudC50b0xvd2VyQ2FzZSgpXG4gIGNvbnN0IHBlcnNvbmFsX293bmVyX2xvd2VyID0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLnRvTG93ZXJDYXNlKClcblxuICBsZXQgb3duZXJfb3JnX2lkID0gb3JnPy5vcmdfaWQgPz8gY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkXG5cbiAgaWYgKHJlcXVlc3RlZF9vd25lcl9sb3dlciAhPT0gcGVyc29uYWxfb3duZXJfbG93ZXIpIHtcbiAgICBjb25zdCBzdGF0ZSA9IGN0eC5kYi5nZXRTdGF0ZSgpXG4gICAgY29uc3QgbWVtYmVyT3JnID0gc3RhdGUub3JnQWNjb3VudHNcbiAgICAgIC5maWx0ZXIoKG9hKSA9PiBvYS5hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkKVxuICAgICAgLm1hcCgob2EpID0+IHN0YXRlLm9yZ2FuaXphdGlvbnMuZmluZCgobykgPT4gby5vcmdfaWQgPT09IG9hLm9yZ19pZCkpXG4gICAgICAuZmlsdGVyKChvKTogbyBpcyBOb25OdWxsYWJsZTx0eXBlb2Ygbz4gPT4gbyAhPT0gdW5kZWZpbmVkKVxuICAgICAgLmZpbmQoKG8pID0+IG8udHNjaXJjdWl0X2hhbmRsZT8udG9Mb3dlckNhc2UoKSA9PT0gcmVxdWVzdGVkX293bmVyX2xvd2VyKVxuXG4gICAgaWYgKCFtZW1iZXJPcmcpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgXCJZb3UgbXVzdCBiZSBhIG1lbWJlciBvZiB0aGUgb3JnYW5pemF0aW9uIHRvIGNyZWF0ZSBhIHBhY2thZ2UgdW5kZXIgaXRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgb3duZXJfb3JnX2lkID0gbWVtYmVyT3JnLm9yZ19pZFxuICB9XG5cbiAgY29uc3QgZXhpc3RpbmdQYWNrYWdlID0gY3R4LmRiXG4gICAgLmdldFN0YXRlKClcbiAgICAucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gZmluYWxfbmFtZSlcblxuICBpZiAoZXhpc3RpbmdQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgbWVzc2FnZTogXCJBIHBhY2thZ2Ugd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHNcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbmV3UGFja2FnZSA9IGN0eC5kYi5hZGRQYWNrYWdlKHtcbiAgICBuYW1lOiBmaW5hbF9uYW1lLFxuICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/PyBudWxsLFxuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBvd25lcl9vcmdfaWQsXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbnVsbCxcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2ZzX3NoYTogbnVsbCxcbiAgICBsYXRlc3RfdmVyc2lvbjogbnVsbCxcbiAgICBsaWNlbnNlOiBudWxsLFxuICAgIHdlYnNpdGU6IG51bGwsXG4gICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVuc2NvcGVkX25hbWUsXG4gICAgc3Rhcl9jb3VudDogMCxcbiAgICBhaV9kZXNjcmlwdGlvbjogXCJwbGFjZWhvbGRlciBhaSBkZXNjcmlwdGlvblwiLFxuICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgPz8gZmFsc2UsXG4gICAgaXNfcHVibGljOiBpc19wcml2YXRlID09PSB0cnVlID8gZmFsc2UgOiB0cnVlLFxuICAgIGlzX3VubGlzdGVkOiBpc19wcml2YXRlID09PSB0cnVlID8gdHJ1ZSA6IChpc191bmxpc3RlZCA/PyBmYWxzZSksXG4gICAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiBcInBsYWNlaG9sZGVyIGFpIHVzYWdlIGluc3RydWN0aW9uc1wiLFxuICAgIGRlZmF1bHRfdmlldzogXCJmaWxlc1wiLFxuICB9KVxuXG4gIGlmICghbmV3UGFja2FnZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgcGFja2FnZVwiKVxuICB9XG4gIHJldHVybiBjdHguanNvbih7XG4gICAgcGFja2FnZTogcHVibGljTWFwUGFja2FnZSh7XG4gICAgICAuLi5uZXdQYWNrYWdlLFxuICAgICAgb3JnX293bmVyX3RzY2lyY3VpdF9oYW5kbGU6IG9yZz8udHNjaXJjdWl0X2hhbmRsZSA/PyBudWxsLFxuICAgIH0pLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBwYWNrYWdlSW5kZXggPSBjdHguZGIucGFja2FnZXMuZmluZEluZGV4KFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQsXG4gIClcblxuICBpZiAocGFja2FnZUluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlc1twYWNrYWdlSW5kZXhdXG5cbiAgY29uc3QgaGFzUGVybWlzc2lvbiA9IGN0eC5kYlxuICAgIC5nZXRTdGF0ZSgpXG4gICAgLm9yZ0FjY291bnRzLnNvbWUoXG4gICAgICAob2EpID0+XG4gICAgICAgIG9hLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgb2Eub3JnX2lkID09PSBwa2cub3duZXJfb3JnX2lkLFxuICAgIClcbiAgaWYgKCFoYXNQZXJtaXNzaW9uKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICBjdHguZGIucGFja2FnZXMuc3BsaWNlKHBhY2thZ2VJbmRleCwgMSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIC8vIEFjY2VwdCBlaXRoZXIgcGFja2FnZV9pZCBvciBwYWNrYWdlX25hbWUgdG8gZmluZCB0aGUgcGFja2FnZSB0byBmb3JrXG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIC8vIE9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gY3VzdG9taXplIHRoZSBmb3JrZWQgcGFja2FnZVxuICAgICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICAgIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgIH0pXG4gICAgLnJlZmluZShcbiAgICAgIChkYXRhKSA9PlxuICAgICAgICBkYXRhLnBhY2thZ2VfaWQgIT09IHVuZGVmaW5lZCB8fCBkYXRhLnBhY2thZ2VfbmFtZSAhPT0gdW5kZWZpbmVkLFxuICAgICAge1xuICAgICAgICBtZXNzYWdlOiBcIkVpdGhlciBwYWNrYWdlX2lkIG9yIHBhY2thZ2VfbmFtZSBtdXN0IGJlIHByb3ZpZGVkXCIsXG4gICAgICB9LFxuICAgIClcbiAgICAudHJhbnNmb3JtKChkYXRhKSA9PiAoe1xuICAgICAgLi4uZGF0YSxcbiAgICAgIC8vIElmIHRoZSBwYWNrYWdlIGlzIHByaXZhdGUsIGl0IHNob3VsZCBiZSB1bmxpc3RlZFxuICAgICAgaXNfdW5saXN0ZWQ6IGRhdGEuaXNfcHJpdmF0ZSA/IHRydWUgOiBkYXRhLmlzX3VubGlzdGVkLFxuICAgIH0pKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUsIGlzX3ByaXZhdGUsIGlzX3VubGlzdGVkIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBGaW5kIHRoZSBwYWNrYWdlIHRvIGZvcmtcbiAgbGV0IHNvdXJjZVBhY2thZ2UgPSBudWxsXG4gIGlmIChwYWNrYWdlX2lkKSB7XG4gICAgc291cmNlUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkKVxuICB9IGVsc2UgaWYgKHBhY2thZ2VfbmFtZSkge1xuICAgIHNvdXJjZVBhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuICB9XG5cbiAgaWYgKCFzb3VyY2VQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIHBhY2thZ2UgdG8gZm9yayB3YXMgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChzb3VyY2VQYWNrYWdlLmNyZWF0b3JfYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImNhbm5vdF9mb3JrX293bl9wYWNrYWdlXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBjYW5ub3QgZm9yayB5b3VyIG93biBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGZvcmsgYWxyZWFkeSBleGlzdHMgKHVzZXIgYWxyZWFkeSBoYXMgYSBwYWNrYWdlIHdpdGggdGhlIHNhbWUgbmFtZSlcbiAgY29uc3QgZm9ya05hbWUgPSBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7c291cmNlUGFja2FnZS51bnNjb3BlZF9uYW1lfWBcbiAgY29uc3QgZXhpc3RpbmdGb3JrID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHBrZykgPT5cbiAgICAgIHBrZy5jcmVhdG9yX2FjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgcGtnLm5hbWUgPT09IGZvcmtOYW1lLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nRm9yaykge1xuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBwYWNrYWdlOiBwdWJsaWNNYXBQYWNrYWdlKGV4aXN0aW5nRm9yayksXG4gICAgfSlcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIGxhdGVzdCByZWxlYXNlIG9mIHRoZSBzb3VyY2UgcGFja2FnZVxuICBjb25zdCBzb3VyY2VQYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocmVsZWFzZSkgPT5cbiAgICAgIHJlbGVhc2UucGFja2FnZV9pZCA9PT0gc291cmNlUGFja2FnZS5wYWNrYWdlX2lkICYmXG4gICAgICByZWxlYXNlLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgKVxuXG4gIGlmICghc291cmNlUGFja2FnZVJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzb3VyY2VfcGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJUaGUgc291cmNlIHBhY2thZ2UgZG9lcyBub3QgaGF2ZSBhbnkgcmVsZWFzZXMgdG8gZm9ya1wiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgdGhlIGZpbGVzIGZyb20gdGhlIHNvdXJjZSBwYWNrYWdlIHJlbGVhc2VcbiAgY29uc3Qgc291cmNlRmlsZXMgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAoZmlsZSkgPT5cbiAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBzb3VyY2VQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcblxuICBpZiAoc291cmNlRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic291cmNlX3BhY2thZ2VfZmlsZXNfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlRoZSBzb3VyY2UgcGFja2FnZSByZWxlYXNlIGRvZXMgbm90IGhhdmUgYW55IGZpbGVzIHRvIGZvcmtcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ3JlYXRlIHRoZSBmb3JrZWQgcGFja2FnZVxuICBjb25zdCBmb3JrZWRQYWNrYWdlID0gY3R4LmRiLmFkZFBhY2thZ2Uoe1xuICAgIG5hbWU6IGZvcmtOYW1lLFxuICAgIGRlc2NyaXB0aW9uOiBzb3VyY2VQYWNrYWdlLmRlc2NyaXB0aW9uLFxuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBvd25lcl9vcmdfaWQ6IGN0eC5hdXRoLnBlcnNvbmFsX29yZ19pZCxcbiAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBudWxsLFxuICAgIGxhdGVzdF92ZXJzaW9uOiBudWxsLFxuICAgIGxpY2Vuc2U6IG51bGwsXG4gICAgd2Vic2l0ZTogbnVsbCxcbiAgICBpc19zb3VyY2VfZnJvbV9naXRodWI6IGZhbHNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdW5zY29wZWRfbmFtZTogc291cmNlUGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgIHN0YXJfY291bnQ6IDAsXG4gICAgYWlfZGVzY3JpcHRpb246IHNvdXJjZVBhY2thZ2UuYWlfZGVzY3JpcHRpb24gfHwgXCJmb3JrZWQgcGFja2FnZVwiLFxuICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUsXG4gICAgaXNfcHVibGljOiAhaXNfcHJpdmF0ZSxcbiAgICBpc191bmxpc3RlZCxcbiAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwiZm9ya2VkIHBhY2thZ2UgdXNhZ2VcIixcbiAgICBpc19ib2FyZDogQm9vbGVhbihzb3VyY2VQYWNrYWdlLmlzX2JvYXJkKSxcbiAgICBpc19wYWNrYWdlOiB0cnVlLFxuICAgIGlzX21vZGVsOiBCb29sZWFuKHNvdXJjZVBhY2thZ2UuaXNfbW9kZWwpLFxuICAgIGlzX2Zvb3RwcmludDogQm9vbGVhbihzb3VyY2VQYWNrYWdlLmlzX2Zvb3RwcmludCksXG4gICAgaXNfc25pcHBldDogQm9vbGVhbihzb3VyY2VQYWNrYWdlLmlzX3NuaXBwZXQpLFxuICB9KVxuXG4gIGlmICghZm9ya2VkUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZhaWxlZF90b19jcmVhdGVfZm9ya2VkX3BhY2thZ2VcIixcbiAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGNyZWF0ZSBmb3JrZWQgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDcmVhdGUgYSBuZXcgcGFja2FnZSByZWxlYXNlIGZvciB0aGUgZm9ya2VkIHBhY2thZ2VcbiAgY29uc3QgZm9ya2VkUGFja2FnZVJlbGVhc2UgPSBjdHguZGIuYWRkUGFja2FnZVJlbGVhc2Uoe1xuICAgIHBhY2thZ2VfaWQ6IGZvcmtlZFBhY2thZ2UucGFja2FnZV9pZCxcbiAgICB2ZXJzaW9uOiBzb3VyY2VQYWNrYWdlUmVsZWFzZS52ZXJzaW9uLFxuICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBjb21taXRfc2hhOiBudWxsLFxuICAgIGxpY2Vuc2U6IHNvdXJjZVBhY2thZ2VSZWxlYXNlLmxpY2Vuc2UgfHwgbnVsbCxcbiAgICAvLyBTZXR0aW5nIHRoZSB0cmFuc3BpbGVkIGFzIHRydWUgb24gY3JlYXRpb25cbiAgICBoYXNfdHJhbnNwaWxlZDogdHJ1ZSxcbiAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOiBudWxsLFxuICB9KVxuXG4gIC8vIFVwZGF0ZSB0aGUgZm9ya2VkIHBhY2thZ2Ugd2l0aCByZWxlYXNlIGluZm9cbiAgZm9ya2VkUGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID1cbiAgICBmb3JrZWRQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgZm9ya2VkUGFja2FnZS5sYXRlc3RfdmVyc2lvbiA9IGZvcmtlZFBhY2thZ2VSZWxlYXNlLnZlcnNpb24gfHwgbnVsbFxuXG4gIC8vIENvcHkgYWxsIGZpbGVzIGZyb20gdGhlIHNvdXJjZSBwYWNrYWdlIHJlbGVhc2UgdG8gdGhlIGZvcmtlZCBwYWNrYWdlIHJlbGVhc2VcbiAgZm9yIChjb25zdCBzb3VyY2VGaWxlIG9mIHNvdXJjZUZpbGVzKSB7XG4gICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogZm9ya2VkUGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgZmlsZV9wYXRoOiBzb3VyY2VGaWxlLmZpbGVfcGF0aCxcbiAgICAgIGNvbnRlbnRfdGV4dDogc291cmNlRmlsZS5jb250ZW50X3RleHQsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgcGFja2FnZTogcHVibGljTWFwUGFja2FnZShmb3JrZWRQYWNrYWdlKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uQm9keTogei5hbnkoKS5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYVxuICAgICAgLmV4dGVuZCh7XG4gICAgICAgIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICAgICAgICB1c2VyX3Blcm1pc3Npb25zOiB6XG4gICAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgICBjYW5fbWFuYWdlX3BhY2thZ2VzOiB6LmJvb2xlYW4oKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5vcHRpb25hbCgpLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIG5hbWUgfSA9IHJlcS5jb21tb25QYXJhbXNcbiAgY29uc3QgYXV0aCA9IFwiYXV0aFwiIGluIGN0eCAmJiBjdHguYXV0aCA/IGN0eC5hdXRoIDogbnVsbFxuXG4gIGNvbnN0IGZvdW5kUGFja2FnZSA9XG4gICAgKHBhY2thZ2VfaWQgJiYgY3R4LmRiLmdldFBhY2thZ2VCeUlkKHBhY2thZ2VfaWQpKSB8fFxuICAgIGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpXG5cbiAgaWYgKCFmb3VuZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KHJlcS5jb21tb25QYXJhbXMpfSlgLFxuICAgIH0pXG4gIH1cblxuICBpZiAoXG4gICAgZm91bmRQYWNrYWdlLmlzX3ByaXZhdGUgJiZcbiAgICBhdXRoPy5naXRodWJfdXNlcm5hbWUgIT09IGZvdW5kUGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWVcbiAgKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IGBQYWNrYWdlIG5vdCBmb3VuZCAoc2VhcmNoZWQgdXNpbmcgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgcmVxLmNvbW1vblBhcmFtcyxcbiAgICAgICl9KWAsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG93bmVyT3JnID0gY3R4LmRiLmdldE9yZyh7IG9yZ19pZDogZm91bmRQYWNrYWdlLm93bmVyX29yZ19pZCB9KVxuXG4gIGNvbnN0IGNhbk1hbmFnZVBhY2thZ2UgPVxuICAgIGF1dGggJiZcbiAgICBjdHguZGJcbiAgICAgIC5nZXRTdGF0ZSgpXG4gICAgICAub3JnQWNjb3VudHMuc29tZShcbiAgICAgICAgKG9yZ19hY2NvdW50KSA9PlxuICAgICAgICAgIG9yZ19hY2NvdW50LmFjY291bnRfaWQgPT09IGF1dGguYWNjb3VudF9pZCAmJlxuICAgICAgICAgIG9yZ19hY2NvdW50Lm9yZ19pZCA9PT0gZm91bmRQYWNrYWdlLm93bmVyX29yZ19pZCxcbiAgICAgIClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2U6IHtcbiAgICAgIC4uLnB1YmxpY01hcFBhY2thZ2UoZm91bmRQYWNrYWdlKSxcbiAgICAgIGlzX3N0YXJyZWQ6IGF1dGhcbiAgICAgICAgPyBjdHguZGIuaGFzU3RhcnJlZChhdXRoLmFjY291bnRfaWQsIGZvdW5kUGFja2FnZS5wYWNrYWdlX2lkKVxuICAgICAgICA6IGZhbHNlLFxuICAgICAgb3JnX293bmVyX3RzY2lyY3VpdF9oYW5kbGU6IG93bmVyT3JnPy50c2NpcmN1aXRfaGFuZGxlID8/IG51bGwsXG4gICAgICAuLi4oYXV0aFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHVzZXJfcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICAgICAgY2FuX21hbmFnZV9wYWNrYWdlczogY2FuTWFuYWdlUGFja2FnZSA/PyBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICA6IHt9KSxcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBBbnlDaXJjdWl0RWxlbWVudCB9IGZyb20gXCJjaXJjdWl0LWpzb25cIlxuaW1wb3J0IHtcbiAgY29udmVydENpcmN1aXRKc29uVG9Bc3NlbWJseVN2ZyxcbiAgY29udmVydENpcmN1aXRKc29uVG9QY2JTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnLFxufSBmcm9tIFwiY2lyY3VpdC10by1zdmdcIlxuaW1wb3J0IHsgY29udmVydENpcmN1aXRKc29uVG9TaW1wbGUzZFN2ZyB9IGZyb20gXCJjaXJjdWl0LWpzb24tdG8tc2ltcGxlLTNkXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyByZW5kZXJBc3luYyB9IGZyb20gXCJAcmVzdmcvcmVzdmctanNcIlxuXG4vLyBEZWZpbmUgdGhlIHZpZXcgdHlwZXMgYW5kIGV4dGVuc2lvbnNcbmNvbnN0IFZJRVdfVFlQRVMgPSBbXCJzY2hlbWF0aWNcIiwgXCJwY2JcIiwgXCJhc3NlbWJseVwiLCBcIjNkXCJdIGFzIGNvbnN0XG5jb25zdCBFWFRFTlNJT05TID0gW1wic3ZnXCIsIFwicG5nXCJdIGFzIGNvbnN0XG5cbi8vIENyZWF0ZSBhIHJlZ2V4IHBhdHRlcm4gZm9yIHRoZSB2aWV3IGZvcm1hdCB0aGF0IGluY2x1ZGVzIG9wdGlvbmFsIHdpZHRoIHN1ZmZpeFxuY29uc3Qgdmlld0Zvcm1hdFBhdHRlcm4gPSBuZXcgUmVnRXhwKFxuICBgXigke1ZJRVdfVFlQRVMuam9pbihcInxcIil9KS0/KFxcXFxkK3cpP1xcXFwuKCR7RVhURU5TSU9OUy5qb2luKFwifFwiKX0pJGAsXG4pXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICByb3V0ZVBhcmFtczogei5vYmplY3Qoe1xuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLFxuICAgIHZpZXdfZm9ybWF0OiB6LnN0cmluZygpLnJlZ2V4KHZpZXdGb3JtYXRQYXR0ZXJuLCB7XG4gICAgICBtZXNzYWdlOiBgSW52YWxpZCB2aWV3IGZvcm1hdC4gTXVzdCBiZSBvbmUgb2Y6ICR7VklFV19UWVBFUy5qb2luKFwiLCBcIil9IHdpdGggb3B0aW9uYWwgd2lkdGggc3VmZml4IChlLmcuIC04MDB3KS4ke0VYVEVOU0lPTlMuam9pbihcIiBvciBcIil9YCxcbiAgICB9KSxcbiAgfSksXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgZnNfc2hhOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICByYXdSZXNwb25zZTogdHJ1ZSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG93bmVyX2dpdGh1Yl91c2VybmFtZSwgdW5zY29wZWRfbmFtZSwgdmlld19mb3JtYXQgfSA9IHJlcS5yb3V0ZVBhcmFtc1xuICBjb25zdCB7IGZzX3NoYSB9ID0gcmVxLnF1ZXJ5XG5cbiAgLy8gUGFyc2UgdGhlIHZpZXcgZm9ybWF0XG4gIGNvbnN0IFtvdXRwdXRUeXBlLCBmb3JtYXRdID0gdmlld19mb3JtYXQuc3BsaXQoXCIuXCIpXG5cbiAgLy8gR2V0IHRoZSBwYWNrYWdlIGJ5IG93bmVyIGhhbmRsZSBhbmQgdW5zY29wZWQgbmFtZVxuICBjb25zdCBvd25lck9yZyA9IGN0eC5kYi5vcmdhbml6YXRpb25zLmZpbmQoXG4gICAgKG8pID0+XG4gICAgICBvLnRzY2lyY3VpdF9oYW5kbGU/LnRvTG93ZXJDYXNlKCkgPT09IG93bmVyX2dpdGh1Yl91c2VybmFtZS50b0xvd2VyQ2FzZSgpLFxuICApXG4gIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChwKSA9PlxuICAgICAgcC5vd25lcl9vcmdfaWQgPT09IG93bmVyT3JnPy5vcmdfaWQgJiYgcC51bnNjb3BlZF9uYW1lID09PSB1bnNjb3BlZF9uYW1lLFxuICApXG5cbiAgLy8gSWYgcGFja2FnZSBpcyBub3QgZm91bmQsIHJldHVybiA0MDRcbiAgaWYgKCFwa2cpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZSBmb3IgdGhlIGdpdmVuIGhhc2ggdmFsdWVcbiAgY29uc3QgcGtnX3JlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci5mc19zaGEgPT09IGZzX3NoYSxcbiAgKVxuXG4gIGlmICghcGtnX3JlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IHRoZSBjaXJjdWl0IEpTT04gZnJvbSB0aGUgcGFja2FnZSBmaWxlc1xuICBjb25zdCBjaXJjdWl0X2pzb25fZmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAocGYpID0+XG4gICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBrZ19yZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgKHBmLmZpbGVfcGF0aCA9PT0gXCJjaXJjdWl0Lmpzb25cIiB8fFxuICAgICAgICBwZi5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIpLFxuICApXG5cbiAgaWYgKCFjaXJjdWl0X2pzb25fZmlsZT8uY29udGVudF90ZXh0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiY2lyY3VpdF9qc29uX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJDaXJjdWl0IEpTT04gbm90IGZvdW5kIGZvciBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNpcmN1aXRfanNvbiA9IEpTT04ucGFyc2UoY2lyY3VpdF9qc29uX2ZpbGUuY29udGVudF90ZXh0KVxuXG4gIC8vIENvbnZlcnQgY2lyY3VpdCBqc29uIHRvIHN2Z1xuICBsZXQgc3ZnID0gXCJcIlxuICBpZiAob3V0cHV0VHlwZSA9PT0gXCJzY2hlbWF0aWNcIikge1xuICAgIHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnKGNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdKVxuICB9IGVsc2UgaWYgKG91dHB1dFR5cGUgPT09IFwicGNiXCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyhjaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSlcbiAgfSBlbHNlIGlmIChvdXRwdXRUeXBlID09PSBcImFzc2VtYmx5XCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub0Fzc2VtYmx5U3ZnKGNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdKVxuICB9IGVsc2UgaWYgKG91dHB1dFR5cGUgPT09IFwiM2RcIikge1xuICAgIHN2ZyA9IGF3YWl0IGNvbnZlcnRDaXJjdWl0SnNvblRvU2ltcGxlM2RTdmcoY2lyY3VpdF9qc29uLCB7XG4gICAgICBiYWNrZ3JvdW5kOiB7XG4gICAgICAgIGNvbG9yOiBcIiNmZmZcIixcbiAgICAgICAgb3BhY2l0eTogMC4wLFxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRab29tTXVsdGlwbGllcjogMS4xLFxuICAgIH0pXG4gIH1cbiAgaWYgKGZvcm1hdCA9PT0gXCJzdmdcIikge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2Uoc3ZnLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiaW1hZ2Uvc3ZnK3htbFwiLFxuICAgICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJwdWJsaWMsIG1heC1hZ2U9ODY0MDAsIHMtbWF4YWdlPTg2NDAwXCIsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwbmdCdWZmZXIgPSBhd2FpdCByZW5kZXJBc3luYyhzdmcpXG4gIHJldHVybiBuZXcgUmVzcG9uc2UocG5nQnVmZmVyLmFzUG5nKCkuYnVmZmVyIGFzIEFycmF5QnVmZmVyLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJpbWFnZS9wbmdcIixcbiAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT04NjQwMCwgcy1tYXhhZ2U9ODY0MDBcIixcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIGxpbWl0OiB6LnN0cmluZygpLnJlZ2V4KC9eXFxkKyQvKS50cmFuc2Zvcm0oTnVtYmVyKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZXM6IHouYXJyYXkocGFja2FnZVNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IGxpbWl0ID0gcmVxLnF1ZXJ5LmxpbWl0IHx8IDUwXG5cbiAgLy8gR2V0IGFsbCBwYWNrYWdlcyB0aGF0IGFyZSBub3Qgc25pcHBldHNcbiAgY29uc3QgcGFja2FnZXMgPSBjdHguZGIucGFja2FnZXNcbiAgICAuZmlsdGVyKChwa2cpID0+ICFwa2cuaXNfc25pcHBldClcbiAgICAuc29ydChcbiAgICAgIChhLCBiKSA9PlxuICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgIClcbiAgICAuc2xpY2UoMCwgbGltaXQpXG4gICAgLm1hcCgocGtnKSA9PiBwdWJsaWNNYXBQYWNrYWdlKHBrZykpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgcGFja2FnZXMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7fSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlczogei5hcnJheShwYWNrYWdlU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgLy8gR2V0IGFsbCBwYWNrYWdlcyBhbmQgdGhlaXIgc3RhciBjb3VudHNcbiAgY29uc3QgcGFja2FnZXNXaXRoU3RhcnMgPSBjdHguZGIucGFja2FnZXMubWFwKChwa2cpID0+IHtcbiAgICBjb25zdCBzdGFyQ291bnQgPSBjdHguZGIuYWNjb3VudFBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgYXAuaXNfc3RhcnJlZCxcbiAgICApLmxlbmd0aFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBrZyxcbiAgICAgIHN0YXJfY291bnQ6IHN0YXJDb3VudCxcbiAgICB9XG4gIH0pXG5cbiAgLy8gRmlsdGVyIG91dCBwYWNrYWdlcyB3aXRoIG5vIHN0YXJzIGFuZCBzb3J0IGJ5IHN0YXIgY291bnRcbiAgY29uc3QgdHJlbmRpbmdQYWNrYWdlcyA9IGN0eC5kYi5wYWNrYWdlc1xuICAgIC5maWx0ZXIoKHApID0+IHAuc3Rhcl9jb3VudCA+IDApXG4gICAgLnNvcnQoKGEsIGIpID0+IGIuc3Rhcl9jb3VudCAtIGEuc3Rhcl9jb3VudClcbiAgICAuc2xpY2UoMCwgNTApXG5cbiAgLy8gUmFuZG9taXplIHRoZSBvcmRlciBvZiB0aGUgcGFja2FnZXMsIHRoZW4gcGljayB0aGUgZmlyc3QgMTBcbiAgY29uc3QgcmFuZG9taXplZFBhY2thZ2VzID0gdHJlbmRpbmdQYWNrYWdlcy5zb3J0KCgpID0+IE1hdGgucmFuZG9tKCkgLSAwLjUpXG4gIGNvbnN0IHNlbGVjdGVkUGFja2FnZXMgPSByYW5kb21pemVkUGFja2FnZXMuc2xpY2UoMCwgMTApXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlczogc2VsZWN0ZWRQYWNrYWdlcy5tYXAoKHApID0+ICh7XG4gICAgICAuLi5wLFxuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogcC5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IG51bGwsXG4gICAgfSkpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvd25lcl90c2NpcmN1aXRfaGFuZGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfd3JpdGFibGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgb3duZXJfb3JnX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGxpbWl0OiB6Lm51bWJlcigpLmludCgpLm1pbigxKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VzOiB6LmFycmF5KFxuICAgICAgcGFja2FnZVNjaGVtYS5leHRlbmQoe1xuICAgICAgICBzdGFycmVkX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgICAgIHVzZXJfcGVybWlzc2lvbnM6IHpcbiAgICAgICAgICAub2JqZWN0KHtcbiAgICAgICAgICAgIGNhbl9tYW5hZ2VfcGFja2FnZXM6IHouYm9vbGVhbigpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgICB9KSxcbiAgICApLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgY3JlYXRvcl9hY2NvdW50X2lkLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZSxcbiAgICBvd25lcl90c2NpcmN1aXRfaGFuZGxlLFxuICAgIG5hbWUsXG4gICAgaXNfd3JpdGFibGUsXG4gICAgb3duZXJfb3JnX2lkLFxuICAgIGxpbWl0LFxuICB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIGNvbnN0IGF1dGggPSBcImF1dGhcIiBpbiBjdHggJiYgY3R4LmF1dGggPyBjdHguYXV0aCA6IG51bGxcblxuICBpZiAoXG4gICAgIWF1dGggJiZcbiAgICAhaXNfd3JpdGFibGUgJiZcbiAgICAhY3JlYXRvcl9hY2NvdW50X2lkICYmXG4gICAgIW93bmVyX2dpdGh1Yl91c2VybmFtZSAmJlxuICAgICFvd25lcl90c2NpcmN1aXRfaGFuZGxlICYmXG4gICAgIW93bmVyX29yZ19pZFxuICApIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX3JlcXVlc3RcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IG11c3QgcHJvdmlkZSBzb21lIGZpbHRlcmluZyBwYXJhbWV0ZXJzIG9yIGJlIGxvZ2dlZCBpblwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBIZWxwZXIgdG8gY2hlY2sgaWYgdXNlciBjYW4gbWFuYWdlIGEgcGFja2FnZVxuICBjb25zdCBjYW5NYW5hZ2VQYWNrYWdlID0gKHBrZzogYW55KSA9PiB7XG4gICAgaWYgKCFhdXRoKSByZXR1cm4gZmFsc2VcbiAgICAvLyBDaGVjayBpZiB1c2VyIGlzIGEgbWVtYmVyIG9mIHRoZSBwYWNrYWdlJ3Mgb3duZXIgb3JnXG4gICAgY29uc3Qgc3RhdGUgPSBjdHguZGIuZ2V0U3RhdGUoKVxuICAgIHJldHVybiBzdGF0ZS5vcmdBY2NvdW50cy5zb21lKFxuICAgICAgKG9hKSA9PlxuICAgICAgICBvYS5hY2NvdW50X2lkID09PSBhdXRoLmFjY291bnRfaWQgJiYgb2Eub3JnX2lkID09PSBwa2cub3duZXJfb3JnX2lkLFxuICAgIClcbiAgfVxuXG4gIGxldCBwYWNrYWdlcyA9IGN0eC5kYi5wYWNrYWdlc1xuXG4gIC8vIEFwcGx5IGZpbHRlcnNcbiAgaWYgKGNyZWF0b3JfYWNjb3VudF9pZCkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHApID0+IHAuY3JlYXRvcl9hY2NvdW50X2lkID09PSBjcmVhdG9yX2FjY291bnRfaWQsXG4gICAgKVxuICB9XG4gIGlmIChvd25lcl9naXRodWJfdXNlcm5hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwKSA9PiBwLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gb3duZXJfZ2l0aHViX3VzZXJuYW1lLFxuICAgIClcbiAgfVxuICBpZiAob3duZXJfdHNjaXJjdWl0X2hhbmRsZSkge1xuICAgIGNvbnN0IG9yZyA9IGN0eC5kYi5vcmdhbml6YXRpb25zLmZpbmQoXG4gICAgICAobykgPT4gby50c2NpcmN1aXRfaGFuZGxlID09PSBvd25lcl90c2NpcmN1aXRfaGFuZGxlLFxuICAgIClcbiAgICBpZiAob3JnKSB7XG4gICAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcigocCkgPT4gcC5vd25lcl9vcmdfaWQgPT09IG9yZy5vcmdfaWQpXG4gICAgfVxuICB9XG4gIGlmIChuYW1lKSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoKHApID0+IHAubmFtZSA9PT0gbmFtZSlcbiAgfVxuICBpZiAob3duZXJfb3JnX2lkKSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoKHApID0+IHAub3duZXJfb3JnX2lkID09PSBvd25lcl9vcmdfaWQpXG4gIH1cbiAgaWYgKGxpbWl0KSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5zbGljZSgwLCBsaW1pdClcbiAgfVxuICBpZiAoaXNfd3JpdGFibGUgJiYgYXV0aCkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKGNhbk1hbmFnZVBhY2thZ2UpXG4gIH1cblxuICAvLyBHZXQgc3RhciB0aW1lc3RhbXBzIGZvciBhdXRoZW50aWNhdGVkIHVzZXJcbiAgY29uc3Qgc3RhclRpbWVzdGFtcHMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpXG4gIGlmIChhdXRoKSB7XG4gICAgY3R4LmRiLmFjY291bnRQYWNrYWdlc1xuICAgICAgLmZpbHRlcigoYXApID0+IGFwLmFjY291bnRfaWQgPT09IGF1dGguYWNjb3VudF9pZCAmJiBhcC5pc19zdGFycmVkKVxuICAgICAgLmZvckVhY2goKGFwKSA9PiB7XG4gICAgICAgIHN0YXJUaW1lc3RhbXBzLnNldChhcC5wYWNrYWdlX2lkLCBhcC51cGRhdGVkX2F0KVxuICAgICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZXM6IHBhY2thZ2VzLm1hcCgocCkgPT4gKHtcbiAgICAgIC4uLnAsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBwLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgbnVsbCxcbiAgICAgIHN0YXJyZWRfYXQ6IHN0YXJUaW1lc3RhbXBzLmdldChwLnBhY2thZ2VfaWQpIHx8IG51bGwsXG4gICAgICAuLi4oYXV0aFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHVzZXJfcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICAgICAgY2FuX21hbmFnZV9wYWNrYWdlczogY2FuTWFuYWdlUGFja2FnZShwKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICA6IHt9KSxcbiAgICB9KSksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3Ioei5vYmplY3QoeyBuYW1lOiB6LnN0cmluZygpIH0pKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQgcGFja2FnZUlkOiBzdHJpbmdcblxuICAvLyBHZXQgcGFja2FnZSBJRCBlaXRoZXIgZGlyZWN0bHkgb3IgYnkgbmFtZVxuICBpZiAoXCJwYWNrYWdlX2lkXCIgaW4gcmVxLmpzb25Cb2R5KSB7XG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIHBhY2thZ2VJZCA9IGJvZHkucGFja2FnZV9pZFxuICB9IGVsc2Uge1xuICAgIC8vIElmIG5hbWUgaXMgcHJvdmlkZWQsIGxvb2sgdXAgdGhlIHBhY2thZ2VfaWRcbiAgICBjb25zdCBib2R5ID0gcmVxLmpzb25Cb2R5XG4gICAgY29uc3QgcGFja2FnZURhdGEgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gYm9keS5uYW1lKVxuXG4gICAgaWYgKCFwYWNrYWdlRGF0YSkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHBhY2thZ2VJZCA9IHBhY2thZ2VEYXRhLnBhY2thZ2VfaWRcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHBhY2thZ2UgZXhpc3RzIChleHRyYSBjaGVjayBmb3IgSUQtYmFzZWQgbG9va3VwKVxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpXG5cbiAgaWYgKCFwa2cpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBhbHJlYWR5IHN0YXJyZWRcbiAgY29uc3QgZXhpc3RpbmcgPSBjdHguZGIuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgKGFwKSA9PlxuICAgICAgYXAuYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQsXG4gIClcblxuICBpZiAoIWV4aXN0aW5nPy5pc19zdGFycmVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm90X3N0YXJyZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgbm90IHN0YXJyZWQgdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFVwZGF0ZSB0aGUgcGFja2FnZSdzIHN0YXIgY291bnRcbiAgcGtnLnN0YXJfY291bnQgPSBNYXRoLm1heCgwLCAocGtnLnN0YXJfY291bnQgfHwgMCkgLSAxKVxuXG4gIC8vIFJlbW92ZSBzdGFyIGJ5IHVwZGF0aW5nIGlzX3N0YXJyZWQgdG8gZmFsc2VcbiAgZXhpc3RpbmcuaXNfc3RhcnJlZCA9IGZhbHNlXG4gIGV4aXN0aW5nLnVwZGF0ZWRfYXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHF1ZXJ5OiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VzOiB6LmFycmF5KHBhY2thZ2VTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHF1ZXJ5IH0gPSByZXEuanNvbkJvZHlcbiAgY29uc3QgYXV0aCA9IFwiYXV0aFwiIGluIGN0eCAmJiBjdHguYXV0aCA/IGN0eC5hdXRoIDogbnVsbFxuICBjb25zdCBwYWNrYWdlcyA9IGN0eC5kYi5zZWFyY2hQYWNrYWdlcyhxdWVyeSwgYXV0aD8uYWNjb3VudF9pZClcbiAgcmV0dXJuIGN0eC5qc29uKHsgcGFja2FnZXMsIG9rOiB0cnVlIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc3VjY2Vzczogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgcGFja2FnZV9pbmZvID0gY3R4LmRiLmdldFBhY2thZ2VCeUlkKHBhY2thZ2VfaWQpXG4gIGlmICghcGFja2FnZV9pbmZvKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKHBhY2thZ2VfaW5mby5vd25lcl9naXRodWJfdXNlcm5hbWUgIT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInVuYXV0aG9yaXplZFwiLFxuICAgICAgbWVzc2FnZTogXCJPbmx5IHRoZSBwYWNrYWdlIG93bmVyIGNhbiB1cGRhdGUgQUkgZGVzY3JpcHRpb25cIixcbiAgICB9KVxuICB9XG5cbiAgY3R4LmRiLnVwZGF0ZVBhY2thZ2UocGFja2FnZV9pZCwge1xuICAgIGFpX2Rlc2NyaXB0aW9uOiBcIk5ldyBhaSBkZXNjcmlwdGlvblwiLFxuICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczogXCJOZXcgYWkgdXNhZ2UgaW5zdHJ1Y3Rpb25zXCIsXG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgc3VjY2VzczogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCIuLi8uLi8uLi9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgICAgIG5hbWU6IHpcbiAgICAgICAgLnN0cmluZygpXG4gICAgICAgIC5yZWdleChcbiAgICAgICAgICAvXltAYS16QS1aMC05LV9cXC9dKyQvLFxuICAgICAgICAgIFwiUGFja2FnZSBuYW1lIGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycywgbnVtYmVycywgaHlwaGVucywgdW5kZXJzY29yZXMsIGFuZCBmb3J3YXJkIHNsYXNoZXNcIixcbiAgICAgICAgKVxuICAgICAgICAudHJhbnNmb3JtKChuYW1lKSA9PiBuYW1lLnJlcGxhY2UoL15ALywgXCJcIikpXG4gICAgICAgIC5vcHRpb25hbCgpLFxuICAgICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHdlYnNpdGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gICAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgICBkZWZhdWx0X3ZpZXc6IHouZW51bShbXCJmaWxlc1wiLCBcIjNkXCIsIFwicGNiXCIsIFwic2NoZW1hdGljXCJdKS5vcHRpb25hbCgpLFxuICAgICAgYWxsb3dfcHJfcHJldmlld3M6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAudHJhbnNmb3JtKChkYXRhKSA9PiAoe1xuICAgICAgLi4uZGF0YSxcbiAgICAgIGlzX3VubGlzdGVkOiBkYXRhLmlzX3ByaXZhdGUgPyB0cnVlIDogZGF0YS5pc191bmxpc3RlZCxcbiAgICB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlOiBwYWNrYWdlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgcGFja2FnZV9pZCxcbiAgICBuYW1lLFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIHdlYnNpdGUsXG4gICAgaXNfcHJpdmF0ZSxcbiAgICBpc191bmxpc3RlZCxcbiAgICBnaXRodWJfcmVwb19mdWxsX25hbWUsXG4gICAgZGVmYXVsdF92aWV3LFxuICAgIGFsbG93X3ByX3ByZXZpZXdzLFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgcGFja2FnZUluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBleGlzdGluZ1BhY2thZ2UgPSBjdHguZGIucGFja2FnZXNbcGFja2FnZUluZGV4XVxuXG4gIC8vIENoZWNrIGlmIHVzZXIgaGFzIHBlcm1pc3Npb24gdG8gdXBkYXRlIHRoZSBwYWNrYWdlXG4gIGNvbnN0IGhhc1Blcm1pc3Npb24gPSBjdHguZGJcbiAgICAuZ2V0U3RhdGUoKVxuICAgIC5vcmdBY2NvdW50cy5zb21lKFxuICAgICAgKG9hKSA9PlxuICAgICAgICBvYS5hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkICYmXG4gICAgICAgIG9hLm9yZ19pZCA9PT0gZXhpc3RpbmdQYWNrYWdlLm93bmVyX29yZ19pZCxcbiAgICApXG4gIGlmICghaGFzUGVybWlzc2lvbikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgZm9yIGR1cGxpY2F0ZSBwYWNrYWdlIG5hbWUgaWYgbmFtZSBpcyBiZWluZyB1cGRhdGVkXG4gIGlmIChuYW1lKSB7XG4gICAgY29uc3QgbmV3RnVsbE5hbWUgPSBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7bmFtZX1gXG4gICAgY29uc3QgZHVwbGljYXRlUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgICAgKHApID0+IHAubmFtZSA9PT0gbmV3RnVsbE5hbWUgJiYgcC5wYWNrYWdlX2lkICE9PSBwYWNrYWdlX2lkLFxuICAgIClcbiAgICBpZiAoZHVwbGljYXRlUGFja2FnZSkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiQSBwYWNrYWdlIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzXCIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRQYWNrYWdlID0gY3R4LmRiLnVwZGF0ZVBhY2thZ2UocGFja2FnZV9pZCwge1xuICAgIG5hbWU6IG5hbWUgPyBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7bmFtZX1gIDogZXhpc3RpbmdQYWNrYWdlLm5hbWUsXG4gICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uID8/IGV4aXN0aW5nUGFja2FnZS5kZXNjcmlwdGlvbixcbiAgICB1bnNjb3BlZF9uYW1lOiBuYW1lID8/IGV4aXN0aW5nUGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgIHdlYnNpdGU6IHdlYnNpdGUgPz8gZXhpc3RpbmdQYWNrYWdlLndlYnNpdGUsXG4gICAgZ2l0aHViX3JlcG9fZnVsbF9uYW1lOlxuICAgICAgZ2l0aHViX3JlcG9fZnVsbF9uYW1lID09PSBudWxsXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IChnaXRodWJfcmVwb19mdWxsX25hbWUgPz8gZXhpc3RpbmdQYWNrYWdlLmdpdGh1Yl9yZXBvX2Z1bGxfbmFtZSksXG4gICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSA/PyBleGlzdGluZ1BhY2thZ2UuaXNfcHJpdmF0ZSxcbiAgICBpc19wdWJsaWM6XG4gICAgICBpc19wcml2YXRlICE9PSB1bmRlZmluZWQgPyAhaXNfcHJpdmF0ZSA6IGV4aXN0aW5nUGFja2FnZS5pc19wdWJsaWMsXG4gICAgaXNfdW5saXN0ZWQ6IGlzX3VubGlzdGVkID8/IGV4aXN0aW5nUGFja2FnZS5pc191bmxpc3RlZCxcbiAgICBkZWZhdWx0X3ZpZXc6IGRlZmF1bHRfdmlldyA/PyBleGlzdGluZ1BhY2thZ2UuZGVmYXVsdF92aWV3LFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBhbGxvd19wcl9wcmV2aWV3czogYWxsb3dfcHJfcHJldmlld3MgPz8gZXhpc3RpbmdQYWNrYWdlLmFsbG93X3ByX3ByZXZpZXdzLFxuICB9KVxuXG4gIGlmICghdXBkYXRlZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ1cGRhdGVfZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byB1cGRhdGUgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2U6IHVwZGF0ZWRQYWNrYWdlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5jb25zdCBQUk9YWV9IRUFERVJTID0gW1xuICBcIlgtVGFyZ2V0LVVybFwiLFxuICBcIlgtU2VuZGVyLU9yaWdpblwiLFxuICBcIlgtU2VuZGVyLUhvc3RcIixcbiAgXCJYLVNlbmRlci1SZWZlcmVyXCIsXG4gIFwiWC1TZW5kZXItVXNlci1BZ2VudFwiLFxuICBcIlgtU2VuZGVyLUNvb2tpZVwiLFxuXVxuXG5jb25zdCBBTExPV0VEX0RPTUFJTlM6IEFycmF5PHsgZG9tYWluOiBzdHJpbmc7IHJvdXRlcz86IHN0cmluZ1tdIH0+ID0gW1xuICB7IGRvbWFpbjogXCJlYXN5ZWRhLmNvbVwiIH0sXG5dXG5cbmZ1bmN0aW9uIGlzQWxsb3dlZERvbWFpbih1cmw6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IHsgaG9zdG5hbWUsIHBhdGhuYW1lLCBwb3J0IH0gPSBuZXcgVVJMKHVybClcbiAgICBjb25zdCBhbGxvd2VkRG9tYWluID0gQUxMT1dFRF9ET01BSU5TLmZpbmQoXG4gICAgICAoZG9tYWluKSA9PiBkb21haW4uZG9tYWluID09PSBob3N0bmFtZSxcbiAgICApXG5cbiAgICBpZiAoYWxsb3dlZERvbWFpbikge1xuICAgICAgaWYgKFxuICAgICAgICAhYWxsb3dlZERvbWFpbi5yb3V0ZXMgfHxcbiAgICAgICAgYWxsb3dlZERvbWFpbi5yb3V0ZXMuc29tZSgocm91dGUpID0+IHBhdGhuYW1lLnN0YXJ0c1dpdGgocm91dGUpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvc3RuYW1lID09PSBcImxvY2FsaG9zdFwiIHx8IChob3N0bmFtZSA9PT0gXCIxMjcuMC4wLjFcIiAmJiBwb3J0KVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiLCBcIlBVVFwiLCBcIkRFTEVURVwiLCBcIlBBVENIXCIsIFwiSEVBRFwiLCBcIk9QVElPTlNcIl0sXG4gIGpzb25SZXNwb25zZTogei5hbnkoKSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgaWYgKHJlcS5oZWFkZXJzLmdldChcIlgtcHJveGllZFwiKSkge1xuICAgIHJldHVybiBjdHguanNvbihcbiAgICAgIHsgZXJyb3I6IFwiUmVjdXJzaXZlIHByb3h5IGNhbGxzIGFyZSBub3QgYWxsb3dlZFwiIH0sXG4gICAgICB7IHN0YXR1czogNDAzIH0sXG4gICAgKVxuICB9XG5cbiAgY29uc3QgdGFyZ2V0VXJsID0gcmVxLmhlYWRlcnMuZ2V0KFwiWC1UYXJnZXQtVXJsXCIpXG5cbiAgaWYgKCF0YXJnZXRVcmwpIHtcbiAgICByZXR1cm4gY3R4Lmpzb24oXG4gICAgICB7IGVycm9yOiBcIlgtVGFyZ2V0LVVybCBoZWFkZXIgaXMgcmVxdWlyZWRcIiB9LFxuICAgICAgeyBzdGF0dXM6IDQwMCB9LFxuICAgIClcbiAgfVxuXG4gIGlmICghaXNBbGxvd2VkRG9tYWluKHRhcmdldFVybCkpIHtcbiAgICByZXR1cm4gY3R4Lmpzb24oeyBlcnJvcjogXCJEb21haW4gbm90IGFsbG93ZWRcIiB9LCB7IHN0YXR1czogNDAzIH0pXG4gIH1cblxuICBsZXQgYm9keTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGlmIChbXCJQT1NUXCIsIFwiUFVUXCIsIFwiUEFUQ0hcIl0uaW5jbHVkZXMocmVxLm1ldGhvZCkpIHtcbiAgICBib2R5ID0gYXdhaXQgcmVxLmNsb25lKCkudGV4dCgpXG4gIH1cblxuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVxLmhlYWRlcnMpXG5cbiAgY29uc3Qgc2VuZGVyT3JpZ2luID0gcmVxLmhlYWRlcnMuZ2V0KFwiWC1TZW5kZXItT3JpZ2luXCIpXG4gIGlmIChzZW5kZXJPcmlnaW4pIHtcbiAgICBoZWFkZXJzLnNldChcIk9yaWdpblwiLCBzZW5kZXJPcmlnaW4pXG4gIH1cblxuICBjb25zdCBzZW5kZXJIb3N0ID0gcmVxLmhlYWRlcnMuZ2V0KFwiWC1TZW5kZXItSG9zdFwiKVxuICBpZiAoc2VuZGVySG9zdCkge1xuICAgIGNvbnN0IGhvc3RWYWx1ZSA9IHNlbmRlckhvc3QucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC8vLCBcIlwiKVxuICAgIGhlYWRlcnMuc2V0KFwiSG9zdFwiLCBob3N0VmFsdWUpXG4gICAgaGVhZGVycy5zZXQoXCJhdXRob3JpdHlcIiwgaG9zdFZhbHVlKVxuICB9XG5cbiAgY29uc3Qgc2VuZGVyUmVmZXJlciA9IHJlcS5oZWFkZXJzLmdldChcIlgtU2VuZGVyLVJlZmVyZXJcIilcbiAgaWYgKHNlbmRlclJlZmVyZXIpIHtcbiAgICBoZWFkZXJzLnNldChcIlJlZmVyZXJcIiwgc2VuZGVyUmVmZXJlcilcbiAgfVxuXG4gIGNvbnN0IHNlbmRlclVzZXJBZ2VudCA9IHJlcS5oZWFkZXJzLmdldChcIlgtU2VuZGVyLVVzZXItQWdlbnRcIilcbiAgaWYgKHNlbmRlclVzZXJBZ2VudCkge1xuICAgIGhlYWRlcnMuc2V0KFwiVXNlci1BZ2VudFwiLCBzZW5kZXJVc2VyQWdlbnQpXG4gIH1cblxuICBjb25zdCBzZW5kZXJDb29raWUgPSByZXEuaGVhZGVycy5nZXQoXCJYLVNlbmRlci1Db29raWVcIilcbiAgaWYgKHNlbmRlckNvb2tpZSkge1xuICAgIGhlYWRlcnMuc2V0KFwiQ29va2llXCIsIHNlbmRlckNvb2tpZSlcbiAgfVxuXG4gIGZvciAoY29uc3QgaGVhZGVyIG9mIFBST1hZX0hFQURFUlMpIHtcbiAgICBoZWFkZXJzLmRlbGV0ZShoZWFkZXIpXG4gIH1cblxuICBoZWFkZXJzLmRlbGV0ZShcImNvbnRlbnQtZW5jb2RpbmdcIilcbiAgaGVhZGVycy5kZWxldGUoXCJhY2NlcHQtZW5jb2RpbmdcIilcbiAgaGVhZGVycy5zZXQoXCJYLXByb3hpZWRcIiwgXCJ0cnVlXCIpXG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRhcmdldFVybCwge1xuICAgICAgbWV0aG9kOiByZXEubWV0aG9kLFxuICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgIGJvZHk6IFtcIkdFVFwiLCBcIkhFQURcIl0uaW5jbHVkZXMocmVxLm1ldGhvZCkgPyB1bmRlZmluZWQgOiBib2R5LFxuICAgIH0pXG5cbiAgICBjb25zdCByZXNwb25zZUhlYWRlcnMgPSBuZXcgSGVhZGVycyhyZXNwb25zZS5oZWFkZXJzKVxuICAgIHJlc3BvbnNlSGVhZGVycy5kZWxldGUoXCJjb250ZW50LWVuY29kaW5nXCIpXG5cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHJlc3BvbnNlLmJvZHksIHtcbiAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcbiAgICAgIGhlYWRlcnM6IHJlc3BvbnNlSGVhZGVycyxcbiAgICB9KVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJQcm94eSBlcnJvcjpcIiwgZXJyb3IpXG4gICAgcmV0dXJuIGN0eC5qc29uKFxuICAgICAgeyBlcnJvcjogeyBtZXNzYWdlOiBcIkZhaWxlZCB0byBwcm94eSByZXF1ZXN0XCIgfSB9LFxuICAgICAgeyBzdGF0dXM6IDUwMiB9LFxuICAgIClcbiAgfVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIG1ldGhvZHM6IFtcIlBPU1RcIiwgXCJERUxFVEVcIl0sXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzZXNzaW9uX2lkIH0gPSBjdHguYXV0aFxuXG4gIGNvbnN0IGRlbGV0ZWQgPSBjdHguZGIuZGVsZXRlU2Vzc2lvbihzZXNzaW9uX2lkKVxuXG4gIGlmICghZGVsZXRlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNlc3Npb25fbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNlc3Npb24gbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNuaXBwZXRfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIENoZWNrIGlmIHNuaXBwZXQgZXhpc3RzIChhcyBhIHBhY2thZ2UpXG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldF9pZCAmJiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSxcbiAgKVxuXG4gIGlmICghc25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGFscmVhZHkgc3RhcnJlZFxuICBjb25zdCBleGlzdGluZyA9IGN0eC5kYi5hY2NvdW50UGFja2FnZXMuZmluZChcbiAgICAoYXApID0+XG4gICAgICBhcC5hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkICYmIGFwLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRfaWQsXG4gIClcblxuICBpZiAoZXhpc3Rpbmc/LmlzX3N0YXJyZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhbHJlYWR5X3N0YXJyZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgYWxyZWFkeSBzdGFycmVkIHRoaXMgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBzdGFyIGNvdW50XG4gIHNuaXBwZXQuc3Rhcl9jb3VudCA9IChzbmlwcGV0LnN0YXJfY291bnQgfHwgMCkgKyAxXG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgLy8gSWYgcmVjb3JkIGV4aXN0cyBidXQgaXNfc3RhcnJlZCBpcyBmYWxzZSwgdXBkYXRlIHRvIGlzX3N0YXJyZWQ9dHJ1ZVxuICAgIGV4aXN0aW5nLmlzX3N0YXJyZWQgPSB0cnVlXG4gICAgZXhpc3RpbmcudXBkYXRlZF9hdCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICB9IGVsc2Uge1xuICAgIC8vIEFkZCBzdGFyIGJ5IGNyZWF0aW5nIGEgbmV3IGFjY291bnRfcGFja2FnZSByZWNvcmRcbiAgICBjdHguZGIuYWRkQWNjb3VudFBhY2thZ2Uoe1xuICAgICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHNuaXBwZXRfaWQsXG4gICAgICBpc19zdGFycmVkOiB0cnVlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb2RlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc25pcHBldF90eXBlOiB6LmVudW0oW1wiYm9hcmRcIiwgXCJwYWNrYWdlXCIsIFwibW9kZWxcIiwgXCJmb290cHJpbnRcIl0pLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29tcGlsZWRfanM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgICBkdHM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGlzX3B1YmxpYzogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBpc191bmxpc3RlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzbmlwcGV0OiBzbmlwcGV0U2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGxldCB7XG4gICAgdW5zY29wZWRfbmFtZSxcbiAgICBjb2RlID0gXCJcIixcbiAgICBzbmlwcGV0X3R5cGUsXG4gICAgZGVzY3JpcHRpb24gPSBcIlwiLFxuICAgIGNvbXBpbGVkX2pzLFxuICAgIGNpcmN1aXRfanNvbixcbiAgICBkdHMsXG4gICAgaXNfcHJpdmF0ZSxcbiAgICBpc19wdWJsaWMsXG4gICAgaXNfdW5saXN0ZWQsXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpXG4gIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgaWYgKCF1bnNjb3BlZF9uYW1lKSB7XG4gICAgLy8gQ291bnQgc25pcHBldHMgb2YgdGhpcyB0eXBlIGZvciB0aGlzIHVzZXJcbiAgICBjb25zdCB1c2VyU25pcHBldHMgPSBjdHguZGIucGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHApID0+XG4gICAgICAgIHAub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUgJiZcbiAgICAgICAgcC5pc19zbmlwcGV0ID09PSB0cnVlICYmXG4gICAgICAgICgocC5pc19ib2FyZCAmJiBzbmlwcGV0X3R5cGUgPT09IFwiYm9hcmRcIikgfHxcbiAgICAgICAgICAocC5pc19wYWNrYWdlICYmIHNuaXBwZXRfdHlwZSA9PT0gXCJwYWNrYWdlXCIpIHx8XG4gICAgICAgICAgKHAuaXNfbW9kZWwgJiYgc25pcHBldF90eXBlID09PSBcIm1vZGVsXCIpIHx8XG4gICAgICAgICAgKHAuaXNfZm9vdHByaW50ICYmIHNuaXBwZXRfdHlwZSA9PT0gXCJmb290cHJpbnRcIikpLFxuICAgIClcbiAgICB1bnNjb3BlZF9uYW1lID0gYHVudGl0bGVkLSR7c25pcHBldF90eXBlfS0ke3VzZXJTbmlwcGV0cy5sZW5ndGggKyAxfWBcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChwa2cpID0+XG4gICAgICBwa2cudW5zY29wZWRfbmFtZSA9PT0gdW5zY29wZWRfbmFtZSAmJlxuICAgICAgcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfYWxyZWFkeV9leGlzdHNcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgYWxyZWFkeSBmb3JrZWQgdGhpcyBzbmlwcGV0IGluIHlvdXIgYWNjb3VudC5cIixcbiAgICB9KVxuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBDcmVhdGUgdGhlIHBhY2thZ2UgZGlyZWN0bHkgKHdoaWNoIHdpbGwgc2VydmUgYXMgb3VyIHNuaXBwZXQpXG4gICAgY29uc3QgbmV3UGFja2FnZSA9IGN0eC5kYi5hZGRQYWNrYWdlKHtcbiAgICAgIGNyZWF0b3JfYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIG93bmVyX29yZ19pZDogY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkLFxuICAgICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgICBpc19zb3VyY2VfZnJvbV9naXRodWI6IGZhbHNlLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgbmFtZTogYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke3Vuc2NvcGVkX25hbWV9YCxcbiAgICAgIHVuc2NvcGVkX25hbWU6IHVuc2NvcGVkX25hbWUsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgbGljZW5zZTogbnVsbCxcbiAgICAgIHN0YXJfY291bnQ6IDAsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHVwZGF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgYWlfZGVzY3JpcHRpb246IG51bGwsXG4gICAgICBpc19zbmlwcGV0OiB0cnVlLFxuICAgICAgaXNfYm9hcmQ6IHNuaXBwZXRfdHlwZSA9PT0gXCJib2FyZFwiLFxuICAgICAgaXNfcGFja2FnZTogc25pcHBldF90eXBlID09PSBcInBhY2thZ2VcIixcbiAgICAgIGlzX21vZGVsOiBzbmlwcGV0X3R5cGUgPT09IFwibW9kZWxcIixcbiAgICAgIGlzX2Zvb3RwcmludDogc25pcHBldF90eXBlID09PSBcImZvb3RwcmludFwiLFxuICAgICAgc25pcHBldF90eXBlOiBzbmlwcGV0X3R5cGUsXG4gICAgICBpc19wcml2YXRlOiBpc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBpc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwicGxhY2Vob2xkZXIgYWkgdXNhZ2UgaW5zdHJ1Y3Rpb25zXCIsXG4gICAgfSlcblxuICAgIGNvbnN0IG5ld1BhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICAgIHBhY2thZ2VfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIC8vIFNldHRpbmcgdGhlIHRyYW5zcGlsZWQgYXMgdHJ1ZSBvbiBjcmVhdGlvblxuICAgICAgaGFzX3RyYW5zcGlsZWQ6IHRydWUsXG4gICAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOiBudWxsLFxuICAgIH0pXG5cbiAgICBjdHguZGIudXBkYXRlUGFja2FnZShuZXdQYWNrYWdlLnBhY2thZ2VfaWQsIHtcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICB9KVxuXG4gICAgLy8gQWRkIHBhY2thZ2UgZmlsZXNcbiAgICAvLyBBZGQgaW5kZXgudHN4IGZpbGUgd2l0aCB0aGUgY29kZSBjb250ZW50XG4gICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgZmlsZV9wYXRoOiBcImluZGV4LnRzeFwiLFxuICAgICAgY29udGVudF90ZXh0OiBjb2RlLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgfSlcblxuICAgIC8vIEFkZCBEVFMgZmlsZSBpZiBwcm92aWRlZFxuICAgIGlmIChkdHMpIHtcbiAgICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICBjb250ZW50X3RleHQ6IGR0cyxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIEFkZCBjb21waWxlZCBKUyBpZiBwcm92aWRlZFxuICAgIGlmIChjb21waWxlZF9qcykge1xuICAgICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICBjb250ZW50X3RleHQ6IGNvbXBpbGVkX2pzLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQWRkIGNpcmN1aXQgSlNPTiBpZiBwcm92aWRlZFxuICAgIGlmIChjaXJjdWl0X2pzb24pIHtcbiAgICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogSlNPTi5zdHJpbmdpZnkoY2lyY3VpdF9qc29uKSxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgc25pcHBldCByZXNwb25zZSBvYmplY3RcbiAgICBjb25zdCBzbmlwcGV0UmVzcG9uc2UgPSB7XG4gICAgICBzbmlwcGV0X2lkOiBuZXdQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIG5hbWU6IG5ld1BhY2thZ2UubmFtZSxcbiAgICAgIHVuc2NvcGVkX25hbWU6IG5ld1BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG93bmVyX25hbWU6IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgICAgIGNvZGUsXG4gICAgICBkdHMsXG4gICAgICBjb21waWxlZF9qcyxcbiAgICAgIHN0YXJfY291bnQ6IDAsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHVwZGF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgc25pcHBldF90eXBlOiBzbmlwcGV0X3R5cGUsXG4gICAgICBjaXJjdWl0X2pzb246IGNpcmN1aXRfanNvbiB8fCBbXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgc25pcHBldDogc25pcHBldFJlc3BvbnNlLFxuICAgIH0pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9jcmVhdGlvbl9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IGBGYWlsZWQgdG8gY3JlYXRlIHNuaXBwZXQ6ICR7ZXJyb3J9YCxcbiAgICB9KVxuICB9XG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNuaXBwZXRfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHNuaXBwZXRJbmRleCA9IGN0eC5kYi5wYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgKHMpID0+IHMucGFja2FnZV9pZCA9PT0gc25pcHBldF9pZCxcbiAgKVxuXG4gIGlmIChzbmlwcGV0SW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5wYWNrYWdlc1tzbmlwcGV0SW5kZXhdXG5cbiAgaWYgKHNuaXBwZXQuY3JlYXRvcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBkZWxldGUgdGhpcyBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIGN0eC5kYi5wYWNrYWdlcy5zcGxpY2Uoc25pcHBldEluZGV4LCAxKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIGpzZGVsaXZyX3Jlc29sdmU6IHpcbiAgICAgIC5lbnVtKFtcInRydWVcIiwgXCJmYWxzZVwiXSlcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAudHJhbnNmb3JtKCh2KSA9PiB2ID09PSBcInRydWVcIiksXG4gICAganNkZWxpdnJfcGF0aDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5hbnkoKSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGpzZGVsaXZyX3BhdGgsIGpzZGVsaXZyX3Jlc29sdmUgfSA9IHJlcS5xdWVyeVxuXG4gIC8vIFBhcnNlIHRoZSBmaWxlIHBhdGhcbiAgY29uc3QgW293bmVyLCBwYWNrYWdlV2l0aFZlcnNpb24sIC4uLnJlc3RdID0ganNkZWxpdnJfcGF0aC5zcGxpdChcIi9cIilcbiAgY29uc3QgW3BhY2thZ2VOYW1lLCB2ZXJzaW9uXSA9IHBhY2thZ2VXaXRoVmVyc2lvbi5zcGxpdChcIkBcIilcbiAgY29uc3QgZmlsZU5hbWUgPSByZXN0LmpvaW4oXCIvXCIpXG5cbiAgLy8gRmluZCB0aGUgc25pcHBldFxuICBjb25zdCBfcGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChzKSA9PiBzLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gb3duZXIgJiYgcy51bnNjb3BlZF9uYW1lID09PSBwYWNrYWdlTmFtZSxcbiAgKVxuXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IF9wYWNrYWdlPy5wYWNrYWdlX2lkLFxuICApXG5cbiAgY29uc3QgcGFja2FnZUZpbGVzID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgKHApID0+IHAucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZT8ucGFja2FnZV9yZWxlYXNlX2lkLFxuICApXG5cbiAgaWYgKCFfcGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmICghZmlsZU5hbWUgJiYgIWpzZGVsaXZyX3Jlc29sdmUpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgbGF0ZXN0OiBcIjAuMC4xXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNpb25zOiBbXCIwLjAuMVwiXSxcbiAgICAgIH0pLFxuICAgICAge1xuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgfSxcbiAgICApXG4gIH0gZWxzZSBpZiAoIWZpbGVOYW1lICYmIGpzZGVsaXZyX3Jlc29sdmUpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICB9KSxcbiAgICAgIHtcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgLy8gSWYgbm8gZmlsZU5hbWUgaXMgcHJvdmlkZWQsIHJldHVybiB0aGUgZGlyZWN0b3J5IGxpc3RpbmdcbiAgaWYgKCFmaWxlTmFtZSB8fCBmaWxlTmFtZSA9PT0gXCJmbGF0XCIpIHtcbiAgICBjb25zdCBmaWxlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIG5hbWU6IFwiaW5kZXgudHNcIixcbiAgICAgICAgaGFzaDogXCJwbGFjZWhvbGRlcl9oYXNoXCIsXG4gICAgICAgIHRpbWU6IHBhY2thZ2VSZWxlYXNlPy5jcmVhdGVkX2F0LFxuICAgICAgICBzaXplOiBwYWNrYWdlRmlsZXMuZmluZCgoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIik/LmNvbnRlbnRfdGV4dFxuICAgICAgICAgID8ubGVuZ3RoLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIG5hbWU6IFwiaW5kZXguZC50c1wiLFxuICAgICAgICBoYXNoOiBcInBsYWNlaG9sZGVyX2hhc2hcIixcbiAgICAgICAgdGltZTogcGFja2FnZVJlbGVhc2U/LmNyZWF0ZWRfYXQsXG4gICAgICAgIHNpemU6IHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC5kLnRzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQ/Lmxlbmd0aCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICBuYW1lOiBcInBhY2thZ2UuanNvblwiLFxuICAgICAgICBoYXNoOiBcInBsYWNlaG9sZGVyX2hhc2hcIixcbiAgICAgICAgdGltZTogcGFja2FnZVJlbGVhc2U/LmNyZWF0ZWRfYXQsXG4gICAgICAgIHNpemU6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBuYW1lOiBgQHRzY2kvJHtvd25lcn0uJHtwYWNrYWdlTmFtZX1gLFxuICAgICAgICAgIHZlcnNpb246IHZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICAgIG1haW46IFwiaW5kZXgudHNcIixcbiAgICAgICAgICB0eXBlczogXCJpbmRleC5kLnRzXCIsXG4gICAgICAgIH0pLmxlbmd0aCxcbiAgICAgIH0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICBkZWZhdWx0OiBcIi9pbmRleC50c1wiLFxuICAgICAgZmlsZXM6XG4gICAgICAgIGZpbGVOYW1lID09PSBcImZsYXRcIlxuICAgICAgICAgID8gZmlsZXMubWFwKChmKSA9PiAoe1xuICAgICAgICAgICAgICBuYW1lOiBgLyR7Zi5uYW1lfWAsXG4gICAgICAgICAgICAgIGhhc2g6IGYuaGFzaCxcbiAgICAgICAgICAgICAgdGltZTogZi50aW1lLFxuICAgICAgICAgICAgICBzaXplOiBmLnNpemUsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiZGlyZWN0b3J5XCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCIuXCIsXG4gICAgICAgICAgICAgICAgZmlsZXM6IGZpbGVzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLCBudWxsLCAyKSwge1xuICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8vIEhhbmRsZSBmaWxlIGRvd25sb2Fkc1xuICBsZXQgY29udGVudDogc3RyaW5nXG4gIHN3aXRjaCAoZmlsZU5hbWUpIHtcbiAgICBjYXNlIFwiaW5kZXgudHNcIjpcbiAgICAgIGNvbnRlbnQgPVxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIpPy5jb250ZW50X3RleHQgfHxcbiAgICAgICAgXCJcIlxuICAgICAgYnJlYWtcbiAgICBjYXNlIFwiaW5kZXguZC50c1wiOlxuICAgICAgY29udGVudCA9XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIlxuICAgICAgYnJlYWtcbiAgICBjYXNlIFwicGFja2FnZS5qc29uXCI6XG4gICAgICBjb250ZW50ID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBgQHRzY2kvJHtvd25lcn0uJHtwYWNrYWdlTmFtZX1gLFxuICAgICAgICAgIHZlcnNpb246IHZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICAgIG1haW46IFwiaW5kZXgudHNcIixcbiAgICAgICAgICB0eXBlczogXCJpbmRleC5kLnRzXCIsXG4gICAgICAgIH0sXG4gICAgICAgIG51bGwsXG4gICAgICAgIDIsXG4gICAgICApXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcImZpbGVfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUmVxdWVzdGVkIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShjb250ZW50LCB7XG4gICAgc3RhdHVzOiAyMDAsXG4gICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcInRleHQvcGxhaW5cIiB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHtcbiAgY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnLFxufSBmcm9tIFwiY2lyY3VpdC10by1zdmdcIlxuaW1wb3J0IHsgQW55Q2lyY3VpdEVsZW1lbnQgfSBmcm9tIFwiY2lyY3VpdC1qc29uXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldElkOiB6LnN0cmluZygpLFxuICAgIGltYWdlX29mOiB6LmVudW0oW1wic2NoZW1hdGljXCIsIFwicGNiXCJdKSxcbiAgICBmb3JtYXQ6IHouZW51bShbXCJzdmdcIl0pLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHN2Zzogei5zdHJpbmcoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0SWQsIGltYWdlX29mLCBmb3JtYXQgfSA9IHJlcS5xdWVyeVxuXG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIuZ2V0U25pcHBldEJ5SWQoc25pcHBldElkKVxuXG4gIC8vIGNoZWNrIGlmIHRoZSBzbmlwcGV0IGV4aXN0c1xuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgZm9ybWF0IGlzIHZhbGlkXG4gIGlmIChmb3JtYXQgIT09IFwic3ZnXCIpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgbWVzc2FnZTogXCJGb3JtYXQgbXVzdCBiZSAnc3ZnJ1wiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoaW1hZ2Vfb2YgPT09IFwic2NoZW1hdGljXCIpIHtcbiAgICBjb25zdCBjaXJjdWl0SnNvbiA9IHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W11cbiAgICBjb25zdCBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyhjaXJjdWl0SnNvbilcbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBzdmcsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChpbWFnZV9vZiA9PT0gXCJwY2JcIikge1xuICAgIGNvbnN0IHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnKFxuICAgICAgc25pcHBldC5jaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSxcbiAgICApXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgc3ZnLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgIGVycm9yX2NvZGU6IFwiSU5WQUxJRF9SRVFVRVNUX1RZUEVcIixcbiAgICBtZXNzYWdlOiBcIlJlcXVlc3QgdHlwZSBtdXN0IGJlIGVpdGhlciAnc2NoZW1hdGljJyBvciAncGNiJ1wiLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG93bmVyX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uQm9keTogei5hbnkoKS5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgc25pcHBldDogc25pcHBldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0X2lkLCBuYW1lLCBvd25lcl9uYW1lLCB1bnNjb3BlZF9uYW1lIH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgYnkgc25pcHBldF9pZFxuICBpZiAoc25pcHBldF9pZCkge1xuICAgIGNvbnN0IGZvdW5kU25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlJZChzbmlwcGV0X2lkLCBjdHguYXV0aClcbiAgICBpZiAoZm91bmRTbmlwcGV0KSB7XG4gICAgICBpZiAoY3R4LmF1dGgpIHtcbiAgICAgICAgZm91bmRTbmlwcGV0LmlzX3N0YXJyZWQgPSBjdHguZGIuaGFzU3RhcnJlZChcbiAgICAgICAgICBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgICAgIGZvdW5kU25pcHBldC5zbmlwcGV0X2lkLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgc25pcHBldDogZm91bmRTbmlwcGV0LFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvLyBJZiBub3QgZm91bmQgYnkgSUQsIHRyeSB0byBmaW5kIGJ5IG90aGVyIHBhcmFtZXRlcnNcbiAgY29uc3QgZm91bmRQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4ge1xuICAgIGlmICghcGtnLmlzX3NuaXBwZXQpIHJldHVybiBmYWxzZVxuICAgIGlmIChuYW1lICYmIHBrZy5uYW1lLnRvTG93ZXJDYXNlKCkgIT09IG5hbWUudG9Mb3dlckNhc2UoKSkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKFxuICAgICAgb3duZXJfbmFtZSAmJlxuICAgICAgcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZT8udG9Mb3dlckNhc2UoKSAhPT0gb3duZXJfbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgaWYgKFxuICAgICAgdW5zY29wZWRfbmFtZSAmJlxuICAgICAgcGtnLnVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKSAhPT0gdW5zY29wZWRfbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgcmV0dXJuIHRydWVcbiAgfSlcblxuICBpZiAoIWZvdW5kUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBgU25pcHBldCBub3QgZm91bmQgKHNlYXJjaGVkIHVzaW5nICR7SlNPTi5zdHJpbmdpZnkocmVxLmNvbW1vblBhcmFtcyl9KWAsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENvbnZlcnQgcGFja2FnZSB0byBzbmlwcGV0IGZvcm1hdFxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUlkKGZvdW5kUGFja2FnZS5wYWNrYWdlX2lkKVxuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFNuaXBwZXQgbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KHJlcS5jb21tb25QYXJhbXMpfSlgLFxuICAgIH0pXG4gIH1cblxuICBpZiAoY3R4LmF1dGgpIHtcbiAgICBzbmlwcGV0LmlzX3N0YXJyZWQgPSBjdHguZGIuaGFzU3RhcnJlZChcbiAgICAgIGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICBzbmlwcGV0LnNuaXBwZXRfaWQsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBzbmlwcGV0LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBBbnlDaXJjdWl0RWxlbWVudCB9IGZyb20gXCJjaXJjdWl0LWpzb25cIlxuaW1wb3J0IHtcbiAgY29udmVydENpcmN1aXRKc29uVG9Bc3NlbWJseVN2ZyxcbiAgY29udmVydENpcmN1aXRKc29uVG9QY2JTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnLFxufSBmcm9tIFwiY2lyY3VpdC10by1zdmdcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHJvdXRlUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgYXV0aG9yOiB6LnN0cmluZygpLFxuICAgIHNuaXBwZXRfbmFtZTogei5zdHJpbmcoKSxcbiAgICB0eXBlRm9ybWF0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgcmF3UmVzcG9uc2U6IHRydWUsXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBhdXRob3IsIHNuaXBwZXRfbmFtZSwgdHlwZUZvcm1hdCB9ID0gcmVxLnJvdXRlUGFyYW1zXG5cbiAgLy8gR2V0IHRoZSBzbmlwcGV0XG4gIGNvbnN0IG5hbWUgPSBhdXRob3IgKyBcIi9cIiArIHNuaXBwZXRfbmFtZVxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUF1dGhvckFuZE5hbWUoYXV0aG9yLCBuYW1lKVxuXG4gIC8vIElmIHNuaXBwZXQgaXMgbm90IGZvdW5kLCByZXR1cm4gNDA0XG4gIGlmICghc25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBmb3JtYXQgaXMgdmFsaWRcbiAgY29uc3QgZm9ybWF0ID0gdHlwZUZvcm1hdC5zcGxpdChcIi5cIilbMV1cbiAgaWYgKGZvcm1hdCAhPT0gXCJzdmdcIikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICBtZXNzYWdlOiBcIkZvcm1hdCBtdXN0IGJlICdzdmcnXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSB0eXBlIGlzIHZhbGlkXG4gIGNvbnN0IHR5cGUgPSB0eXBlRm9ybWF0LnNwbGl0KFwiLlwiKVswXVxuICBjb25zdCB0eXBlc1ZhbGlkID0gW1wic2NoZW1hdGljXCIsIFwicGNiXCIsIFwiYXNzZW1ibHlcIl1cbiAgaWYgKCF0eXBlc1ZhbGlkLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICBtZXNzYWdlOiBgVHlwZSBtdXN0IGJlICcke3R5cGVzVmFsaWQuam9pbihcIicgb3IgJ1wiKX0nYCxcbiAgICB9KVxuICB9XG5cbiAgLy8gQ29udmVydCBjaXJjdWl0IGpzb24gdG8gc3ZnXG4gIGxldCBzdmc6IHN0cmluZ1xuICBpZiAodHlwZSA9PT0gXCJzY2hlbWF0aWNcIikge1xuICAgIHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnKFxuICAgICAgc25pcHBldC5jaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSxcbiAgICApXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJwY2JcIikge1xuICAgIHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnKFxuICAgICAgc25pcHBldC5jaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSxcbiAgICApXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJhc3NlbWJseVwiKSB7XG4gICAgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9Bc3NlbWJseVN2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInVua25vd25fZXJyb3JcIixcbiAgICAgIG1lc3NhZ2U6IFwiVW5rbm93biBlcnJvclwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKHN2Zywge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiaW1hZ2Uvc3ZnK3htbFwiLFxuICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwicHVibGljLCBtYXgtYWdlPTMxNTM2MDAwXCIsXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBsYXRlc3RTbmlwcGV0cyA9IGN0eC5kYi5nZXRMYXRlc3RTbmlwcGV0cygyMClcbiAgcmV0dXJuIGN0eC5qc29uKHsgc25pcHBldHM6IGxhdGVzdFNuaXBwZXRzIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldHM6IHouYXJyYXkoc25pcHBldFNjaGVtYSksXG4gIH0pLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIHRpbWVfcGVyaW9kOiB6LmVudW0oW1wiN2RheXNcIiwgXCIzMGRheXNcIiwgXCJhbGxcIl0pLm9wdGlvbmFsKCkuZGVmYXVsdChcImFsbFwiKSxcbiAgICB0YWc6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyB0aW1lX3BlcmlvZCwgdGFnIH0gPSByZXEucXVlcnlcblxuICBsZXQgc2luY2VEYXRlID0gbmV3IERhdGUoKVxuICBpZiAodGltZV9wZXJpb2QgPT09IFwiN2RheXNcIikge1xuICAgIHNpbmNlRGF0ZS5zZXREYXRlKHNpbmNlRGF0ZS5nZXREYXRlKCkgLSA3KVxuICB9IGVsc2UgaWYgKHRpbWVfcGVyaW9kID09PSBcIjMwZGF5c1wiKSB7XG4gICAgc2luY2VEYXRlLnNldERhdGUoc2luY2VEYXRlLmdldERhdGUoKSAtIDMwKVxuICB9IGVsc2Uge1xuICAgIHNpbmNlRGF0ZSA9IG5ldyBEYXRlKDApIC8vIEZvciBcImFsbFwiLCB1c2UgZWFybGllc3QgcG9zc2libGUgZGF0ZVxuICB9XG5cbiAgY29uc3QgdHJlbmRpbmdTbmlwcGV0cyA9IGN0eC5kYi5nZXRUcmVuZGluZ1NuaXBwZXRzKFxuICAgIDIwLFxuICAgIHNpbmNlRGF0ZS50b0lTT1N0cmluZygpLFxuICApXG5cbiAgLy8gRmlsdGVyIGJ5IHRhZyBpZiBwcm92aWRlZFxuICBjb25zdCBmaWx0ZXJlZFNuaXBwZXRzID0gdGFnXG4gICAgPyB0cmVuZGluZ1NuaXBwZXRzLmZpbHRlcigoc25pcHBldCkgPT4gc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IHRhZylcbiAgICA6IHRyZW5kaW5nU25pcHBldHNcblxuICByZXR1cm4gY3R4Lmpzb24oeyBzbmlwcGV0czogZmlsdGVyZWRTbmlwcGV0cyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSwgdHlwZSBBY2NvdW50IH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIG93bmVyX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc3RhcnJlZF9ieTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvbkJvZHk6IHouYW55KCkub3B0aW9uYWwoKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG93bmVyX25hbWUsIHVuc2NvcGVkX25hbWUsIHN0YXJyZWRfYnkgfSA9IHJlcS5jb21tb25QYXJhbXNcbiAgbGV0IHN0YXJyZWRCeUFjY291bnQ6IEFjY291bnQgfCBudWxsID0gbnVsbFxuICAvLyBHZXQgYWxsIHBhY2thZ2VzIHRoYXQgYXJlIHNuaXBwZXRzXG4gIGxldCBwYWNrYWdlcyA9IGN0eC5kYi5wYWNrYWdlcy5maWx0ZXIoKHBrZykgPT4gcGtnLmlzX3NuaXBwZXQgPT09IHRydWUpXG5cbiAgLy8gRmlsdGVyIGJ5IG93bmVyX25hbWUgaWYgcHJvdmlkZWRcbiAgaWYgKG93bmVyX25hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IG93bmVyX25hbWUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gIH1cblxuICAvLyBGaWx0ZXIgYnkgdW5zY29wZWRfbmFtZSBpZiBwcm92aWRlZFxuICBpZiAodW5zY29wZWRfbmFtZSkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHBrZykgPT4gcGtnLnVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKSA9PT0gdW5zY29wZWRfbmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgIClcbiAgfVxuXG4gIC8vIEZpbHRlciBieSBzdGFycmVkX2J5IGlmIHByb3ZpZGVkXG4gIGlmIChzdGFycmVkX2J5KSB7XG4gICAgc3RhcnJlZEJ5QWNjb3VudCA9XG4gICAgICBjdHguZGIuYWNjb3VudHMuZmluZChcbiAgICAgICAgKGFjYykgPT4gYWNjLmdpdGh1Yl91c2VybmFtZS50b0xvd2VyQ2FzZSgpID09PSBzdGFycmVkX2J5LnRvTG93ZXJDYXNlKCksXG4gICAgICApIHx8IG51bGxcblxuICAgIGlmIChzdGFycmVkQnlBY2NvdW50KSB7XG4gICAgICBjb25zdCBhY2NvdW50UGFja2FnZXMgPSBjdHguZGIuYWNjb3VudFBhY2thZ2VzLmZpbHRlcihcbiAgICAgICAgKGFwKSA9PiBhcC5hY2NvdW50X2lkID09PSBzdGFycmVkQnlBY2NvdW50Py5hY2NvdW50X2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICApXG5cbiAgICAgIGNvbnN0IHN0YXJUaW1lc3RhbXBzID0gbmV3IE1hcChcbiAgICAgICAgYWNjb3VudFBhY2thZ2VzLm1hcCgoYXApID0+IFthcC5wYWNrYWdlX2lkLCBhcC51cGRhdGVkX2F0XSksXG4gICAgICApXG5cbiAgICAgIC8vIEZpbHRlciBwYWNrYWdlcyB0byBvbmx5IGluY2x1ZGUgc3RhcnJlZCBvbmVzXG4gICAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcigocGtnKSA9PiBzdGFyVGltZXN0YW1wcy5oYXMocGtnLnBhY2thZ2VfaWQpKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWNrYWdlcyA9IFtdXG4gICAgfVxuICB9XG5cbiAgLy8gQ29udmVydCBwYWNrYWdlcyB0byBzbmlwcGV0c1xuICBjb25zdCBzbmlwcGV0cyA9IHBhY2thZ2VzLm1hcCgocGtnKSA9PiB7XG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKFxuICAgICAgcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICApXG5cbiAgICBsZXQgc3RhclRpbWVzdGFtcFxuICAgIGlmIChzdGFycmVkX2J5ICYmIHN0YXJyZWRCeUFjY291bnQpIHtcbiAgICAgIGNvbnN0IGFjY291bnRQYWNrYWdlID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgICAgICAoYXApID0+XG4gICAgICAgICAgYXAuYWNjb3VudF9pZCA9PT0gc3RhcnJlZEJ5QWNjb3VudC5hY2NvdW50X2lkICYmXG4gICAgICAgICAgYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiZcbiAgICAgICAgICBhcC5pc19zdGFycmVkLFxuICAgICAgKVxuICAgICAgc3RhclRpbWVzdGFtcCA9IGFjY291bnRQYWNrYWdlPy51cGRhdGVkX2F0XG4gICAgfVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgdW5zY29wZWRfbmFtZTogcGtnLnVuc2NvcGVkX25hbWUsXG4gICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwa2cuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgY29kZTogXCJcIixcbiAgICAgICAgZHRzOiBcIlwiLFxuICAgICAgICBjb21waWxlZF9qczogXCJcIixcbiAgICAgICAgY3JlYXRlZF9hdDogcGtnLmNyZWF0ZWRfYXQsXG4gICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICBzdGFycmVkX2F0OiBzdGFyVGltZXN0YW1wLCAvLyBBZGQgc3RhciB0aW1lc3RhbXBcbiAgICAgICAgc3Rhcl9jb3VudDogY3R4LmRiLmdldFN0YXJDb3VudChwa2cucGFja2FnZV9pZCksXG4gICAgICAgIGlzX3N0YXJyZWQ6IGN0eC5hdXRoXG4gICAgICAgICAgPyBjdHguZGIuaGFzU3RhcnJlZChjdHguYXV0aC5hY2NvdW50X2lkLCBwa2cucGFja2FnZV9pZClcbiAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICBpc19wcml2YXRlOiBwa2cuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgICAgaXNfcHVibGljOiBwa2cuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICAgIGlzX3VubGlzdGVkOiBwa2cuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gY3R4LmRiLmdldFBhY2thZ2VGaWxlc0J5UmVsZWFzZUlkKFxuICAgICAgcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGU6IHsgZmlsZV9wYXRoOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG5cbiAgICBjb25zdCBzbmlwcGV0ID0ge1xuICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IFwiXCIsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSB8fCBcIlwiLFxuICAgICAgZGVzY3JpcHRpb246IHBrZy5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgICAgKGZpbGU6IHsgZmlsZV9wYXRoOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgKT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjb21waWxlZF9qczpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgICAgKGZpbGU6IHsgZmlsZV9wYXRoOiBzdHJpbmcgfSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICAgICAgKT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgc3RhcnJlZF9hdDogc3RhclRpbWVzdGFtcCwgLy8gQWRkIHN0YXIgdGltZXN0YW1wXG4gICAgICBzdGFyX2NvdW50OiBjdHguZGIuZ2V0U3RhckNvdW50KHBrZy5wYWNrYWdlX2lkKSxcbiAgICAgIGlzX3N0YXJyZWQ6IGN0eC5hdXRoXG4gICAgICAgID8gY3R4LmRiLmhhc1N0YXJyZWQoY3R4LmF1dGguYWNjb3VudF9pZCwgcGtnLnBhY2thZ2VfaWQpXG4gICAgICAgIDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgaXNfcHJpdmF0ZTogcGtnLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHBrZy5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBwa2cuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuXG4gICAgcmV0dXJuIHNuaXBwZXRcbiAgfSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHNuaXBwZXRzLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBhY2NvdW50U25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNuaXBwZXRfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIENoZWNrIGlmIHNuaXBwZXQgZXhpc3RzXG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIuZ2V0U25pcHBldEJ5SWQoc25pcHBldF9pZClcbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gY2hlY2sgaWYgbm90IGFscmVhZHkgc3RhcnJlZFxuICBpZiAoIWN0eC5kYi5oYXNTdGFycmVkKGN0eC5hdXRoLmFjY291bnRfaWQsIHNuaXBwZXRfaWQpKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm90X3N0YXJyZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgbm90IHN0YXJyZWQgdGhpcyBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFJlbW92ZSBzdGFyXG4gIGN0eC5kYi5yZW1vdmVTdGFyKGN0eC5hdXRoLmFjY291bnRfaWQsIHNuaXBwZXRfaWQpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIHE6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBxIH0gPSByZXEucXVlcnlcbiAgY29uc3Qgc25pcHBldHMgPSBjdHguZGIuc2VhcmNoU25pcHBldHMocSlcbiAgcmV0dXJuIGN0eC5qc29uKHsgc25pcHBldHMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCIuLi8uLi8uLi9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiLi4vLi4vLi4vbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICAgIGNvZGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBkdHM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb21waWxlZF9qczogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gICAgY2lyY3VpdF9qc29uOiB6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gICAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudDogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gICAgc25pcHBldF90eXBlOiB6LmVudW0oW1wiYm9hcmRcIiwgXCJwYWNrYWdlXCIsIFwibW9kZWxcIiwgXCJmb290cHJpbnRcIl0pLm9wdGlvbmFsKCksXG4gICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBpc191bmxpc3RlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzbmlwcGV0OiBzbmlwcGV0U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgc25pcHBldF9pZCxcbiAgICBjb2RlLFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIHVuc2NvcGVkX25hbWUsXG4gICAgZHRzLFxuICAgIGNvbXBpbGVkX2pzLFxuICAgIGNpcmN1aXRfanNvbixcbiAgICBzbmlwcGV0X3R5cGUsXG4gICAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudCxcbiAgICBpc19wcml2YXRlLFxuICAgIGlzX3VubGlzdGVkLFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgcGFja2FnZUluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocykgPT4gcy5wYWNrYWdlX2lkID09PSBzbmlwcGV0X2lkLFxuICApXG5cbiAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBfcGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlc1twYWNrYWdlSW5kZXhdXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChyKSA9PiByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgKVxuICBjb25zdCBwYWNrYWdlRmlsZXMgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAoZikgPT4gZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlPy5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcbiAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIgfHwgZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIixcbiAgKVxuICBjb25zdCBkdHNGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgY29uc3QgY29tcGlsZWRKc0ZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT4gZi5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgKVxuICBjb25zdCBtYW51YWxFZGl0c0pzb25GaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIm1hbnVhbC1lZGl0cy5qc29uXCIsXG4gIClcbiAgY29uc3QgY2lyY3VpdEpzb25GaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICApXG5cbiAgaWYgKF9wYWNrYWdlLm93bmVyX2dpdGh1Yl91c2VybmFtZSAhPT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdXBkYXRlIHRoaXMgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB1cGRhdGVkU25pcHBldCA9IGN0eC5kYi51cGRhdGVTbmlwcGV0KHNuaXBwZXRfaWQsIHtcbiAgICBjb2RlOiBjb2RlID8/IGNvZGVGaWxlPy5jb250ZW50X3RleHQgPz8gXCJcIixcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPz8gX3BhY2thZ2UuZGVzY3JpcHRpb24gPz8gXCJcIixcbiAgICB1bnNjb3BlZF9uYW1lOiB1bnNjb3BlZF9uYW1lID8/IF9wYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgbmFtZTogdW5zY29wZWRfbmFtZVxuICAgICAgPyBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7dW5zY29wZWRfbmFtZX1gXG4gICAgICA6IF9wYWNrYWdlLm5hbWUsXG4gICAgZHRzOiBkdHMgPz8gZHRzRmlsZT8uY29udGVudF90ZXh0ID8/IFwiXCIsXG4gICAgY29tcGlsZWRfanM6IGNvbXBpbGVkX2pzID8/IGNvbXBpbGVkSnNGaWxlPy5jb250ZW50X3RleHQgPz8gXCJcIixcbiAgICBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50OlxuICAgICAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gbWFudWFsX2VkaXRzX2pzb25fY29udGVudFxuICAgICAgICA6IChtYW51YWxFZGl0c0pzb25GaWxlPy5jb250ZW50X3RleHQgPz8gXCJcIiksXG4gICAgY2lyY3VpdF9qc29uOlxuICAgICAgY2lyY3VpdF9qc29uID8/XG4gICAgICAoY2lyY3VpdEpzb25GaWxlPy5jb250ZW50X3RleHRcbiAgICAgICAgPyBKU09OLnBhcnNlKGNpcmN1aXRKc29uRmlsZS5jb250ZW50X3RleHQpXG4gICAgICAgIDogW10pLFxuICAgIHNuaXBwZXRfdHlwZTogc25pcHBldF90eXBlID8/IF9wYWNrYWdlLnNuaXBwZXRfdHlwZSxcbiAgICBpc19wcml2YXRlOiBpc19wcml2YXRlID8/IF9wYWNrYWdlLmlzX3ByaXZhdGUgPz8gZmFsc2UsXG4gICAgaXNfdW5saXN0ZWQ6IGlzX3VubGlzdGVkID8/IF9wYWNrYWdlLmlzX3VubGlzdGVkID8/IGZhbHNlLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfSlcblxuICBpZiAoIXVwZGF0ZWRTbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwidXBkYXRlX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gdXBkYXRlIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBzbmlwcGV0OiB1cGRhdGVkU25pcHBldCxcbiAgfSlcbn0pXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQUEsU0FBUSx1QkFBc0I7QUFDOUIsU0FBUyxvQ0FBb0M7OztBQ0Q3QyxTQUFTLDRCQUE0Qjs7O0FDQXJDLFNBQVMsa0JBQWtCO0FBRTNCLFNBQVMsYUFBYTtBQUN0QixTQUFTLG1CQUFtQjtBQUU1QixTQUFTLGVBQWU7OztBQ0x4QixTQUFTLFNBQVM7QUFFWCxJQUFNLGNBQWMsRUFDeEIsT0FBTztBQUFBLEVBQ04sWUFBWSxFQUFFLE9BQU87QUFBQSxFQUNyQixTQUFT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Qix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FB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LFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxN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QUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixt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QTJDRztBQUFBLEVBQVEsMkJBQTRDO0FBQUEsRUFBUSxxQkFBc0NSO0FBQUEsRUFBUSw2REFBOEU7QUFBQSxFQUFRLDZCQUE4Q1M7QUFBQSxFQUFRLCtCQUFnREM7QUFBQSxFQUFRLHNCQUF1Q1A7QUFBQSxFQUFRLDZCQUE4Q1E7QUFBQSxFQUFRLHdCQUF5Q0w7QUFBQSxFQUFRLHdCQUF5Q0Y7QUFDajVKO0FBRUEsSUFBTSxhQUFhO0FBQUEsRUFDakIsY0FBYyxnQkFBZ0IsT0FBTyxLQUFLLG9CQUFvQixDQUFDO0FBQUEsRUFDL0Q7QUFBQSxFQUNBLGFBQWEsT0FBTyxLQUFLLFlBQVksNkJBQTZCLFlBQVksT0FBTyxFQUFFLEdBQUc7QUFDNUY7QUFFQSxJQUFPLGdCQUFROyIsCiAgIm5hbWVzIjogWyJfX2Rpcm5hbWUiLCAic2VlZCIsICJzdGF0ZSIsICJwYWNrYWdlUmVsZWFzZSIsICJwYWNrYWdlRmlsZXMiLCAicGtnIiwgImFjY291bnQiLCAib3JnIiwgImRlY29kZUp3dCIsICJrbGV1ciIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgImFueXJvdXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAiQnVmZmVyIiwgInoiLCAicmVxdWVzdFNjaGVtYSIsICJCdWZmZXIiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInJvdXRlU3BlYyIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImRlbGV0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJyb3V0ZVNwZWMiLCAieiIsICJyb3V0ZVNwZWMiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInJvdXRlU3BlYyIsICJ6IiwgImxpc3RfZGVmYXVsdCIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJ6IiwgInVwZGF0ZV9kZWZhdWx0IiwgInJlbGVhc2UiLCAieiIsICJwa2ciLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImRlbGV0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAicGtnIiwgInoiLCAic2VhcmNoX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAiZGVsZXRlX2RlZmF1bHQiLCAieiIsICJhZGRfc3Rhcl9kZWZhdWx0IiwgInoiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJkZWxldGVfZGVmYXVsdCIsICJ6IiwgImRvd25sb2FkX2RlZmF1bHQiLCAieiIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyIsICJ6IiwgImdldF9kZWZhdWx0IiwgImNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmciLCAiY29udmVydENpcmN1aXRKc29uVG9QY2JTdmciLCAiY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmciLCAieiIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub0Fzc2VtYmx5U3ZnIiwgInoiLCAibGlzdF9sYXRlc3RfZGVmYXVsdCIsICJ6IiwgInoiLCAibGlzdF90cmVuZGluZ19kZWZhdWx0IiwgInoiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJ6IiwgInJlbW92ZV9zdGFyX2RlZmF1bHQiLCAieiIsICJzZWFyY2hfZGVmYXVsdCIsICJ6IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAieiIsICJnZXRfZGVmYXVsdCIsICJhbnlyb3V0ZV9kZWZhdWx0IiwgImNyZWF0ZV9kZWZhdWx0IiwgImxpc3RfZGVmYXVsdCIsICJ1cGRhdGVfZGVmYXVsdCIsICJkZWxldGVfZGVmYXVsdCIsICJzZWFyY2hfZGVmYXVsdCIsICJhZGRfc3Rhcl9kZWZhdWx0IiwgImRvd25sb2FkX2RlZmF1bHQiLCAibGlzdF9sYXRlc3RfZGVmYXVsdCIsICJsaXN0X3RyZW5kaW5nX2RlZmF1bHQiLCAicmVtb3ZlX3N0YXJfZGVmYXVsdCJdCn0K
|
|
10589
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2VlZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvYXV0b2xvYWQtZGV2LXBhY2thZ2VzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX2ZpbGUvZ2VuZXJhdGUtZnMtc2hhLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtZGIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1jdHgtZXJyb3IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1vcHRpb25hbC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1lcnJvci1oYW5kbGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXJlcXVlc3QtbG9nZ2luZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL2FpX3Jldmlld3MvcHJvY2Vzc19yZXZpZXcudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYXRhc2hlZXRzL3Byb2Nlc3NfYWxsX2RhdGFzaGVldHMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYi50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL21vdmVfb3JkZXJzX2ZvcndhcmQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvb3JkZXItc3RlcHMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9yZWNlaXZlZF9xdW90ZXMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9ydW5fYXN5bmNfdGFza3MudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9zZWVkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0X2FjY291bnRfYmFsYW5jZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3NlYXJjaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3VwZGF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpX3Jldmlld3MvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWlfcmV2aWV3cy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haV9yZXZpZXdzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS9bLi4uYW55cm91dGVdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWkudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haXN0cmVhbS9bLi4uYW55cm91dGVdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYXV0b2NvbXBsZXRlL2NyZWF0ZV9hdXRvY29tcGxldGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9idWdfcmVwb3J0cy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9idWdfcmVwb3J0cy9kb3dubG9hZF96aXAudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9idWdfcmVwb3J0cy91cGxvYWRfZmlsZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9ub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9kYXRhc2hlZXRzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2RhdGFzaGVldHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZGF0YXNoZWV0cy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZ2l0aHViL2luc3RhbGxhdGlvbnMvY3JlYXRlX25ld19pbnN0YWxsYXRpb25fcmVkaXJlY3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9naXRodWIvcmVwb3MvbGlzdF9hdmFpbGFibGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9naXRodWIvcmVwb3MvcmVmcmVzaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2hlYWx0aC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy91cGxvYWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX3F1b3Rlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9hZGRfbWVtYmVyLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtb3JnLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9kZWxldGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2dldF9tZW1iZXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvaW52aXRhdGlvbnMvYWNjZXB0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9pbnZpdGF0aW9ucy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2ludml0YXRpb25zL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvaW52aXRhdGlvbnMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvaW52aXRhdGlvbnMvcmV2b2tlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9saXN0X21lbWJlcnMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL3JlbW92ZV9tZW1iZXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL3VwZGF0ZV9tZW1iZXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL3VwZGF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvdXBsb2FkX2F2YXRhci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfYnVpbGRzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLWJ1aWxkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9idWlsZHMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGVfb3JfdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9maWxlL2dldC1wYWNrYWdlLWZpbGUtaWQtZnJvbS1maWxlLWRlc2NyaXB0b3IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvcmVidWlsZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvYWRkX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ZvcmsudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9pbWFnZXMvW293bmVyX2dpdGh1Yl91c2VybmFtZV0vW3Vuc2NvcGVkX25hbWVdL1t2aWV3X2Zvcm1hdF0udHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0X2xhdGVzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2xpc3RfdHJlbmRpbmcudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9zZWFyY2gudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGVfYWlfZGVzY3JpcHRpb24udHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wcm94eS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3Nlc3Npb25zL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2FkZF9zdGFyLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZGVsZXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZG93bmxvYWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2UudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF9sYXRlc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9saXN0X3RyZW5kaW5nLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvc2VhcmNoLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvdXBkYXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge2dldFJvdXRlTWF0Y2hlcn0gZnJvbSBcIm5leHQtcm91dGUtbWF0Y2hlclwiXG5pbXBvcnQgeyBtYWtlUmVxdWVzdEFnYWluc3RXaW50ZXJTcGVjIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuXG5pbXBvcnQgKiBhcyB0a2tiaWF2dW9rZmV4aWRwIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9haV9yZXZpZXdzL3Byb2Nlc3NfcmV2aWV3LnRzXCJcbmltcG9ydCAqIGFzIGNlZmFldGp1ZXVscWhpYWsgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL2RhdGFzaGVldHMvcHJvY2Vzc19hbGxfZGF0YXNoZWV0cy50c1wiXG5pbXBvcnQgKiBhcyBjb3NyeHZsbXVva25vZHRrIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYi50c1wiXG5pbXBvcnQgKiBhcyB5Ynh6bHZkZ3BhY2ZqbWNpIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9tb3ZlX29yZGVyc19mb3J3YXJkLnRzXCJcbmltcG9ydCAqIGFzIGFudXRqanlpeHhya3RobHogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3JlY2VpdmVkX3F1b3Rlcy50c1wiXG5pbXBvcnQgKiBhcyBoZWVqc2d4YXZ4aGZ5bXZmIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9ydW5fYXN5bmNfdGFza3MudHNcIlxuaW1wb3J0ICogYXMgdG1hemZ3dnRyc3ljY3llcSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2Uvc2VlZC50c1wiXG5pbXBvcnQgKiBhcyB5c3dpcWZ1ZGdybmNmaGd6IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9hY2NvdW50cy9nZXRfYWNjb3VudF9iYWxhbmNlLnRzXCJcbmltcG9ydCAqIGFzIHdocnd4am1vbWpjbHhlZm0gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBwaHFra21ybG9jbWd0b3FxIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9hY2NvdW50cy9zZWFyY2gudHNcIlxuaW1wb3J0ICogYXMgcnpjdGlha3FzcXNvbGV1dSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIHZuaXJ1aGNjZXVzaXlmenEgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpX3Jldmlld3MvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIG9leWttYnF1dWhua3ZsYmYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpX3Jldmlld3MvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHBreHlsY3h0aWhvZ2tiemogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpX3Jldmlld3MvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBlaG1xdG5qdnRveGhqdnBvIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS50c1wiXG5pbXBvcnQgKiBhcyBxa3h1aHFoc21reHp1eXp5IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS9bLi4uYW55cm91dGVdLnRzXCJcbmltcG9ydCAqIGFzIHp2ZWd3aHNzcXFxaHZyZmwgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2Fpc3RyZWFtL1suLi5hbnlyb3V0ZV0udHNcIlxuaW1wb3J0ICogYXMgcHRmd3lhend6bHRydHJnaiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYXV0b2NvbXBsZXRlL2NyZWF0ZV9hdXRvY29tcGxldGUudHNcIlxuaW1wb3J0ICogYXMgeGxlY3lncGtpZmt6eHZudSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYnVnX3JlcG9ydHMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIHlpcnNuZGtsYmx5eXp2cm0gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2J1Z19yZXBvcnRzL2Rvd25sb2FkX3ppcC50c1wiXG5pbXBvcnQgKiBhcyBicmpwbGhteWdhbm5yc2VyIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9idWdfcmVwb3J0cy91cGxvYWRfZmlsZS50c1wiXG5pbXBvcnQgKiBhcyBneHBsb2VsZHRhb2doeHRrIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9kYXRhc2hlZXRzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyBzeGlqbG9iZndsbmVyemNmIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9kYXRhc2hlZXRzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBhbnV3dnJ2ZG54ZHFjdmttIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9kYXRhc2hlZXRzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgcGd4b3lybGhpY3NuZ3JpbyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZ2l0aHViL2luc3RhbGxhdGlvbnMvY3JlYXRlX25ld19pbnN0YWxsYXRpb25fcmVkaXJlY3QudHNcIlxuaW1wb3J0ICogYXMgbXNibnFpZWFyZm5tcHJlcSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZ2l0aHViL3JlcG9zL2xpc3RfYXZhaWxhYmxlLnRzXCJcbmltcG9ydCAqIGFzIGt4ZmNvb3JtbnFub2pqYm8gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2dpdGh1Yi9yZXBvcy9yZWZyZXNoLnRzXCJcbmltcG9ydCAqIGFzIGVma212d3d2YXhkYXl0aHUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2hlYWx0aC50c1wiXG5pbXBvcnQgKiBhcyBlY2dlYmNrZm5henpncXdnIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9pbnRlcm5hbC9zZXNzaW9ucy9jcmVhdGVfd2l0aG91dF9hdXRoLnRzXCJcbmltcG9ydCAqIGFzIHhkeHN2cnF1c21ycmhoa2MgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX2ZpbGVzL2dldC50c1wiXG5pbXBvcnQgKiBhcyB5aWZib3RoZGJvbGNweXhtIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy91cGxvYWQudHNcIlxuaW1wb3J0ICogYXMgZ29mamtjdmJiZmdtc2RkdyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZV9hbGxfdmVuZG9yX3F1b3Rlcy50c1wiXG5pbXBvcnQgKiBhcyBkcml0bW1wb2ZpdHJnYWpqIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGhxb3Vja3p1Y2doanVzemcgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX3F1b3Rlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgc2pyc29kdWd2aHh5Z2RiaCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyB6d2RrYXVrdnp5ZmJsenJtIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHl2YmdobHVsdnBjdW9mZnkgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIHpocmRtdXFyaWRlb2VpcWcgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvYWRkX21lbWJlci50c1wiXG5pbXBvcnQgKiBhcyBwc2RzaGV2cHFkZHVodHlrIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyBsemVzZG1uaGVnZWtkb3BnIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2RlbGV0ZS50c1wiXG5pbXBvcnQgKiBhcyBydWZ4ZGRnZ21vdXhybm15IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL2dldF9tZW1iZXIudHNcIlxuaW1wb3J0ICogYXMgd2Ryam1xZXNxdHVianV3dSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9nZXQudHNcIlxuaW1wb3J0ICogYXMgbmtveGtwbW9iaGN6bG10dSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9pbnZpdGF0aW9ucy9hY2NlcHQudHNcIlxuaW1wb3J0ICogYXMgeW50c3NrdWNreG9rbWFydiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9pbnZpdGF0aW9ucy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgZmtwcXJ2c3dyZnV1cGFmYSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9pbnZpdGF0aW9ucy9nZXQudHNcIlxuaW1wb3J0ICogYXMgZ3Bmcm1qeHFvaG91Y2x2eiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy9pbnZpdGF0aW9ucy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIHRiaG9id3p4bWRjaXJmcnQgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvaW52aXRhdGlvbnMvcmV2b2tlLnRzXCJcbmltcG9ydCAqIGFzIHR1aGN4dXprZ2pxZHp0aWUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvbGlzdF9tZW1iZXJzLnRzXCJcbmltcG9ydCAqIGFzIHhxeXR4d3R4ZWdhZ3JzZmsgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBlaXVpdGZicW54dHlweHNsIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmdzL3JlbW92ZV9tZW1iZXIudHNcIlxuaW1wb3J0ICogYXMgc2F5anp4eXlzZnhpZ25uayBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3Jncy91cGRhdGVfbWVtYmVyLnRzXCJcbmltcG9ydCAqIGFzIG1zd3d3bnZzZWJsYnRhbG0gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIGFzbmRodm10c3pkcHVtamcgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZ3MvdXBsb2FkX2F2YXRhci50c1wiXG5pbXBvcnQgKiBhcyBybnp5aWpmdm5hYml5ZXpjIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2J1aWxkcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgYnl0dWh3cnNrZWNqaXpqZCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9idWlsZHMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBmcGlmc2txcHpldGZtdnhjIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZV9vcl91cGRhdGUudHNcIlxuaW1wb3J0ICogYXMgb2VheXFncXpqbmN6Z2h1eCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgYmJzYnBqanBlcHJzbWdjZiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9kZWxldGUudHNcIlxuaW1wb3J0ICogYXMgZndsbG1odGlkaHh4d2JsbiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9kb3dubG9hZC50c1wiXG5pbXBvcnQgKiBhcyBicWx4bGdveGh4a3ZhYWZsIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBnaGRwamp1amxmbmZmYmNsIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgcG9ybXhqc3VvcGVmb3N1eiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgZXZzdXlnc2Z4bnp6c21odiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgZ3NicGd4bGNjamtpcmVsZyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIG53dG94cGlub2d5aW9laHggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvcmVidWlsZC50c1wiXG5pbXBvcnQgKiBhcyBteXh5ZW9wcm13enhwc21yIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL3VwZGF0ZS50c1wiXG5pbXBvcnQgKiBhcyBqZW1rZ3dwcGttbnl6eXZ3IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9hZGRfc3Rhci50c1wiXG5pbXBvcnQgKiBhcyBna3F3ZXp6cXZwZ2J3dG5uIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgdHlycWVsd3ZkYXd3d29lZiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvZGVsZXRlLnRzXCJcbmltcG9ydCAqIGFzIGx2eG5pZXJmb3N5bnluY3YgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ZvcmsudHNcIlxuaW1wb3J0ICogYXMgbGt1bWxpYm9jb2xxZ2tyeCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHVobGR3ZWdvZnNkZm96d2QgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ltYWdlcy9bb3duZXJfZ2l0aHViX3VzZXJuYW1lXS9bdW5zY29wZWRfbmFtZV0vW3ZpZXdfZm9ybWF0XS50c1wiXG5pbXBvcnQgKiBhcyBodWRhc3V2dmRvbG9ub3NwIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0X2xhdGVzdC50c1wiXG5pbXBvcnQgKiBhcyB5ampob3dndWdpcndhb2VxIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0X3RyZW5kaW5nLnRzXCJcbmltcG9ydCAqIGFzIGJiaXpreWZwZXppamtuZm0gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgbGdwY2x0b3NwZnR0Y25rbSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXIudHNcIlxuaW1wb3J0ICogYXMgdHdqaWZjZnJxdHJjZm55diBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvc2VhcmNoLnRzXCJcbmltcG9ydCAqIGFzIG56Z3pxYnVwYm9teXppbHEgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL3VwZGF0ZV9haV9kZXNjcmlwdGlvbi50c1wiXG5pbXBvcnQgKiBhcyBsc2d1Y2VzcmZodnBoenhpIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGUudHNcIlxuaW1wb3J0ICogYXMgd2JlYXViYmxvaGtrenB2dCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcHJveHkudHNcIlxuaW1wb3J0ICogYXMgYW5oYXpvYWV1eGdsZ29zaiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc2Vzc2lvbnMvZGVsZXRlLnRzXCJcbmltcG9ydCAqIGFzIGNtbHR2bmFkeWNydW1ncHEgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2FkZF9zdGFyLnRzXCJcbmltcG9ydCAqIGFzIGp0empsYWljbXRwZmhva2ogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyB0bWlwc2pxcmFzdXVpdW5qIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kZWxldGUudHNcIlxuaW1wb3J0ICogYXMgemJwanZleW10eWZqc3Z4YSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZG93bmxvYWQudHNcIlxuaW1wb3J0ICogYXMgaGRpY3lmZWVuZXpqdmhnYiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0X2ltYWdlLnRzXCJcbmltcG9ydCAqIGFzIHFlenV2ZWttZm11ZG1vcGEgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBrc3NtdHFmYWthaGxtZGZpIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdLnRzXCJcbmltcG9ydCAqIGFzIGZmaGl0cXByYmVyY3F1cWEgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3RfbGF0ZXN0LnRzXCJcbmltcG9ydCAqIGFzIHR0aGVsYmp2enN1ZHJpdmQgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3RfdHJlbmRpbmcudHNcIlxuaW1wb3J0ICogYXMgYmh1ZGFud2Nwa3dpZ254dSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBlc2FucGt2eHhwZ2Z5YndrIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9yZW1vdmVfc3Rhci50c1wiXG5pbXBvcnQgKiBhcyByeWxlcGlpa2xiYnd0bnp2IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9zZWFyY2gudHNcIlxuaW1wb3J0ICogYXMgZnR4aGVxYWpueGttcmFsYSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvdXBkYXRlLnRzXCJcblxuY29uc3Qgcm91dGVNYXBXaXRoSGFuZGxlcnMgPSB7XG4gIFwiL2FwaS9fZmFrZS9haV9yZXZpZXdzL3Byb2Nlc3NfcmV2aWV3XCI6IHRra2JpYXZ1b2tmZXhpZHAuZGVmYXVsdCxcIi9hcGkvX2Zha2UvZGF0YXNoZWV0cy9wcm9jZXNzX2FsbF9kYXRhc2hlZXRzXCI6IGNlZmFldGp1ZXVscWhpYWsuZGVmYXVsdCxcIi9hcGkvX2Zha2UvZGJcIjogY29zcnh2bG11b2tub2R0ay5kZWZhdWx0LFwiL2FwaS9fZmFrZS9tb3ZlX29yZGVyc19mb3J3YXJkXCI6IHlieHpsdmRncGFjZmptY2kuZGVmYXVsdCxcIi9hcGkvX2Zha2UvcmVjZWl2ZWRfcXVvdGVzXCI6IGFudXRqanlpeHhya3RobHouZGVmYXVsdCxcIi9hcGkvX2Zha2UvcnVuX2FzeW5jX3Rhc2tzXCI6IGhlZWpzZ3hhdnhoZnltdmYuZGVmYXVsdCxcIi9hcGkvX2Zha2Uvc2VlZFwiOiB0bWF6Znd2dHJzeWNjeWVxLmRlZmF1bHQsXCIvYXBpL2FjY291bnRzL2dldF9hY2NvdW50X2JhbGFuY2VcIjogeXN3aXFmdWRncm5jZmhnei5kZWZhdWx0LFwiL2FwaS9hY2NvdW50cy9nZXRcIjogd2hyd3hqbW9tamNseGVmbS5kZWZhdWx0LFwiL2FwaS9hY2NvdW50cy9zZWFyY2hcIjogcGhxa2ttcmxvY21ndG9xcS5kZWZhdWx0LFwiL2FwaS9hY2NvdW50cy91cGRhdGVcIjogcnpjdGlha3FzcXNvbGV1dS5kZWZhdWx0LFwiL2FwaS9haV9yZXZpZXdzL2NyZWF0ZVwiOiB2bmlydWhjY2V1c2l5ZnpxLmRlZmF1bHQsXCIvYXBpL2FpX3Jldmlld3MvZ2V0XCI6IG9leWttYnF1dWhua3ZsYmYuZGVmYXVsdCxcIi9hcGkvYWlfcmV2aWV3cy9saXN0XCI6IHBreHlsY3h0aWhvZ2tiemouZGVmYXVsdCxcIi9hcGkvYWlcIjogZWhtcXRuanZ0b3hoanZwby5kZWZhdWx0LFwiL2FwaS9haS9bLi4uYW55cm91dGVdXCI6IHFreHVocWhzbWt4enV5enkuZGVmYXVsdCxcIi9hcGkvYWlzdHJlYW0vWy4uLmFueXJvdXRlXVwiOiB6dmVnd2hzc3FxcWh2cmZsLmRlZmF1bHQsXCIvYXBpL2F1dG9jb21wbGV0ZS9jcmVhdGVfYXV0b2NvbXBsZXRlXCI6IHB0Znd5YXp3emx0cnRyZ2ouZGVmYXVsdCxcIi9hcGkvYnVnX3JlcG9ydHMvY3JlYXRlXCI6IHhsZWN5Z3BraWZrenh2bnUuZGVmYXVsdCxcIi9hcGkvYnVnX3JlcG9ydHMvZG93bmxvYWRfemlwXCI6IHlpcnNuZGtsYmx5eXp2cm0uZGVmYXVsdCxcIi9hcGkvYnVnX3JlcG9ydHMvdXBsb2FkX2ZpbGVcIjogYnJqcGxobXlnYW5ucnNlci5kZWZhdWx0LFwiL2FwaS9kYXRhc2hlZXRzL2NyZWF0ZVwiOiBneHBsb2VsZHRhb2doeHRrLmRlZmF1bHQsXCIvYXBpL2RhdGFzaGVldHMvZ2V0XCI6IHN4aWpsb2Jmd2xuZXJ6Y2YuZGVmYXVsdCxcIi9hcGkvZGF0YXNoZWV0cy9saXN0XCI6IGFudXd2cnZkbnhkcWN2a20uZGVmYXVsdCxcIi9hcGkvZ2l0aHViL2luc3RhbGxhdGlvbnMvY3JlYXRlX25ld19pbnN0YWxsYXRpb25fcmVkaXJlY3RcIjogcGd4b3lybGhpY3NuZ3Jpby5kZWZhdWx0LFwiL2FwaS9naXRodWIvcmVwb3MvbGlzdF9hdmFpbGFibGVcIjogbXNibnFpZWFyZm5tcHJlcS5kZWZhdWx0LFwiL2FwaS9naXRodWIvcmVwb3MvcmVmcmVzaFwiOiBreGZjb29ybW5xbm9qamJvLmRlZmF1bHQsXCIvYXBpL2hlYWx0aFwiOiBlZmttdnd3dmF4ZGF5dGh1LmRlZmF1bHQsXCIvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGhcIjogZWNnZWJja2ZuYXp6Z3F3Zy5kZWZhdWx0LFwiL2FwaS9vcmRlcl9maWxlcy9nZXRcIjogeGR4c3ZycXVzbXJyaGhrYy5kZWZhdWx0LFwiL2FwaS9vcmRlcl9maWxlcy91cGxvYWRcIjogeWlmYm90aGRib2xjcHl4bS5kZWZhdWx0LFwiL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzXCI6IGdvZmprY3ZiYmZnbXNkZHcuZGVmYXVsdCxcIi9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZVwiOiBkcml0bW1wb2ZpdHJnYWpqLmRlZmF1bHQsXCIvYXBpL29yZGVyX3F1b3Rlcy9nZXRcIjogaHFvdWNrenVjZ2hqdXN6Zy5kZWZhdWx0LFwiL2FwaS9vcmRlcnMvY3JlYXRlXCI6IHNqcnNvZHVndmh4eWdkYmguZGVmYXVsdCxcIi9hcGkvb3JkZXJzL2dldFwiOiB6d2RrYXVrdnp5ZmJsenJtLmRlZmF1bHQsXCIvYXBpL29yZGVycy9saXN0XCI6IHl2YmdobHVsdnBjdW9mZnkuZGVmYXVsdCxcIi9hcGkvb3Jncy9hZGRfbWVtYmVyXCI6IHpocmRtdXFyaWRlb2VpcWcuZGVmYXVsdCxcIi9hcGkvb3Jncy9jcmVhdGVcIjogcHNkc2hldnBxZGR1aHR5ay5kZWZhdWx0LFwiL2FwaS9vcmdzL2RlbGV0ZVwiOiBsemVzZG1uaGVnZWtkb3BnLmRlZmF1bHQsXCIvYXBpL29yZ3MvZ2V0X21lbWJlclwiOiBydWZ4ZGRnZ21vdXhybm15LmRlZmF1bHQsXCIvYXBpL29yZ3MvZ2V0XCI6IHdkcmptcWVzcXR1Ymp1d3UuZGVmYXVsdCxcIi9hcGkvb3Jncy9pbnZpdGF0aW9ucy9hY2NlcHRcIjogbmtveGtwbW9iaGN6bG10dS5kZWZhdWx0LFwiL2FwaS9vcmdzL2ludml0YXRpb25zL2NyZWF0ZVwiOiB5bnRzc2t1Y2t4b2ttYXJ2LmRlZmF1bHQsXCIvYXBpL29yZ3MvaW52aXRhdGlvbnMvZ2V0XCI6IGZrcHFydnN3cmZ1dXBhZmEuZGVmYXVsdCxcIi9hcGkvb3Jncy9pbnZpdGF0aW9ucy9saXN0XCI6IGdwZnJtanhxb2hvdWNsdnouZGVmYXVsdCxcIi9hcGkvb3Jncy9pbnZpdGF0aW9ucy9yZXZva2VcIjogdGJob2J3enhtZGNpcmZydC5kZWZhdWx0LFwiL2FwaS9vcmdzL2xpc3RfbWVtYmVyc1wiOiB0dWhjeHV6a2dqcWR6dGllLmRlZmF1bHQsXCIvYXBpL29yZ3MvbGlzdFwiOiB4cXl0eHd0eGVnYWdyc2ZrLmRlZmF1bHQsXCIvYXBpL29yZ3MvcmVtb3ZlX21lbWJlclwiOiBlaXVpdGZicW54dHlweHNsLmRlZmF1bHQsXCIvYXBpL29yZ3MvdXBkYXRlX21lbWJlclwiOiBzYXlqenh5eXNmeGlnbm5rLmRlZmF1bHQsXCIvYXBpL29yZ3MvdXBkYXRlXCI6IG1zd3d3bnZzZWJsYnRhbG0uZGVmYXVsdCxcIi9hcGkvb3Jncy91cGxvYWRfYXZhdGFyXCI6IGFzbmRodm10c3pkcHVtamcuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9idWlsZHMvZ2V0XCI6IHJuenlpamZ2bmFiaXllemMuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9idWlsZHMvbGlzdFwiOiBieXR1aHdyc2tlY2ppempkLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlX29yX3VwZGF0ZVwiOiBmcGlmc2txcHpldGZtdnhjLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlXCI6IG9lYXlxZ3F6am5jemdodXguZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9kZWxldGVcIjogYmJzYnBqanBlcHJzbWdjZi5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkXCI6IGZ3bGxtaHRpZGh4eHdibG4uZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9nZXRcIjogYnFseGxnb3hoeGt2YWFmbC5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3RcIjogZ2hkcGpqdWpsZm5mZmJjbC5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2NyZWF0ZVwiOiBwb3JteGpzdW9wZWZvc3V6LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfcmVsZWFzZXMvZ2V0XCI6IGV2c3V5Z3NmeG56enNtaHYuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy9saXN0XCI6IGdzYnBneGxjY2praXJlbGcuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy9yZWJ1aWxkXCI6IG53dG94cGlub2d5aW9laHguZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy91cGRhdGVcIjogbXl4eWVvcHJtd3p4cHNtci5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9hZGRfc3RhclwiOiBqZW1rZ3dwcGttbnl6eXZ3LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2NyZWF0ZVwiOiBna3F3ZXp6cXZwZ2J3dG5uLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2RlbGV0ZVwiOiB0eXJxZWx3dmRhd3d3b2VmLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2ZvcmtcIjogbHZ4bmllcmZvc3lueW5jdi5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9nZXRcIjogbGt1bWxpYm9jb2xxZ2tyeC5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9pbWFnZXMvW293bmVyX2dpdGh1Yl91c2VybmFtZV0vW3Vuc2NvcGVkX25hbWVdL1t2aWV3X2Zvcm1hdF1cIjogdWhsZHdlZ29mc2Rmb3p3ZC5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9saXN0X2xhdGVzdFwiOiBodWRhc3V2dmRvbG9ub3NwLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2xpc3RfdHJlbmRpbmdcIjogeWpqaG93Z3VnaXJ3YW9lcS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9saXN0XCI6IGJiaXpreWZwZXppamtuZm0uZGVmYXVsdCxcIi9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXJcIjogbGdwY2x0b3NwZnR0Y25rbS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9zZWFyY2hcIjogdHdqaWZjZnJxdHJjZm55di5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy91cGRhdGVfYWlfZGVzY3JpcHRpb25cIjogbnpnenFidXBib215emlscS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy91cGRhdGVcIjogbHNndWNlc3JmaHZwaHp4aS5kZWZhdWx0LFwiL2FwaS9wcm94eVwiOiB3YmVhdWJibG9oa2t6cHZ0LmRlZmF1bHQsXCIvYXBpL3Nlc3Npb25zL2RlbGV0ZVwiOiBhbmhhem9hZXV4Z2xnb3NqLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2FkZF9zdGFyXCI6IGNtbHR2bmFkeWNydW1ncHEuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvY3JlYXRlXCI6IGp0empsYWljbXRwZmhva2ouZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZGVsZXRlXCI6IHRtaXBzanFyYXN1dWl1bmouZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZG93bmxvYWRcIjogemJwanZleW10eWZqc3Z4YS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2VcIjogaGRpY3lmZWVuZXpqdmhnYi5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9nZXRcIjogcWV6dXZla21mbXVkbW9wYS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdXCI6IGtzc210cWZha2FobG1kZmkuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvbGlzdF9sYXRlc3RcIjogZmZoaXRxcHJiZXJjcXVxYS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9saXN0X3RyZW5kaW5nXCI6IHR0aGVsYmp2enN1ZHJpdmQuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvbGlzdFwiOiBiaHVkYW53Y3Brd2lnbnh1LmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyXCI6IGVzYW5wa3Z4eHBnZnlid2suZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvc2VhcmNoXCI6IHJ5bGVwaWlrbGJid3RuenYuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvdXBkYXRlXCI6IGZ0eGhlcWFqbnhrbXJhbGEuZGVmYXVsdFxufVxuXG5jb25zdCB3aW50ZXJTcGVjID0ge1xuICByb3V0ZU1hdGNoZXI6IGdldFJvdXRlTWF0Y2hlcihPYmplY3Qua2V5cyhyb3V0ZU1hcFdpdGhIYW5kbGVycykpLFxuICByb3V0ZU1hcFdpdGhIYW5kbGVycyxcbiAgbWFrZVJlcXVlc3Q6IGFzeW5jIChyZXEsIG9wdGlvbnMpID0+IG1ha2VSZXF1ZXN0QWdhaW5zdFdpbnRlclNwZWMod2ludGVyU3BlYywgb3B0aW9ucykocmVxKVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aW50ZXJTcGVjIiwgImltcG9ydCB7IGNyZWF0ZVdpdGhXaW50ZXJTcGVjIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuaW1wb3J0IHsgd2l0aERiIH0gZnJvbSBcIi4vd2l0aC1kYlwiXG5pbXBvcnQgeyBjcmVhdGVXaXRoRGVmYXVsdEV4Y2VwdGlvbkhhbmRsaW5nIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQgeyB3aXRoQ3R4RXJyb3IgfSBmcm9tIFwiLi93aXRoLWN0eC1lcnJvclwiXG5pbXBvcnQgeyB3aXRoU2Vzc2lvbkF1dGggfSBmcm9tIFwiLi93aXRoLXNlc3Npb24tYXV0aFwiXG5pbXBvcnQgeyB3aXRoT3B0aW9uYWxTZXNzaW9uQXV0aCB9IGZyb20gXCIuL3dpdGgtb3B0aW9uYWwtc2Vzc2lvbi1hdXRoXCJcbmltcG9ydCB7IHdpdGhFcnJvckhhbmRsaW5nIH0gZnJvbSBcIi4vd2l0aC1lcnJvci1oYW5kbGluZ1wiXG5pbXBvcnQgeyB3aXRoUmVxdWVzdExvZ2dpbmcgfSBmcm9tIFwiLi93aXRoLXJlcXVlc3QtbG9nZ2luZ1wiXG5cbmV4cG9ydCBjb25zdCB3aXRoUm91dGVTcGVjID0gY3JlYXRlV2l0aFdpbnRlclNwZWMoe1xuICBhcGlOYW1lOiBcInRzY2lyY3VpdCBTbmlwcGV0cyBBUElcIixcbiAgcHJvZHVjdGlvblNlcnZlclVybDogXCJodHRwczovL3NuaXBwZXRzLnRzY2lyY3VpdC5jb20vYXBpXCIsXG4gIGJlZm9yZUF1dGhNaWRkbGV3YXJlOiBbd2l0aFJlcXVlc3RMb2dnaW5nLCB3aXRoRXJyb3JIYW5kbGluZywgd2l0aEN0eEVycm9yXSxcbiAgYXV0aE1pZGRsZXdhcmU6IHtcbiAgICBzZXNzaW9uOiB3aXRoU2Vzc2lvbkF1dGgsXG4gICAgb3B0aW9uYWxfc2Vzc2lvbjogd2l0aE9wdGlvbmFsU2Vzc2lvbkF1dGgsXG4gIH0sXG4gIGFmdGVyQXV0aE1pZGRsZXdhcmU6IFtcbiAgICB3aXRoRGIsXG4gICAgY3JlYXRlV2l0aERlZmF1bHRFeGNlcHRpb25IYW5kbGluZyh7XG4gICAgICBpbmNsdWRlU3RhY2tUcmFjZUluUmVzcG9uc2U6IHRydWUsXG4gICAgfSksXG4gIF0sXG59KVxuIiwgImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBob2lzdCB9IGZyb20gXCJ6dXN0YW5kLWhvaXN0XCJcbmltcG9ydCB7IGNyZWF0ZVN0b3JlIH0gZnJvbSBcInp1c3RhbmQvdmFuaWxsYVwiXG5cbmltcG9ydCB7IGNvbWJpbmUgfSBmcm9tIFwienVzdGFuZC9taWRkbGV3YXJlXCJcbmltcG9ydCB7XG4gIHR5cGUgQWNjb3VudCxcbiAgdHlwZSBBY2NvdW50UGFja2FnZSxcbiAgdHlwZSBKbGNwY2JPcmRlclN0YXRlLFxuICB0eXBlIEpsY3BjYk9yZGVyU3RlcFJ1bixcbiAgdHlwZSBMb2dpblBhZ2UsXG4gIHR5cGUgT3JkZXIsXG4gIHR5cGUgT3JkZXJGaWxlLFxuICBPcmRlclF1b3RlLFxuICB0eXBlIEJ1Z1JlcG9ydCxcbiAgYnVnUmVwb3J0U2NoZW1hLFxuICB0eXBlIEJ1Z1JlcG9ydEZpbGUsXG4gIGJ1Z1JlcG9ydEZpbGVTY2hlbWEsXG4gIHR5cGUgUGFja2FnZSxcbiAgdHlwZSBQYWNrYWdlRmlsZSxcbiAgdHlwZSBQYWNrYWdlUmVsZWFzZSxcbiAgcGFja2FnZVJlbGVhc2VTY2hlbWEsXG4gIHR5cGUgUGFja2FnZUJ1aWxkLFxuICBwYWNrYWdlQnVpbGRTY2hlbWEsXG4gIHR5cGUgQWlSZXZpZXcsXG4gIGFpUmV2aWV3U2NoZW1hLFxuICB0eXBlIERhdGFzaGVldCxcbiAgZGF0YXNoZWV0U2NoZW1hLFxuICB0eXBlIFNlc3Npb24sXG4gIHR5cGUgU25pcHBldCxcbiAgZGF0YWJhc2VTY2hlbWEsXG4gIHR5cGUgcGFja2FnZVNjaGVtYSxcbiAgdHlwZSBzbmlwcGV0U2NoZW1hLFxuICBPcmdhbml6YXRpb24sXG4gIE9yZ0FjY291bnQsXG4gIE9yZ0ludml0YXRpb24sXG4gIFVzZXJQZXJtaXNzaW9ucyxcbn0gZnJvbSBcIi4vc2NoZW1hLnRzXCJcbmltcG9ydCB7IHNlZWQgYXMgc2VlZEZuIH0gZnJvbSBcIi4vc2VlZFwiXG5pbXBvcnQgeyBnZW5lcmF0ZUZzU2hhIH0gZnJvbSBcIi4uL3BhY2thZ2VfZmlsZS9nZW5lcmF0ZS1mcy1zaGFcIlxuXG5leHBvcnQgY29uc3QgY3JlYXRlRGF0YWJhc2UgPSAoeyBzZWVkIH06IHsgc2VlZD86IGJvb2xlYW4gfSA9IHt9KSA9PiB7XG4gIGNvbnN0IGRiID0gaG9pc3QoY3JlYXRlU3RvcmUoaW5pdGlhbGl6ZXIpKVxuICBpZiAoc2VlZCkge1xuICAgIHNlZWRGbihkYilcbiAgfVxuICByZXR1cm4gZGJcbn1cblxuZXhwb3J0IHR5cGUgRGJDbGllbnQgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVEYXRhYmFzZT5cblxuY29uc3QgaW5pdGlhbGl6ZXIgPSBjb21iaW5lKGRhdGFiYXNlU2NoZW1hLnBhcnNlKHt9KSwgKHNldCwgZ2V0KSA9PiAoe1xuICBhZGRPcmRlcjogKG9yZGVyOiBPbWl0PE9yZGVyLCBcIm9yZGVyX2lkXCI+KTogT3JkZXIgPT4ge1xuICAgIGNvbnN0IG5ld09yZGVyID0geyBvcmRlcl9pZDogYG9yZGVyXyR7Z2V0KCkuaWRDb3VudGVyICsgMX1gLCAuLi5vcmRlciB9XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JkZXJzOiBbLi4uc3RhdGUub3JkZXJzLCBuZXdPcmRlcl0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdPcmRlclxuICB9LFxuICBnZXRPcmRlckJ5SWQ6IChvcmRlcklkOiBzdHJpbmcpOiBPcmRlciB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlcnMuZmluZCgob3JkZXIpID0+IG9yZGVyLm9yZGVyX2lkID09PSBvcmRlcklkKVxuICB9LFxuICBnZXRPcmRlckZpbGVzQnlPcmRlcklkOiAob3JkZXJJZDogc3RyaW5nKTogT3JkZXJGaWxlW10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUub3JkZXJGaWxlcy5maWx0ZXIoKGZpbGUpID0+IGZpbGUub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGFkZE9yZGVyUXVvdGU6ICh7XG4gICAgYWNjb3VudF9pZCxcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgdmVuZG9yX25hbWUsXG4gIH06IHtcbiAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ/OiBzdHJpbmdcbiAgICB2ZW5kb3JfbmFtZTogc3RyaW5nXG4gIH0pOiBzdHJpbmcgPT4ge1xuICAgIC8vIERldGFpbHMgZm9yIHRoZSBvcmRlciBxdW90ZSB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhlIGpvYiB3aXRoIHRoZSBjb3N0XG4gICAgY29uc3QgbmV3T3JkZXJRdW90ZSA9IHtcbiAgICAgIG9yZGVyX3F1b3RlX2lkOiBgb3JkZXJfcXVvdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICBhY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlX3JlbGVhc2VfaWQgPz8gbnVsbCxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGNvbXBsZXRlZF9hdDogbnVsbCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaGFzX2Vycm9yOiBmYWxzZSxcbiAgICAgIGlzX2NvbXBsZXRlZDogZmFsc2UsXG4gICAgICBpc19wcm9jZXNzaW5nOiB0cnVlLFxuICAgICAgdmVuZG9yX25hbWUsXG4gICAgICBxdW90ZWRfY29tcG9uZW50czogW10sXG4gICAgICBiYXJlX3BjYl9jb3N0OiAwLFxuICAgICAgc2hpcHBpbmdfb3B0aW9uczogW10sXG4gICAgICB0b3RhbF9jb3N0X3dpdGhvdXRfc2hpcHBpbmc6IDAsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyUXVvdGVzOiBbLi4uc3RhdGUub3JkZXJRdW90ZXMsIG5ld09yZGVyUXVvdGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJRdW90ZS5vcmRlcl9xdW90ZV9pZFxuICB9LFxuICBnZXRPcmRlclF1b3RlQnlJZDogKG9yZGVyUXVvdGVJZDogc3RyaW5nKTogT3JkZXJRdW90ZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlclF1b3Rlcy5maW5kKFxuICAgICAgKHF1b3RlKSA9PiBxdW90ZS5vcmRlcl9xdW90ZV9pZCA9PT0gb3JkZXJRdW90ZUlkLFxuICAgIClcbiAgfSxcbiAgZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQ6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICk6IEpsY3BjYk9yZGVyU3RhdGUgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuamxjcGNiT3JkZXJTdGF0ZS5maW5kKChzdGF0ZSkgPT4gc3RhdGUub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGdldEpsY3BjYk9yZGVyU3RlcFJ1bnNCeUpsY3BjYk9yZGVyU3RhdGVJZDogKFxuICAgIGpsY3BjYk9yZGVyU3RhdGVJZDogc3RyaW5nLFxuICApOiBKbGNwY2JPcmRlclN0ZXBSdW5bXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5qbGNwY2JPcmRlclN0ZXBSdW5zXG4gICAgICAuZmlsdGVyKChzdGVwUnVuKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBzdGF0ZS5qbGNwY2JPcmRlclN0YXRlLmZpbmQoXG4gICAgICAgICAgKHN0YXRlKSA9PlxuICAgICAgICAgICAgc3RhdGUuamxjcGNiX29yZGVyX3N0YXRlX2lkID09PSBzdGVwUnVuLmpsY3BjYl9vcmRlcl9zdGF0ZV9pZCxcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gb3JkZXJTdGF0ZT8ub3JkZXJfaWQgPT09IGpsY3BjYk9yZGVyU3RhdGVJZFxuICAgICAgfSlcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgICAgKVxuICB9LFxuICB1cGRhdGVPcmRlcjogKG9yZGVySWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxPcmRlcj4pID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgb3JkZXJzOiBzdGF0ZS5vcmRlcnMubWFwKChvcmRlcikgPT5cbiAgICAgICAgb3JkZXIub3JkZXJfaWQgPT09IG9yZGVySWQgPyB7IC4uLm9yZGVyLCAuLi51cGRhdGVzIH0gOiBvcmRlcixcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZEpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlclN0YXRlOiBPbWl0PEpsY3BjYk9yZGVyU3RhdGUsIFwiamxjcGNiX29yZGVyX3N0YXRlX2lkXCI+LFxuICApOiBKbGNwY2JPcmRlclN0YXRlID0+IHtcbiAgICBjb25zdCBuZXdPcmRlclN0YXRlID0ge1xuICAgICAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiBgb3JkZXJfc3RhdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlclN0YXRlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBqbGNwY2JPcmRlclN0YXRlOiBbLi4uc3RhdGUuamxjcGNiT3JkZXJTdGF0ZSwgbmV3T3JkZXJTdGF0ZV0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdPcmRlclN0YXRlXG4gIH0sXG4gIHVwZGF0ZUpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxKbGNwY2JPcmRlclN0YXRlPixcbiAgKSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGpsY3BjYk9yZGVyU3RhdGU6IHN0YXRlLmpsY3BjYk9yZGVyU3RhdGUubWFwKChvcmRlclN0YXRlKSA9PlxuICAgICAgICBvcmRlclN0YXRlLm9yZGVyX2lkID09PSBvcmRlcklkXG4gICAgICAgICAgPyB7IC4uLm9yZGVyU3RhdGUsIC4uLnVwZGF0ZXMgfVxuICAgICAgICAgIDogb3JkZXJTdGF0ZSxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZE9yZGVyRmlsZTogKG9yZGVyRmlsZTogT21pdDxPcmRlckZpbGUsIFwib3JkZXJfZmlsZV9pZFwiPik6IE9yZGVyRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3T3JkZXJGaWxlID0ge1xuICAgICAgb3JkZXJfZmlsZV9pZDogYG9yZGVyX2ZpbGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlckZpbGUsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyRmlsZXM6IFsuLi5zdGF0ZS5vcmRlckZpbGVzLCBuZXdPcmRlckZpbGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJGaWxlXG4gIH0sXG4gIGdldE9yZGVyRmlsZUJ5SWQ6IChvcmRlckZpbGVJZDogc3RyaW5nKTogT3JkZXJGaWxlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLm9yZGVyRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5vcmRlcl9maWxlX2lkID09PSBvcmRlckZpbGVJZClcbiAgfSxcbiAgYWRkQnVnUmVwb3J0OiAoe1xuICAgIHJlcG9ydGVyX2FjY291bnRfaWQsXG4gICAgdGV4dCxcbiAgICBpc19hdXRvX2RlbGV0ZWQsXG4gICAgZGVsZXRlX2F0LFxuICB9OiB7XG4gICAgcmVwb3J0ZXJfYWNjb3VudF9pZDogc3RyaW5nXG4gICAgdGV4dD86IHN0cmluZyB8IG51bGxcbiAgICBpc19hdXRvX2RlbGV0ZWQ/OiBib29sZWFuXG4gICAgZGVsZXRlX2F0Pzogc3RyaW5nIHwgbnVsbFxuICB9KTogQnVnUmVwb3J0ID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkSXNBdXRvRGVsZXRlZCA9IEJvb2xlYW4oaXNfYXV0b19kZWxldGVkKVxuICAgIGlmIChub3JtYWxpemVkSXNBdXRvRGVsZXRlZCAmJiAhZGVsZXRlX2F0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkZWxldGVfYXQgaXMgcmVxdWlyZWQgd2hlbiBpc19hdXRvX2RlbGV0ZWQgaXMgdHJ1ZVwiKVxuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVkRGVsZXRlQXQgPSBub3JtYWxpemVkSXNBdXRvRGVsZXRlZFxuICAgICAgPyAoZGVsZXRlX2F0ID8/IG51bGwpXG4gICAgICA6IG51bGxcblxuICAgIGNvbnN0IGJ1Z1JlcG9ydCA9IGJ1Z1JlcG9ydFNjaGVtYS5wYXJzZSh7XG4gICAgICBidWdfcmVwb3J0X2lkOiByYW5kb21VVUlEKCksXG4gICAgICByZXBvcnRlcl9hY2NvdW50X2lkLFxuICAgICAgdGV4dDogdGV4dCA/PyBudWxsLFxuICAgICAgaXNfYXV0b19kZWxldGVkOiBub3JtYWxpemVkSXNBdXRvRGVsZXRlZCxcbiAgICAgIGRlbGV0ZV9hdDogbm9ybWFsaXplZERlbGV0ZUF0LFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgZmlsZV9jb3VudDogMCxcbiAgICB9KVxuXG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGJ1Z1JlcG9ydHM6IFsuLi5zdGF0ZS5idWdSZXBvcnRzLCBidWdSZXBvcnRdLFxuICAgIH0pKVxuXG4gICAgcmV0dXJuIGJ1Z1JlcG9ydFxuICB9LFxuICBnZXRCdWdSZXBvcnRCeUlkOiAoYnVnUmVwb3J0SWQ6IHN0cmluZyk6IEJ1Z1JlcG9ydCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5idWdSZXBvcnRzLmZpbmQoXG4gICAgICAoYnVnUmVwb3J0KSA9PiBidWdSZXBvcnQuYnVnX3JlcG9ydF9pZCA9PT0gYnVnUmVwb3J0SWQsXG4gICAgKVxuICB9LFxuICBhZGRCdWdSZXBvcnRGaWxlOiAoe1xuICAgIGJ1Z19yZXBvcnRfaWQsXG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfbWltZXR5cGUsXG4gICAgaXNfdGV4dCxcbiAgICBjb250ZW50X3RleHQsXG4gICAgY29udGVudF9ieXRlcyxcbiAgfToge1xuICAgIGJ1Z19yZXBvcnRfaWQ6IHN0cmluZ1xuICAgIGZpbGVfcGF0aDogc3RyaW5nXG4gICAgY29udGVudF9taW1ldHlwZTogc3RyaW5nXG4gICAgaXNfdGV4dDogYm9vbGVhblxuICAgIGNvbnRlbnRfdGV4dDogc3RyaW5nIHwgbnVsbFxuICAgIGNvbnRlbnRfYnl0ZXM6IFVpbnQ4QXJyYXkgfCBudWxsXG4gIH0pOiBCdWdSZXBvcnRGaWxlID0+IHtcbiAgICBjb25zdCBidWdSZXBvcnRGaWxlID0gYnVnUmVwb3J0RmlsZVNjaGVtYS5wYXJzZSh7XG4gICAgICBidWdfcmVwb3J0X2ZpbGVfaWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgIGJ1Z19yZXBvcnRfaWQsXG4gICAgICBmaWxlX3BhdGgsXG4gICAgICBjb250ZW50X21pbWV0eXBlLFxuICAgICAgaXNfdGV4dCxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGNvbnRlbnRfdGV4dCxcbiAgICAgIGNvbnRlbnRfYnl0ZXMsXG4gICAgfSlcblxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBidWdSZXBvcnRGaWxlczogWy4uLnN0YXRlLmJ1Z1JlcG9ydEZpbGVzLCBidWdSZXBvcnRGaWxlXSxcbiAgICAgIGJ1Z1JlcG9ydHM6IHN0YXRlLmJ1Z1JlcG9ydHMubWFwKChidWdSZXBvcnQpID0+XG4gICAgICAgIGJ1Z1JlcG9ydC5idWdfcmVwb3J0X2lkID09PSBidWdfcmVwb3J0X2lkXG4gICAgICAgICAgPyB7IC4uLmJ1Z1JlcG9ydCwgZmlsZV9jb3VudDogYnVnUmVwb3J0LmZpbGVfY291bnQgKyAxIH1cbiAgICAgICAgICA6IGJ1Z1JlcG9ydCxcbiAgICAgICksXG4gICAgfSkpXG5cbiAgICByZXR1cm4gYnVnUmVwb3J0RmlsZVxuICB9LFxuICBnZXRCdWdSZXBvcnRGaWxlc0J5QnVnUmVwb3J0SWQ6IChidWdSZXBvcnRJZDogc3RyaW5nKTogQnVnUmVwb3J0RmlsZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmJ1Z1JlcG9ydEZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PiBmaWxlLmJ1Z19yZXBvcnRfaWQgPT09IGJ1Z1JlcG9ydElkLFxuICAgIClcbiAgfSxcbiAgYWRkQWNjb3VudDogKFxuICAgIGFjY291bnQ6IE9taXQ8XG4gICAgICBBY2NvdW50LFxuICAgICAgXCJhY2NvdW50X2lkXCIgfCBcImlzX3RzY2lyY3VpdF9zdGFmZlwiIHwgXCJjcmVhdGVkX2F0XCIgfCBcInBlcnNvbmFsX29yZ19pZFwiXG4gICAgPiAmXG4gICAgICBQYXJ0aWFsPFxuICAgICAgICBQaWNrPEFjY291bnQsIFwiYWNjb3VudF9pZFwiIHwgXCJpc190c2NpcmN1aXRfc3RhZmZcIiB8IFwicGVyc29uYWxfb3JnX2lkXCI+XG4gICAgICA+LFxuICApID0+IHtcbiAgICBjb25zdCBuZXdBY2NvdW50ID0ge1xuICAgICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkIHx8IGBhY2NvdW50XyR7Z2V0KCkuaWRDb3VudGVyICsgMX1gLFxuICAgICAgLi4uYWNjb3VudCxcbiAgICAgIGlzX3RzY2lyY3VpdF9zdGFmZjogQm9vbGVhbihhY2NvdW50LmlzX3RzY2lyY3VpdF9zdGFmZiksXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLFxuICAgICAgcGVyc29uYWxfb3JnX2lkOiBhY2NvdW50LnBlcnNvbmFsX29yZ19pZCB8fCBgcG9yZ18ke2dldCgpLmlkQ291bnRlciArIDF9YCxcbiAgICB9XG5cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50czogWy4uLnN0YXRlLmFjY291bnRzLCBuZXdBY2NvdW50XSxcbiAgICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gbmV3QWNjb3VudFxuICB9LFxuICBhZGRBY2NvdW50UGFja2FnZTogKFxuICAgIGFjY291bnRQYWNrYWdlOiBPbWl0PEFjY291bnRQYWNrYWdlLCBcImFjY291bnRfcGFja2FnZV9pZFwiPixcbiAgKTogQWNjb3VudFBhY2thZ2UgPT4ge1xuICAgIGNvbnN0IG5ld0FjY291bnRQYWNrYWdlID0ge1xuICAgICAgYWNjb3VudF9wYWNrYWdlX2lkOiBgYXBfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5hY2NvdW50UGFja2FnZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjb3VudFBhY2thZ2VzOiBbLi4uc3RhdGUuYWNjb3VudFBhY2thZ2VzLCBuZXdBY2NvdW50UGFja2FnZV0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdBY2NvdW50UGFja2FnZVxuICB9LFxuICBnZXRBY2NvdW50UGFja2FnZUJ5SWQ6IChcbiAgICBhY2NvdW50UGFja2FnZUlkOiBzdHJpbmcsXG4gICk6IEFjY291bnRQYWNrYWdlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgICAgKGFwKSA9PiBhcC5hY2NvdW50X3BhY2thZ2VfaWQgPT09IGFjY291bnRQYWNrYWdlSWQsXG4gICAgKVxuICB9LFxuICB1cGRhdGVBY2NvdW50UGFja2FnZTogKFxuICAgIGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPEFjY291bnRQYWNrYWdlPixcbiAgKTogdm9pZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGFjY291bnRQYWNrYWdlczogc3RhdGUuYWNjb3VudFBhY2thZ2VzLm1hcCgoYXApID0+XG4gICAgICAgIGFwLmFjY291bnRfcGFja2FnZV9pZCA9PT0gYWNjb3VudFBhY2thZ2VJZCA/IHsgLi4uYXAsIC4uLnVwZGF0ZXMgfSA6IGFwLFxuICAgICAgKSxcbiAgICB9KSlcbiAgfSxcbiAgZGVsZXRlQWNjb3VudFBhY2thZ2U6IChhY2NvdW50UGFja2FnZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAoYXApID0+IGFwLmFjY291bnRfcGFja2FnZV9pZCA9PT0gYWNjb3VudFBhY2thZ2VJZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc3RhdGUuYWNjb3VudFBhY2thZ2VzLnNwbGljZShpbmRleCwgMSlcbiAgICAgICAgZGVsZXRlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdGF0ZVxuICAgIH0pXG4gICAgcmV0dXJuIGRlbGV0ZWRcbiAgfSxcbiAgYWRkU25pcHBldDogKFxuICAgIHNuaXBwZXQ6IE9taXQ8XG4gICAgICB6LmlucHV0PHR5cGVvZiBzbmlwcGV0U2NoZW1hPixcbiAgICAgIFwic25pcHBldF9pZFwiIHwgXCJwYWNrYWdlX3JlbGVhc2VfaWRcIlxuICAgID4gJiB7XG4gICAgICBjcmVhdG9yX2FjY291bnRfaWQ/OiBzdHJpbmdcbiAgICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZT86IHN0cmluZ1xuICAgICAgYnJhbmNoX25hbWU/OiBzdHJpbmdcbiAgICAgIGNvbW1pdF9tZXNzYWdlPzogc3RyaW5nXG4gICAgICBjb21taXRfYXV0aG9yPzogc3RyaW5nXG4gICAgfSxcbiAgKTogU25pcHBldCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKVxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgICBjb25zdCBuZXdTdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgbmV4dElkID0gbmV3U3RhdGUuaWRDb3VudGVyICsgMVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIHRoYXQgd2lsbCBzZXJ2ZSBhcyBvdXIgc25pcHBldFxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSB7XG4gICAgICBwYWNrYWdlX2lkOiBgcGtnXyR7bmV4dElkfWAsXG4gICAgICBjcmVhdG9yX2FjY291bnRfaWQ6IHNuaXBwZXQuY3JlYXRvcl9hY2NvdW50X2lkID8/IHNuaXBwZXQub3duZXJfbmFtZSwgLy8gVXNpbmcgb3duZXJfbmFtZSBhcyBhY2NvdW50X2lkIHNpbmNlIHdlIGRvbid0IGhhdmUgY29udGV4dFxuICAgICAgb3duZXJfb3JnX2lkOiBcIlwiLCAvLyBFbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiBudWxsIHRvIG1hdGNoIHR5cGVcbiAgICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogc25pcHBldC5vd25lcl9uYW1lLFxuICAgICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBzbmlwcGV0LmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBuYW1lOiBgJHtzbmlwcGV0Lm93bmVyX25hbWV9LyR7c25pcHBldC51bnNjb3BlZF9uYW1lfWAsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBzbmlwcGV0LnVuc2NvcGVkX25hbWUsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgbGljZW5zZTogbnVsbCxcbiAgICAgIHdlYnNpdGU6IG51bGwsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogc25pcHBldC5naXRodWJfcmVwb19mdWxsX25hbWUgfHwgbnVsbCxcbiAgICAgIGFpX2Rlc2NyaXB0aW9uOiBcInBsYWNlaG9sZGVyIGFpIGRlc2NyaXB0aW9uXCIsXG4gICAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwicGxhY2Vob2xkZXIgYWkgdXNhZ2UgaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICBpc19zbmlwcGV0OiB0cnVlLFxuICAgICAgaXNfYm9hcmQ6IHNuaXBwZXQuc25pcHBldF90eXBlID09PSBcImJvYXJkXCIsXG4gICAgICBpc19wYWNrYWdlOiBzbmlwcGV0LnNuaXBwZXRfdHlwZSA9PT0gXCJwYWNrYWdlXCIsXG4gICAgICBpc19tb2RlbDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwibW9kZWxcIixcbiAgICAgIGlzX2Zvb3RwcmludDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwiZm9vdHByaW50XCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXQuc25pcHBldF90eXBlLFxuICAgICAgaXNfcHJpdmF0ZTogZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogZmFsc2UsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBgcGFja2FnZV9yZWxlYXNlXyR7bmV4dElkfWAsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2ZzX3NoYTogbnVsbCxcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgcGFja2FnZSByZWxlYXNlXG4gICAgY29uc3QgbmV3UGFja2FnZVJlbGVhc2UgPSBwYWNrYWdlUmVsZWFzZVNjaGVtYS5wYXJzZSh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGBwYWNrYWdlX3JlbGVhc2VfJHtuZXh0SWR9YCxcbiAgICAgIHBhY2thZ2VfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHVwZGF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgYnJhbmNoX25hbWU6IHNuaXBwZXQuYnJhbmNoX25hbWUsXG4gICAgICBjb21taXRfbWVzc2FnZTogc25pcHBldC5jb21taXRfbWVzc2FnZSxcbiAgICAgIGNvbW1pdF9hdXRob3I6IHNuaXBwZXQuY29tbWl0X2F1dGhvcixcbiAgICAgIGhhc190cmFuc3BpbGVkOiB0cnVlLFxuICAgICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogbnVsbCxcbiAgICAgIC4uLihzbmlwcGV0Lm5hbWUgPT0gXCJ0ZXN0dXNlci9teS10ZXN0LWJvYXJkXCJcbiAgICAgICAgPyB7IGlzX3ByX3ByZXZpZXc6IHRydWUsIGdpdGh1Yl9wcl9udW1iZXI6IDY5IH1cbiAgICAgICAgOiB7fSksXG4gICAgfSlcblxuICAgIC8vIEFkZCBhbGwgdGhlIGZpbGVzXG4gICAgY29uc3QgcGFja2FnZUZpbGVzOiBQYWNrYWdlRmlsZVtdID0gW11cbiAgICBsZXQgZmlsZUlkQ291bnRlciA9IG5leHRJZFxuXG4gICAgLy8gQWRkIG1haW4gY29kZSBmaWxlXG4gICAgcGFja2FnZUZpbGVzLnB1c2goe1xuICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7ZmlsZUlkQ291bnRlcisrfWAsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIGZpbGVfcGF0aDogXCJpbmRleC50c3hcIixcbiAgICAgIGNvbnRlbnRfdGV4dDogc25pcHBldC5jb2RlIHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICB9KVxuXG4gICAgLy8gQWRkIERUUyBmaWxlIGlmIHByb3ZpZGVkXG4gICAgaWYgKHNuaXBwZXQuZHRzKSB7XG4gICAgICBwYWNrYWdlRmlsZXMucHVzaCh7XG4gICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke2ZpbGVJZENvdW50ZXIrK31gLFxuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgY29udGVudF90ZXh0OiBzbmlwcGV0LmR0cyxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIEFkZCBjb21waWxlZCBKUyBpZiBwcm92aWRlZFxuICAgIGlmIChzbmlwcGV0LmNvbXBpbGVkX2pzKSB7XG4gICAgICBwYWNrYWdlRmlsZXMucHVzaCh7XG4gICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke2ZpbGVJZENvdW50ZXIrK31gLFxuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogc25pcHBldC5jb21waWxlZF9qcyxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIEFkZCBjaXJjdWl0IEpTT04gaWYgcHJvdmlkZWRcbiAgICBpZiAoc25pcHBldC5jaXJjdWl0X2pzb24gJiYgc25pcHBldC5jaXJjdWl0X2pzb24ubGVuZ3RoID4gMCkge1xuICAgICAgcGFja2FnZUZpbGVzLnB1c2goe1xuICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtmaWxlSWRDb3VudGVyKyt9YCxcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICAgY29udGVudF90ZXh0OiBKU09OLnN0cmluZ2lmeShzbmlwcGV0LmNpcmN1aXRfanNvbiksXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIGRhdGFiYXNlIHN0YXRlIGF0b21pY2FsbHlcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBwYWNrYWdlczogWy4uLnN0YXRlLnBhY2thZ2VzLCBuZXdQYWNrYWdlXSxcbiAgICAgIHBhY2thZ2VSZWxlYXNlczogWy4uLnN0YXRlLnBhY2thZ2VSZWxlYXNlcywgbmV3UGFja2FnZVJlbGVhc2VdLFxuICAgICAgcGFja2FnZUZpbGVzOiBbLi4uc3RhdGUucGFja2FnZUZpbGVzLCAuLi5wYWNrYWdlRmlsZXNdLFxuICAgICAgaWRDb3VudGVyOiBmaWxlSWRDb3VudGVyLFxuICAgIH0pKVxuXG4gICAgLy8gVXBkYXRlIGZzX3NoYSBmb3IgdGhlIG5ldyBwYWNrYWdlIHJlbGVhc2VcbiAgICBjb25zdCBkYlN0YXRlID0gZ2V0KClcbiAgICBjb25zdCByZWxlYXNlRmlsZXMgPSBkYlN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAocGYpID0+IHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcbiAgICBjb25zdCBmc1NoYSA9IGdlbmVyYXRlRnNTaGEocmVsZWFzZUZpbGVzKVxuXG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgcGFja2FnZVJlbGVhc2VzOiBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMubWFwKChwcikgPT5cbiAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgICAgICAgICA/IHsgLi4ucHIsIGZzX3NoYTogZnNTaGEgfVxuICAgICAgICAgIDogcHIsXG4gICAgICApLFxuICAgICAgcGFja2FnZXM6IHN0YXRlLnBhY2thZ2VzLm1hcCgocGtnKSA9PlxuICAgICAgICBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9PT0gbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gICAgICAgICAgPyB7IC4uLnBrZywgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9mc19zaGE6IGZzU2hhIH1cbiAgICAgICAgICA6IHBrZyxcbiAgICAgICksXG4gICAgfSkpXG5cbiAgICAvLyBSZXR1cm4gaW4gdGhlIHNhbWUgZm9ybWF0IGFzIGNyZWF0ZSBlbmRwb2ludFxuICAgIHJldHVybiB7XG4gICAgICBzbmlwcGV0X2lkOiBuZXdQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIG5hbWU6IG5ld1BhY2thZ2UubmFtZSxcbiAgICAgIHVuc2NvcGVkX25hbWU6IG5ld1BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG93bmVyX25hbWU6IHNuaXBwZXQub3duZXJfbmFtZSxcbiAgICAgIGNvZGU6IHNuaXBwZXQuY29kZSB8fCBcIlwiLFxuICAgICAgZHRzOiBzbmlwcGV0LmR0cyxcbiAgICAgIGNvbXBpbGVkX2pzOiBzbmlwcGV0LmNvbXBpbGVkX2pzLFxuICAgICAgc3Rhcl9jb3VudDogMCxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXQuc25pcHBldF90eXBlLFxuICAgICAgY2lyY3VpdF9qc29uOiBzbmlwcGV0LmNpcmN1aXRfanNvbiB8fCBbXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBzbmlwcGV0LmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGlzX3ByaXZhdGU6IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiB0cnVlLFxuICAgICAgaXNfdW5saXN0ZWQ6IGZhbHNlLFxuICAgIH1cbiAgfSxcbiAgZ2V0TGF0ZXN0U25pcHBldHM6IChsaW1pdDogbnVtYmVyKTogU25pcHBldFtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG5cbiAgICAvLyBHZXQgYWxsIHBhY2thZ2VzIHRoYXQgYXJlIHNuaXBwZXRzXG4gICAgY29uc3Qgc25pcHBldFBhY2thZ2VzID0gc3RhdGUucGFja2FnZXNcbiAgICAgIC5maWx0ZXIoKHBrZykgPT4gcGtnLmlzX3NuaXBwZXQgPT09IHRydWUpXG4gICAgICAubWFwKChwa2cpID0+IHtcbiAgICAgICAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICAgICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgICAocHIpID0+XG4gICAgICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgICAgICBwci5pc19sYXRlc3QgPT09IHRydWUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkgcmV0dXJuIG51bGxcblxuICAgICAgICAvLyBHZXQgdGhlIHBhY2thZ2UgZmlsZXNcbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICAvLyBHZXQgdGhlIGNvZGUgZmlsZVxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHN0YXJyZWRcbiAgICAgICAgY29uc3QgaXNTdGFycmVkID0gc3RhdGUuYWNjb3VudFBhY2thZ2VzLnNvbWUoXG4gICAgICAgICAgKGFwKSA9PiBhcC5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBhcC5pc19zdGFycmVkLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gQ29udmVydCB0byBzbmlwcGV0IGZvcm1hdFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHBrZy5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgICAgIHNuaXBwZXRfdHlwZTogcGtnLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGR0czpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gICAgICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgICBzdGFyX2NvdW50OiBwa2cuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgICAgIGlzX3N0YXJyZWQ6IGlzU3RhcnJlZCxcbiAgICAgICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICAgIGNpcmN1aXRfanNvbjpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlc1xuICAgICAgICAgICAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIilcbiAgICAgICAgICAgICAgLmZsYXRNYXAoKGZpbGUpID0+IEpTT04ucGFyc2UoZmlsZS5jb250ZW50X3RleHQgfHwgXCJbXVwiKSkgfHwgW10sXG4gICAgICAgICAgaXNfcHJpdmF0ZTogcGtnLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICAgICAgaXNfcHVibGljOiBwa2cuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICAgICAgaXNfdW5saXN0ZWQ6IHBrZy5pc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChzbmlwcGV0KTogc25pcHBldCBpcyBOb25OdWxsYWJsZTx0eXBlb2Ygc25pcHBldD4gPT4gc25pcHBldCAhPT0gbnVsbCxcbiAgICAgIClcbiAgICAgIC5tYXAoKHNuaXBwZXQpID0+ICh7XG4gICAgICAgIC4uLnNuaXBwZXQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBzbmlwcGV0LmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICB9KSlcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgICAgKVxuICAgICAgLnNsaWNlKDAsIGxpbWl0KVxuXG4gICAgcmV0dXJuIHNuaXBwZXRQYWNrYWdlc1xuICB9LFxuICBnZXRUcmVuZGluZ1NuaXBwZXRzOiAobGltaXQ6IG51bWJlciwgc2luY2U6IHN0cmluZyk6IFNuaXBwZXRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHNpbmNlRGF0ZSA9IG5ldyBEYXRlKHNpbmNlKS5nZXRUaW1lKClcblxuICAgIC8vIEdldCBzdGFyIGNvdW50cyB3aXRoaW4gdGltZSBwZXJpb2RcbiAgICBjb25zdCByZWNlbnRTdGFycyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KClcbiAgICBzdGF0ZS5hY2NvdW50UGFja2FnZXMuZm9yRWFjaCgoYXApID0+IHtcbiAgICAgIGlmIChhcC5pc19zdGFycmVkICYmIG5ldyBEYXRlKGFwLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSA+PSBzaW5jZURhdGUpIHtcbiAgICAgICAgcmVjZW50U3RhcnMuc2V0KFxuICAgICAgICAgIGFwLnBhY2thZ2VfaWQsXG4gICAgICAgICAgKHJlY2VudFN0YXJzLmdldChhcC5wYWNrYWdlX2lkKSB8fCAwKSArIDEsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgY29uc3QgcGFja2FnZXNXaXRoU3RhckNvdW50ID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgLm1hcCgocGtnKSA9PiAoe1xuICAgICAgICAuLi5wa2csXG4gICAgICAgIHN0YXJfY291bnQ6IHJlY2VudFN0YXJzLmdldChwa2cucGFja2FnZV9pZCkgfHwgMCxcbiAgICAgIH0pKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIuc3Rhcl9jb3VudCAtIGEuc3Rhcl9jb3VudClcbiAgICAgIC5zbGljZSgwLCBsaW1pdClcblxuICAgIGNvbnN0IHRyZW5kaW5nU25pcHBldHMgPSBwYWNrYWdlc1dpdGhTdGFyQ291bnRcbiAgICAgIC5tYXAoKHBrZykgPT4ge1xuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT5cbiAgICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG5cbiAgICAgICAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgICAgY29kZTogY29kZUZpbGUgPyBjb2RlRmlsZS5jb250ZW50X3RleHQgfHwgXCJcIiA6IFwiXCIsXG4gICAgICAgICAgY3JlYXRlZF9hdDogcGtnLmNyZWF0ZWRfYXQsXG4gICAgICAgICAgdXBkYXRlZF9hdDogcGtnLnVwZGF0ZWRfYXQsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuaXNfc25pcHBldCA/IFwiYm9hcmRcIiA6IFwicGFja2FnZVwiLFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50LFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoc25pcHBldCkgPT4gc25pcHBldCAhPT0gbnVsbClcblxuICAgIHJldHVybiB0cmVuZGluZ1NuaXBwZXRzIGFzIFNuaXBwZXRbXVxuICB9LFxuICBnZXRQYWNrYWdlc0J5QXV0aG9yOiAoYXV0aG9yTmFtZT86IHN0cmluZyk6IFBhY2thZ2VbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHBhY2thZ2VzID0gYXV0aG9yTmFtZVxuICAgICAgPyBzdGF0ZS5wYWNrYWdlcy5maWx0ZXIoKHBrZykgPT4gcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gYXV0aG9yTmFtZSlcbiAgICAgIDogc3RhdGUucGFja2FnZXNcbiAgICByZXR1cm4gcGFja2FnZXMubWFwKChwa2cpID0+ICh7XG4gICAgICAuLi5wa2csXG4gICAgICBzdGFyX2NvdW50OiBzdGF0ZS5hY2NvdW50UGFja2FnZXMuZmlsdGVyKFxuICAgICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICApLmxlbmd0aCxcbiAgICB9KSlcbiAgfSxcbiAgZ2V0U25pcHBldEJ5QXV0aG9yQW5kTmFtZTogKFxuICAgIGF1dGhvck5hbWU6IHN0cmluZyxcbiAgICBzbmlwcGV0TmFtZTogc3RyaW5nLFxuICApOiBTbmlwcGV0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgLy8gTG9vayBmb3IgdGhlIHBhY2thZ2UgdGhhdCByZXByZXNlbnRzIHRoaXMgc25pcHBldCB3aXRoIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmdcbiAgICBjb25zdCBfcGFja2FnZSA9IHN0YXRlLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lPy50b0xvd2VyQ2FzZSgpID09PSBhdXRob3JOYW1lLnRvTG93ZXJDYXNlKCkgJiZcbiAgICAgICAgcGtnLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gc25pcHBldE5hbWUudG9Mb3dlckNhc2UoKSAmJlxuICAgICAgICBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSxcbiAgICApXG4gICAgaWYgKCFfcGFja2FnZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgZmlsZXNcbiAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBjb2RlIGZpbGUgKGluZGV4LnRzIG9yIGluZGV4LnRzeClcbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuXG4gICAgLy8gTWFwIHRoZSBwYWNrYWdlIGRhdGEgdG8gbWF0Y2ggdGhlIFNuaXBwZXQgc3RydWN0dXJlXG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IF9wYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IF9wYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiBfcGFja2FnZS5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogX3BhY2thZ2UuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogX3BhY2thZ2Uuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBfcGFja2FnZS5jcmVhdGVkX2F0LFxuICAgICAgdXBkYXRlZF9hdDogX3BhY2thZ2UudXBkYXRlZF9hdCxcbiAgICAgIHN0YXJfY291bnQ6IF9wYWNrYWdlLnN0YXJfY291bnQgfHwgMCxcbiAgICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogX3BhY2thZ2UubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgY2lyY3VpdF9qc29uOiBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICAgICAgKT8uY29udGVudF90ZXh0XG4gICAgICAgID8gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJbXVwiLFxuICAgICAgICAgIClcbiAgICAgICAgOiBbXSxcbiAgICAgIGlzX3ByaXZhdGU6IF9wYWNrYWdlLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IF9wYWNrYWdlLmlzX3B1YmxpYyB8fCB0cnVlLFxuICAgICAgaXNfdW5saXN0ZWQ6IF9wYWNrYWdlLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgIH1cbiAgfSxcbiAgdXBkYXRlU25pcHBldDogKFxuICAgIHNuaXBwZXRJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8U25pcHBldD4sXG4gICk6IFNuaXBwZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VJbmRleCA9IHN0YXRlLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAgICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRJZCAmJiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSxcbiAgICAgIClcbiAgICAgIGlmIChwYWNrYWdlSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpXG4gICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCkudG9JU09TdHJpbmcoKVxuXG4gICAgICAvLyBVcGRhdGUgdGhlIHBhY2thZ2VcbiAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgIGNvbnN0IGN1cnJlbnRQYWNrYWdlID0gdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF1cbiAgICAgIHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdID0ge1xuICAgICAgICAuLi5jdXJyZW50UGFja2FnZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHVwZGF0ZXMuZGVzY3JpcHRpb24gPz8gY3VycmVudFBhY2thZ2UuZGVzY3JpcHRpb24sXG4gICAgICAgIGlzX3ByaXZhdGU6IHVwZGF0ZXMuaXNfcHJpdmF0ZSA/PyBjdXJyZW50UGFja2FnZS5pc19wcml2YXRlLFxuICAgICAgICBpc19wdWJsaWM6XG4gICAgICAgICAgdXBkYXRlcy5pc19wcml2YXRlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gIXVwZGF0ZXMuaXNfcHJpdmF0ZVxuICAgICAgICAgICAgOiBjdXJyZW50UGFja2FnZS5pc19wdWJsaWMsXG4gICAgICAgIGlzX3VubGlzdGVkOiB1cGRhdGVzLmlzX3ByaXZhdGVcbiAgICAgICAgICA/IHRydWVcbiAgICAgICAgICA6ICh1cGRhdGVzLmlzX3VubGlzdGVkID8/IGN1cnJlbnRQYWNrYWdlLmlzX3VubGlzdGVkKSxcbiAgICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9XG5cbiAgICAgIC8vIEdldCB0aGUgY3VycmVudCBwYWNrYWdlIHJlbGVhc2VcbiAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcikgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IGN1cnJlbnRQYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICApXG4gICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gc3RhdGVcblxuICAgICAgLy8gVXBkYXRlIHBhY2thZ2UgZmlsZXMgaWYgY29kZS9kdHMvanMgY2hhbmdlZFxuICAgICAgY29uc3QgdXBkYXRlZEZpbGVzID0gWy4uLnN0YXRlLnBhY2thZ2VGaWxlc11cbiAgICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHVwZGF0ZWRGaWxlcy5maWx0ZXIoXG4gICAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgKVxuXG4gICAgICBpZiAodXBkYXRlcy5jb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgY29kZUZpbGVJbmRleCA9IHBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiLFxuICAgICAgICApXG4gICAgICAgIGlmIChjb2RlRmlsZUluZGV4ID49IDApIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXNbY29kZUZpbGVJbmRleF0gPSB7XG4gICAgICAgICAgICAuLi5wYWNrYWdlRmlsZXNbY29kZUZpbGVJbmRleF0sXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29kZSxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXMucHVzaCh7XG4gICAgICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHt0aW1lc3RhbXB9YCxcbiAgICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICAgICAgZmlsZV9wYXRoOiBcImluZGV4LnRzeFwiLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmNvZGUsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh1cGRhdGVzLmR0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGR0c0ZpbGVJbmRleCA9IHBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgKVxuICAgICAgICBpZiAoZHRzRmlsZUluZGV4ID49IDApIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXNbZHRzRmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tkdHNGaWxlSW5kZXhdLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmR0cyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXMucHVzaCh7XG4gICAgICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHt0aW1lc3RhbXB9YCxcbiAgICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5kdHMsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh1cGRhdGVzLmNvbXBpbGVkX2pzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QganNGaWxlSW5kZXggPSBwYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICApXG4gICAgICAgIGlmIChqc0ZpbGVJbmRleCA+PSAwKSB7XG4gICAgICAgICAgdXBkYXRlZEZpbGVzW2pzRmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tqc0ZpbGVJbmRleF0sXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29tcGlsZWRfanMsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBkYXRlZEZpbGVzLnB1c2goe1xuICAgICAgICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7dGltZXN0YW1wfWAsXG4gICAgICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmNvbXBpbGVkX2pzLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgY2lyY3VpdCBKU09OIGlmIHByb3ZpZGVkXG4gICAgICBpZiAodXBkYXRlcy5jaXJjdWl0X2pzb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBjaXJjdWl0RmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGNpcmN1aXRGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tjaXJjdWl0RmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tjaXJjdWl0RmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogSlNPTi5zdHJpbmdpZnkodXBkYXRlcy5jaXJjdWl0X2pzb24pLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZXR1cm4gdXBkYXRlZCBzdGF0ZVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBhY2thZ2VzOiB1cGRhdGVkUGFja2FnZXMsXG4gICAgICAgIHBhY2thZ2VGaWxlczogdXBkYXRlZEZpbGVzLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBHZXQgdGhlIHVwZGF0ZWQgc25pcHBldCB0byByZXR1cm5cbiAgICBjb25zdCB1cGRhdGVkUGFja2FnZSA9IGdldCgpLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkLFxuICAgIClcbiAgICBpZiAoIXVwZGF0ZWRQYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGdldCgpLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHVwZGF0ZWRQYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGdldCgpLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG5cbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuICAgIGNvbnN0IGR0c0ZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgKVxuICAgIGNvbnN0IGpzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgKVxuICAgIGNvbnN0IGNpcmN1aXRGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgKVxuXG4gICAgLy8gUmV0dXJuIGluIHNuaXBwZXQgZm9ybWF0XG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IHVwZGF0ZWRQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHVwZGF0ZWRQYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IHVwZGF0ZWRQYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiB1cGRhdGVkUGFja2FnZS5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogdXBkYXRlZFBhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogdXBkYXRlZFBhY2thZ2UuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogdXBkYXRlZFBhY2thZ2Uuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czogZHRzRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjb21waWxlZF9qczoganNGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IHVwZGF0ZWRQYWNrYWdlLmNyZWF0ZWRfYXQsXG4gICAgICB1cGRhdGVkX2F0OiB1cGRhdGVkUGFja2FnZS51cGRhdGVkX2F0LFxuICAgICAgc3Rhcl9jb3VudDogdXBkYXRlZFBhY2thZ2Uuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiB1cGRhdGVkUGFja2FnZS5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICBjaXJjdWl0X2pzb246IGNpcmN1aXRGaWxlXG4gICAgICAgID8gSlNPTi5wYXJzZShjaXJjdWl0RmlsZS5jb250ZW50X3RleHQgfHwgXCJbXVwiKVxuICAgICAgICA6IFtdLFxuICAgICAgaXNfcHJpdmF0ZTogdXBkYXRlZFBhY2thZ2UuaXNfcHJpdmF0ZSA/PyBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogdXBkYXRlZFBhY2thZ2UuaXNfcHVibGljID8/IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogdXBkYXRlZFBhY2thZ2UuaXNfdW5saXN0ZWQgPz8gZmFsc2UsXG4gICAgfVxuICB9LFxuICBnZXRTbmlwcGV0QnlJZDogKFxuICAgIHNuaXBwZXRJZDogc3RyaW5nLFxuICAgIGF1dGg/OiB7IGdpdGh1Yl91c2VybmFtZTogc3RyaW5nIH0sXG4gICk6IFNuaXBwZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICAvLyBMb29rIGZvciB0aGUgcGFja2FnZSB0aGF0IHJlcHJlc2VudHMgdGhpcyBzbmlwcGV0XG4gICAgY29uc3QgX3BhY2thZ2UgPSBzdGF0ZS5wYWNrYWdlcy5maW5kKFxuICAgICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRJZCAmJiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSxcbiAgICApXG4gICAgaWYgKCFfcGFja2FnZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgLy8gSGFuZGxlIHZpc2liaWxpdHkgYmFzZWQgb24gYXV0aGVudGljYXRpb25cbiAgICBpZiAoIWF1dGgpIHtcbiAgICAgIC8vIFVuYXV0aGVudGljYXRlZCB1c2VycyBjYW4gb25seSBzZWUgcHVibGljIGFuZCBub24tdW5saXN0ZWQgcGFja2FnZXNcbiAgICAgIGlmICghX3BhY2thZ2UuaXNfcHVibGljIHx8IF9wYWNrYWdlLmlzX3VubGlzdGVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXV0aGVudGljYXRlZCB1c2VycyBjYW4gc2VlOlxuICAgICAgLy8gMS4gUHVibGljIGFuZCBub24tdW5saXN0ZWQgcGFja2FnZXNcbiAgICAgIC8vIDIuIFRoZWlyIG93biB1bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgLy8gMy4gVGhlaXIgb3duIHByaXZhdGUgcGFja2FnZXNcbiAgICAgIGNvbnN0IGlzT3duUGFja2FnZSA9XG4gICAgICAgIF9wYWNrYWdlLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gYXV0aD8uZ2l0aHViX3VzZXJuYW1lXG4gICAgICBjb25zdCBpc1B1YmxpY0FuZE5vdFVubGlzdGVkID0gX3BhY2thZ2UuaXNfcHVibGljICYmICFfcGFja2FnZS5pc191bmxpc3RlZFxuICAgICAgY29uc3QgaXNPd25Vbmxpc3RlZCA9IF9wYWNrYWdlLmlzX3VubGlzdGVkICYmIGlzT3duUGFja2FnZVxuICAgICAgY29uc3QgaXNPd25Qcml2YXRlID0gX3BhY2thZ2UuaXNfcHJpdmF0ZSAmJiBpc093blBhY2thZ2VcblxuICAgICAgaWYgKCFpc1B1YmxpY0FuZE5vdFVubGlzdGVkICYmICFpc093blVubGlzdGVkICYmICFpc093blByaXZhdGUpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdldCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcikgPT5cbiAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBfcGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlIGZpbGVzXG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcblxuICAgIC8vIEdldCB0aGUgY29kZSBmaWxlIChpbmRleC50cyBvciBpbmRleC50c3gpXG4gICAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiLFxuICAgIClcblxuICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHN0YXJyZWQgdGhpcyBzbmlwcGV0XG4gICAgY29uc3QgaXNTdGFycmVkID0gc3RhdGUuYWNjb3VudFBhY2thZ2VzLnNvbWUoXG4gICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRJZCAmJiBhcC5pc19zdGFycmVkLFxuICAgIClcblxuICAgIC8vIE1hcCB0aGUgcGFja2FnZSBkYXRhIHRvIG1hdGNoIHRoZSBTbmlwcGV0IHN0cnVjdHVyZVxuICAgIHJldHVybiB7XG4gICAgICBzbmlwcGV0X2lkOiBfcGFja2FnZS5wYWNrYWdlX2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBfcGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IFwiXCIsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBfcGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgICAgbmFtZTogX3BhY2thZ2UubmFtZSxcbiAgICAgIG93bmVyX25hbWU6IF9wYWNrYWdlLm93bmVyX2dpdGh1Yl91c2VybmFtZSB8fCBcIlwiLFxuICAgICAgZGVzY3JpcHRpb246IF9wYWNrYWdlLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IF9wYWNrYWdlLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBkdHM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNvbXBpbGVkX2pzOlxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogX3BhY2thZ2UuY3JlYXRlZF9hdCxcbiAgICAgIHVwZGF0ZWRfYXQ6IF9wYWNrYWdlLnVwZGF0ZWRfYXQsXG4gICAgICBzdGFyX2NvdW50OiBfcGFja2FnZS5zdGFyX2NvdW50IHx8IDAsXG4gICAgICBpc19zdGFycmVkOiBpc1N0YXJyZWQsXG4gICAgICB2ZXJzaW9uOiBfcGFja2FnZS5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICBjaXJjdWl0X2pzb246IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICApPy5jb250ZW50X3RleHRcbiAgICAgICAgPyBKU09OLnBhcnNlKFxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIltdXCIsXG4gICAgICAgICAgKVxuICAgICAgICA6IFtdLFxuICAgICAgaXNfcHJpdmF0ZTogX3BhY2thZ2UuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogX3BhY2thZ2UuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogX3BhY2thZ2UuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuICB9LFxuICBzZWFyY2hTbmlwcGV0czogKHF1ZXJ5OiBzdHJpbmcpOiBTbmlwcGV0W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBjb25zdCBsb3dlcmNhc2VRdWVyeSA9IHF1ZXJ5LnRvTG93ZXJDYXNlKClcblxuICAgIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgc25pcHBldHNcbiAgICBjb25zdCBwYWNrYWdlcyA9IHN0YXRlLnBhY2thZ2VzLmZpbHRlcigocGtnKSA9PiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSlcblxuICAgIC8vIEZpbmQgcGFja2FnZXMgdGhhdCBtYXRjaCBieSBuYW1lIG9yIGRlc2NyaXB0aW9uXG4gICAgY29uc3QgbWF0Y2hpbmdQYWNrYWdlc0J5TWV0YWRhdGEgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSB8fFxuICAgICAgICBwa2cuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlUXVlcnkpLFxuICAgIClcblxuICAgIC8vIEZpbmQgcGFja2FnZXMgdGhhdCBtYXRjaCBieSBjb2RlIGNvbnRlbnQgaW4gYW55IGZpbGVcbiAgICBjb25zdCBtYXRjaGluZ0ZpbGVzQnlDb250ZW50ID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PlxuICAgICAgICBmaWxlLmNvbnRlbnRfdGV4dD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSkgPz8gZmFsc2UsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlcyBmb3IgbWF0Y2hpbmcgZmlsZXNcbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzQnlDb250ZW50ID0gbWF0Y2hpbmdGaWxlc0J5Q29udGVudFxuICAgICAgLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2UgZm9yIHRoaXMgZmlsZVxuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgZm9yIHRoaXMgcmVsZWFzZVxuICAgICAgICByZXR1cm4gcGFja2FnZXMuZmluZChcbiAgICAgICAgICAocGtnKSA9PlxuICAgICAgICAgICAgcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHBrZyk6IHBrZyBpcyBOb25OdWxsYWJsZTx0eXBlb2YgcGtnPiA9PiBwa2cgIT09IG51bGwpXG5cbiAgICAvLyBDb21iaW5lIGJvdGggc2V0cyBvZiBtYXRjaGluZyBwYWNrYWdlcyBhbmQgcmVtb3ZlIGR1cGxpY2F0ZXNcbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzID0gW1xuICAgICAgLi4ubmV3IFNldChbLi4ubWF0Y2hpbmdQYWNrYWdlc0J5TWV0YWRhdGEsIC4uLm1hdGNoaW5nUGFja2FnZXNCeUNvbnRlbnRdKSxcbiAgICBdXG5cbiAgICAvLyBDb252ZXJ0IG1hdGNoaW5nIHBhY2thZ2VzIHRvIHNuaXBwZXQgZm9ybWF0XG4gICAgcmV0dXJuIG1hdGNoaW5nUGFja2FnZXNcbiAgICAgIC5tYXAoKHBrZykgPT4ge1xuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT5cbiAgICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG5cbiAgICAgICAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHBrZy5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgICAgIHNuaXBwZXRfdHlwZTogcGtnLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGR0czpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gICAgICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgICBzdGFyX2NvdW50OiBwa2cuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgICAgIGlzX3N0YXJyZWQ6IGlzU3RhcnJlZCxcbiAgICAgICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICAgIGNpcmN1aXRfanNvbjpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlc1xuICAgICAgICAgICAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIilcbiAgICAgICAgICAgICAgLmZsYXRNYXAoKGZpbGUpID0+IEpTT04ucGFyc2UoZmlsZS5jb250ZW50X3RleHQgfHwgXCJbXVwiKSkgfHwgW10sXG4gICAgICAgIH0gYXMgU25pcHBldFxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHNuaXBwZXQpOiBzbmlwcGV0IGlzIFNuaXBwZXQgPT4gc25pcHBldCAhPT0gbnVsbClcbiAgfSxcbiAgc2VhcmNoUGFja2FnZXM6IChxdWVyeTogc3RyaW5nLCBhY2NvdW50X2lkPzogc3RyaW5nKTogUGFja2FnZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgbG93ZXJjYXNlUXVlcnkgPSBxdWVyeS50b0xvd2VyQ2FzZSgpXG5cbiAgICBjb25zdCB1c2VyT3JnSWRzID0gYWNjb3VudF9pZFxuICAgICAgPyBuZXcgU2V0KFxuICAgICAgICAgIHN0YXRlLm9yZ0FjY291bnRzXG4gICAgICAgICAgICAuZmlsdGVyKChvYSkgPT4gb2EuYWNjb3VudF9pZCA9PT0gYWNjb3VudF9pZClcbiAgICAgICAgICAgIC5tYXAoKG9hKSA9PiBvYS5vcmdfaWQpLFxuICAgICAgICApXG4gICAgICA6IG5ldyBTZXQ8c3RyaW5nPigpXG5cbiAgICBjb25zdCBwYWNrYWdlcyA9IHN0YXRlLnBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5pc19wdWJsaWMgPT09IHRydWUgfHxcbiAgICAgICAgKGFjY291bnRfaWQgJiYgcGtnLm93bmVyX29yZ19pZCAmJiB1c2VyT3JnSWRzLmhhcyhwa2cub3duZXJfb3JnX2lkKSksXG4gICAgKVxuXG4gICAgY29uc3QgbWF0Y2hpbmdQYWNrYWdlc0J5TWV0YWRhdGEgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSB8fFxuICAgICAgICBwa2cuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlUXVlcnkpLFxuICAgIClcblxuICAgIGNvbnN0IG1hdGNoaW5nRmlsZXNCeUNvbnRlbnQgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+XG4gICAgICAgIGZpbGUuY29udGVudF90ZXh0Py50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSA/PyBmYWxzZSxcbiAgICApXG5cbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzQnlDb250ZW50ID0gbWF0Y2hpbmdGaWxlc0J5Q29udGVudFxuICAgICAgLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIHJldHVybiBwYWNrYWdlcy5maW5kKFxuICAgICAgICAgIChwa2cpID0+XG4gICAgICAgICAgICBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG4gICAgICB9KVxuICAgICAgLmZpbHRlcigocGtnKTogcGtnIGlzIE5vbk51bGxhYmxlPHR5cGVvZiBwa2c+ID0+IHBrZyAhPT0gbnVsbClcblxuICAgIGNvbnN0IG1hdGNoaW5nUGFja2FnZXMgPSBbXG4gICAgICAuLi5uZXcgU2V0KFsuLi5tYXRjaGluZ1BhY2thZ2VzQnlNZXRhZGF0YSwgLi4ubWF0Y2hpbmdQYWNrYWdlc0J5Q29udGVudF0pLFxuICAgIF1cblxuICAgIHJldHVybiBtYXRjaGluZ1BhY2thZ2VzXG4gIH0sXG4gIHNlYXJjaEFjY291bnRzOiAocXVlcnk6IHN0cmluZywgbGltaXQ/OiBudW1iZXIpOiBBY2NvdW50W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBjb25zdCBsb3dlcmNhc2VRdWVyeSA9IHF1ZXJ5LnRvTG93ZXJDYXNlKClcblxuICAgIGNvbnN0IGFjY291bnRzV2l0aFB1YmxpY1BhY2thZ2VzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgICBzdGF0ZS5wYWNrYWdlc1xuICAgICAgLmZpbHRlcigocGtnKSA9PiBwa2cuaXNfcHVibGljID09PSB0cnVlKVxuICAgICAgLmZvckVhY2goKHBrZykgPT4ge1xuICAgICAgICBpZiAocGtnLmNyZWF0b3JfYWNjb3VudF9pZCkge1xuICAgICAgICAgIGFjY291bnRzV2l0aFB1YmxpY1BhY2thZ2VzLmFkZChwa2cuY3JlYXRvcl9hY2NvdW50X2lkKVxuICAgICAgICB9XG4gICAgICAgIGlmIChwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgICAgICAgY29uc3QgYWNjb3VudCA9IHN0YXRlLmFjY291bnRzLmZpbmQoXG4gICAgICAgICAgICAoYWNjKSA9PiBhY2MuZ2l0aHViX3VzZXJuYW1lID09PSBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAoYWNjb3VudCkge1xuICAgICAgICAgICAgYWNjb3VudHNXaXRoUHVibGljUGFja2FnZXMuYWRkKGFjY291bnQuYWNjb3VudF9pZClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICBjb25zdCBtYXRjaGluZ0FjY291bnRzID0gc3RhdGUuYWNjb3VudHNcbiAgICAgIC5maWx0ZXIoKGFjY291bnQpID0+IHtcbiAgICAgICAgaWYgKCFhY2NvdW50c1dpdGhQdWJsaWNQYWNrYWdlcy5oYXMoYWNjb3VudC5hY2NvdW50X2lkKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgYWNjb3VudC5naXRodWJfdXNlcm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSkgfHxcbiAgICAgICAgICAoYWNjb3VudC50c2NpcmN1aXRfaGFuZGxlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSA/P1xuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgICAuc2xpY2UoMCwgbGltaXQgfHwgNTApXG5cbiAgICByZXR1cm4gbWF0Y2hpbmdBY2NvdW50c1xuICB9LFxuICBkZWxldGVTbmlwcGV0OiAoc25pcHBldElkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5zbmlwcGV0cy5maW5kSW5kZXgoKHMpID0+IHMuc25pcHBldF9pZCA9PT0gc25pcHBldElkKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5zbmlwcGV0cy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFNlc3Npb246IChzZXNzaW9uOiBPbWl0PFNlc3Npb24sIFwic2Vzc2lvbl9pZFwiPik6IFNlc3Npb24gPT4ge1xuICAgIGNvbnN0IG5ld1Nlc3Npb24gPSB7IHNlc3Npb25faWQ6IGBzZXNzaW9uXyR7RGF0ZS5ub3coKX1gLCAuLi5zZXNzaW9uIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgc2Vzc2lvbnM6IFsuLi5zdGF0ZS5zZXNzaW9ucywgbmV3U2Vzc2lvbl0sXG4gICAgfSkpXG4gICAgcmV0dXJuIG5ld1Nlc3Npb25cbiAgfSxcbiAgZ2V0U2Vzc2lvbnM6ICh7XG4gICAgYWNjb3VudF9pZCxcbiAgICBpc19jbGlfc2Vzc2lvbixcbiAgfTogeyBhY2NvdW50X2lkOiBzdHJpbmc7IGlzX2NsaV9zZXNzaW9uPzogYm9vbGVhbiB9KTogU2Vzc2lvbltdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnNlc3Npb25zLmZpbHRlcihcbiAgICAgIChzZXNzaW9uKSA9PlxuICAgICAgICBzZXNzaW9uLmFjY291bnRfaWQgPT09IGFjY291bnRfaWQgJiZcbiAgICAgICAgKGlzX2NsaV9zZXNzaW9uID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICBzZXNzaW9uLmlzX2NsaV9zZXNzaW9uID09PSBpc19jbGlfc2Vzc2lvbiksXG4gICAgKVxuICB9LFxuICBjcmVhdGVMb2dpblBhZ2U6ICgpOiBMb2dpblBhZ2UgPT4ge1xuICAgIGNvbnN0IG5ld0xvZ2luUGFnZTogTG9naW5QYWdlID0ge1xuICAgICAgbG9naW5fcGFnZV9pZDogYGxvZ2luX3BhZ2VfJHtEYXRlLm5vdygpfWAsXG4gICAgICBsb2dpbl9wYWdlX2F1dGhfdG9rZW46IGB0b2tlbl8ke0RhdGUubm93KCl9YCxcbiAgICAgIHdhc19sb2dpbl9zdWNjZXNzZnVsOiBmYWxzZSxcbiAgICAgIGhhc19iZWVuX3VzZWRfdG9fY3JlYXRlX3Nlc3Npb246IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgZXhwaXJlc19hdDogbmV3IERhdGUoRGF0ZS5ub3coKSArIDMwICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygpLCAvLyAzMCBtaW51dGVzIGV4cGlyYXRpb25cbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IFsuLi5zdGF0ZS5sb2dpblBhZ2VzLCBuZXdMb2dpblBhZ2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdMb2dpblBhZ2VcbiAgfSxcbiAgZ2V0TG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZyk6IExvZ2luUGFnZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5sb2dpblBhZ2VzLmZpbmQoKGxwKSA9PiBscC5sb2dpbl9wYWdlX2lkID09PSBsb2dpblBhZ2VJZClcbiAgfSxcbiAgdXBkYXRlTG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxMb2dpblBhZ2U+KTogdm9pZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IHN0YXRlLmxvZ2luUGFnZXMubWFwKChscCkgPT5cbiAgICAgICAgbHAubG9naW5fcGFnZV9pZCA9PT0gbG9naW5QYWdlSWQgPyB7IC4uLmxwLCAuLi51cGRhdGVzIH0gOiBscCxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGdldEFjY291bnQ6IChhY2NvdW50SWQ6IHN0cmluZyk6IEFjY291bnQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudHMuZmluZCgoYWNjb3VudCkgPT4gYWNjb3VudC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQpXG4gIH0sXG4gIHVwZGF0ZUFjY291bnQ6IChcbiAgICBhY2NvdW50SWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPEFjY291bnQ+LFxuICApOiBBY2NvdW50IHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZEFjY291bnQ6IEFjY291bnQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBhY2NvdW50SW5kZXggPSBzdGF0ZS5hY2NvdW50cy5maW5kSW5kZXgoXG4gICAgICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRfaWQgPT09IGFjY291bnRJZCxcbiAgICAgIClcbiAgICAgIGlmIChhY2NvdW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi5zdGF0ZS5hY2NvdW50c1thY2NvdW50SW5kZXhdIH1cbiAgICAgICAgaWYgKHVwZGF0ZXMudHNjaXJjdWl0X2hhbmRsZSkge1xuICAgICAgICAgIHVwZGF0ZWRBY2NvdW50LnRzY2lyY3VpdF9oYW5kbGUgPSB1cGRhdGVzLnRzY2lyY3VpdF9oYW5kbGVcbiAgICAgICAgICBkZWxldGUgdXBkYXRlcy50c2NpcmN1aXRfaGFuZGxlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVwZGF0ZXMuc2hpcHBpbmdJbmZvKSB7XG4gICAgICAgICAgdXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvID0ge1xuICAgICAgICAgICAgLi4udXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvLFxuICAgICAgICAgICAgLi4udXBkYXRlcy5zaGlwcGluZ0luZm8sXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSB1cGRhdGVzLnNoaXBwaW5nSW5mb1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi51cGRhdGVkQWNjb3VudCwgLi4udXBkYXRlcyB9XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRBY2NvdW50cyA9IFsuLi5zdGF0ZS5hY2NvdW50c11cbiAgICAgICAgdXBkYXRlZEFjY291bnRzW2FjY291bnRJbmRleF0gPSB1cGRhdGVkQWNjb3VudFxuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYWNjb3VudHM6IHVwZGF0ZWRBY2NvdW50cyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiB1cGRhdGVkQWNjb3VudFxuICB9LFxuICBjcmVhdGVTZXNzaW9uOiAoc2Vzc2lvbjogT21pdDxTZXNzaW9uLCBcInNlc3Npb25faWRcIj4pOiBTZXNzaW9uID0+IHtcbiAgICBjb25zdCBuZXdTZXNzaW9uID0geyBzZXNzaW9uX2lkOiBgc2Vzc2lvbl8ke0RhdGUubm93KCl9YCwgLi4uc2Vzc2lvbiB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHNlc3Npb25zOiBbLi4uc3RhdGUuc2Vzc2lvbnMsIG5ld1Nlc3Npb25dLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdTZXNzaW9uXG4gIH0sXG4gIGRlbGV0ZVNlc3Npb246IChzZXNzaW9uSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCBkZWxldGVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLnNlc3Npb25zLmZpbmRJbmRleChcbiAgICAgICAgKHNlc3Npb24pID0+IHNlc3Npb24uc2Vzc2lvbl9pZCA9PT0gc2Vzc2lvbklkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5zZXNzaW9ucy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFN0YXI6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBBY2NvdW50UGFja2FnZSA9PiB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgY29uc3QgYWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke0RhdGUubm93KCl9YCxcbiAgICAgIGFjY291bnRfaWQ6IGFjY291bnRJZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VJZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBub3csXG4gICAgICB1cGRhdGVkX2F0OiBub3csXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGluY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgICAgLi4udXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0sXG4gICAgICAgICAgc3Rhcl9jb3VudDogKHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdLnN0YXJfY291bnQgfHwgMCkgKyAxLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYWNrYWdlczogdXBkYXRlZFBhY2thZ2VzLFxuICAgICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gYWNjb3VudFBhY2thZ2VcbiAgfSxcbiAgcmVtb3ZlU3RhcjogKGFjY291bnRJZDogc3RyaW5nLCBwYWNrYWdlSWQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGRlY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuXG4gICAgICBpZiAocGFja2FnZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgICB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSA9IHtcbiAgICAgICAgICAuLi51cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSxcbiAgICAgICAgICBzdGFyX2NvdW50OiBNYXRoLm1heChcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAodXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0uc3Rhcl9jb3VudCB8fCAwKSAtIDEsXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAoYXApID0+XG4gICAgICAgICAgICAgICEoYXAuYWNjb3VudF9pZCA9PT0gYWNjb3VudElkICYmIGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgKGFwKSA9PiAhKGFwLmFjY291bnRfaWQgPT09IGFjY291bnRJZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpLFxuICAgICAgICApLFxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIGhhc1N0YXJyZWQ6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5zb21lKFxuICAgICAgKGFwKSA9PlxuICAgICAgICBhcC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQgJiZcbiAgICAgICAgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkICYmXG4gICAgICAgIGFwLmlzX3N0YXJyZWQsXG4gICAgKVxuICB9LFxuICBhZGRQYWNrYWdlOiAoXG4gICAgX3BhY2thZ2U6IE9taXQ8XG4gICAgICB6LmlucHV0PHR5cGVvZiBwYWNrYWdlU2NoZW1hPixcbiAgICAgIFwicGFja2FnZV9pZFwiIHwgXCJnaXRodWJfcmVwb19mdWxsX25hbWVcIlxuICAgID4sXG4gICk6IFBhY2thZ2UgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBjb25zdCBuZXh0SWQgPSBzdGF0ZS5pZENvdW50ZXIgKyAxXG4gICAgY29uc3QgbmV3UGFja2FnZSA9IHtcbiAgICAgIHBhY2thZ2VfaWQ6IGBwYWNrYWdlXyR7bmV4dElkfWAsXG4gICAgICBnaXRodWJfcmVwb19mdWxsX25hbWU6IG51bGwsXG4gICAgICBsYXRlc3RfcGNiX3ByZXZpZXdfaW1hZ2VfdXJsOlxuICAgICAgICBfcGFja2FnZS5sYXRlc3RfcGNiX3ByZXZpZXdfaW1hZ2VfdXJsID8/XG4gICAgICAgIGAvYXBpL3BhY2thZ2VzL2ltYWdlcy8ke19wYWNrYWdlLm5hbWV9YCxcbiAgICAgIGxhdGVzdF9jYWRfcHJldmlld19pbWFnZV91cmw6XG4gICAgICAgIF9wYWNrYWdlLmxhdGVzdF9jYWRfcHJldmlld19pbWFnZV91cmwgPz9cbiAgICAgICAgYC9hcGkvcGFja2FnZXMvaW1hZ2VzLyR7X3BhY2thZ2UubmFtZX1gLFxuICAgICAgbGF0ZXN0X3NjaF9wcmV2aWV3X2ltYWdlX3VybDpcbiAgICAgICAgX3BhY2thZ2UubGF0ZXN0X3NjaF9wcmV2aWV3X2ltYWdlX3VybCA/P1xuICAgICAgICBgL2FwaS9wYWNrYWdlcy9pbWFnZXMvJHtfcGFja2FnZS5uYW1lfWAsXG4gICAgICAuLi5fcGFja2FnZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIHBhY2thZ2VzOiBbLi4uc3RhdGUucGFja2FnZXMsIG5ld1BhY2thZ2UgYXMgUGFja2FnZV0sXG4gICAgfSkpXG4gICAgcmV0dXJuIG5ld1BhY2thZ2UgYXMgUGFja2FnZVxuICB9LFxuICB1cGRhdGVQYWNrYWdlOiAoXG4gICAgcGFja2FnZUlkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxQYWNrYWdlPixcbiAgKTogUGFja2FnZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgbGV0IHVwZGF0ZWRQYWNrYWdlOiBQYWNrYWdlIHwgdW5kZWZpbmVkXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHJldHVybiBzdGF0ZVxuXG4gICAgICBjb25zdCB1cGRhdGVkUGFja2FnZXMgPSBbLi4uc3RhdGUucGFja2FnZXNdXG4gICAgICB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSA9IHtcbiAgICAgICAgLi4udXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0sXG4gICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICB9XG4gICAgICB1cGRhdGVkUGFja2FnZSA9IHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyB9XG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZFBhY2thZ2VcbiAgfSxcbiAgZ2V0UGFja2FnZUJ5SWQ6IChwYWNrYWdlSWQ6IHN0cmluZyk6IFBhY2thZ2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBjb25zdCBwa2cgPSBzdGF0ZS5wYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpXG4gICAgaWYgKCFwa2cpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGtnLFxuICAgIH1cbiAgfSxcbiAgZ2V0UGFja2FnZVJlbGVhc2VCeUlkOiAoXG4gICAgcGFja2FnZVJlbGVhc2VJZDogc3RyaW5nLFxuICApOiBQYWNrYWdlUmVsZWFzZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICAgIClcbiAgfSxcbiAgYWRkUGFja2FnZVJlbGVhc2U6IChcbiAgICBwYWNrYWdlUmVsZWFzZTogT21pdDxcbiAgICAgIHouaW5wdXQ8dHlwZW9mIHBhY2thZ2VSZWxlYXNlU2NoZW1hPixcbiAgICAgIFwicGFja2FnZV9yZWxlYXNlX2lkXCJcbiAgICA+LFxuICApOiBQYWNrYWdlUmVsZWFzZSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IG5leHRJZCA9IHN0YXRlLmlkQ291bnRlciArIDFcbiAgICBjb25zdCBwYXJzZWQgPSBwYWNrYWdlUmVsZWFzZVNjaGVtYS5wYXJzZSh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGBwYWNrYWdlX3JlbGVhc2VfJHtuZXh0SWR9YCxcbiAgICAgIC4uLnBhY2thZ2VSZWxlYXNlLFxuICAgIH0pXG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIHBhY2thZ2VSZWxlYXNlczogWy4uLnN0YXRlLnBhY2thZ2VSZWxlYXNlcywgcGFyc2VkXSxcbiAgICB9KSlcbiAgICByZXR1cm4gcGFyc2VkXG4gIH0sXG4gIHVwZGF0ZVBhY2thZ2VSZWxlYXNlOiAocGFja2FnZVJlbGVhc2U6IFBhY2thZ2VSZWxlYXNlKTogdm9pZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlczogc3RhdGUucGFja2FnZVJlbGVhc2VzLm1hcCgocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gICAgICAgICAgPyBwYWNrYWdlUmVsZWFzZVxuICAgICAgICAgIDogcHIsXG4gICAgICApLFxuICAgIH0pKVxuICB9LFxuICBkZWxldGVQYWNrYWdlRmlsZTogKHBhY2thZ2VGaWxlSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCBkZWxldGVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfZmlsZV9pZCA9PT0gcGFja2FnZUZpbGVJZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc3RhdGUucGFja2FnZUZpbGVzLnNwbGljZShpbmRleCwgMSlcbiAgICAgICAgZGVsZXRlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdGF0ZVxuICAgIH0pXG4gICAgcmV0dXJuIGRlbGV0ZWRcbiAgfSxcbiAgYWRkUGFja2FnZUZpbGU6IChcbiAgICBwYWNrYWdlRmlsZTogT21pdDxQYWNrYWdlRmlsZSwgXCJwYWNrYWdlX2ZpbGVfaWRcIj4sXG4gICk6IFBhY2thZ2VGaWxlID0+IHtcbiAgICBjb25zdCBuZXdQYWNrYWdlRmlsZSA9IHtcbiAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke2dldCgpLmlkQ291bnRlciArIDF9YCxcbiAgICAgIC4uLnBhY2thZ2VGaWxlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgcGFja2FnZUZpbGVzOiBbLi4uc3RhdGUucGFja2FnZUZpbGVzLCBuZXdQYWNrYWdlRmlsZV0sXG4gICAgfSkpXG4gICAgcmV0dXJuIG5ld1BhY2thZ2VGaWxlXG4gIH0sXG4gIHVwZGF0ZVBhY2thZ2VGaWxlOiAoXG4gICAgcGFja2FnZUZpbGVJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8T21pdDxQYWNrYWdlRmlsZSwgXCJwYWNrYWdlX2ZpbGVfaWRcIj4+LFxuICApOiBQYWNrYWdlRmlsZSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VGaWxlczogc3RhdGUucGFja2FnZUZpbGVzLm1hcCgoZmlsZSkgPT5cbiAgICAgICAgZmlsZS5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQgPyB7IC4uLmZpbGUsIC4uLnVwZGF0ZXMgfSA6IGZpbGUsXG4gICAgICApLFxuICAgIH0pKVxuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQsXG4gICAgKSFcbiAgfSxcbiAgZ2V0U3RhckNvdW50OiAocGFja2FnZUlkOiBzdHJpbmcpOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudFBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgKS5sZW5ndGhcbiAgfSxcbiAgZ2V0UGFja2FnZUZpbGVzQnlSZWxlYXNlSWQ6IChwYWNrYWdlUmVsZWFzZUlkOiBzdHJpbmcpOiBQYWNrYWdlRmlsZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAocGYpID0+IHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgICApXG4gIH0sXG4gIC8qKlxuICAgKiBVcGRhdGUgZnNfc2hhIGZvciBhIHBhY2thZ2UgcmVsZWFzZSBiYXNlZCBvbiBpdHMgZmlsZXNcbiAgICovXG4gIHVwZGF0ZVBhY2thZ2VSZWxlYXNlRnNTaGE6IChwYWNrYWdlUmVsZWFzZUlkOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChwZikgPT4gcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICAgIClcbiAgICBjb25zdCBmc1NoYSA9IGdlbmVyYXRlRnNTaGEocGFja2FnZUZpbGVzKVxuXG4gICAgc2V0KChjdXJyZW50U3RhdGUpID0+ICh7XG4gICAgICAuLi5jdXJyZW50U3RhdGUsXG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IGN1cnJlbnRTdGF0ZS5wYWNrYWdlUmVsZWFzZXMubWFwKChwcikgPT5cbiAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkXG4gICAgICAgICAgPyB7IC4uLnByLCBmc19zaGE6IGZzU2hhIH1cbiAgICAgICAgICA6IHByLFxuICAgICAgKSxcbiAgICAgIHBhY2thZ2VzOiBjdXJyZW50U3RhdGUucGFja2FnZXMubWFwKChwa2cpID0+XG4gICAgICAgIHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkXG4gICAgICAgICAgPyB7IC4uLnBrZywgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9mc19zaGE6IGZzU2hhIH1cbiAgICAgICAgICA6IHBrZyxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG5cbiAgYWRkQWlSZXZpZXc6IChyZXZpZXc6IE9taXQ8QWlSZXZpZXcsIFwiYWlfcmV2aWV3X2lkXCI+KTogQWlSZXZpZXcgPT4ge1xuICAgIGNvbnN0IGJhc2UgPSBhaVJldmlld1NjaGVtYS5vbWl0KHsgYWlfcmV2aWV3X2lkOiB0cnVlIH0pLnBhcnNlKHJldmlldylcbiAgICBjb25zdCBuZXdSZXZpZXcgPSB7XG4gICAgICBhaV9yZXZpZXdfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICAuLi5iYXNlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgYWlSZXZpZXdzOiBbLi4uc3RhdGUuYWlSZXZpZXdzLCBuZXdSZXZpZXddLFxuICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdSZXZpZXdcbiAgfSxcbiAgdXBkYXRlQWlSZXZpZXc6IChcbiAgICBhaVJldmlld0lkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxBaVJldmlldz4sXG4gICk6IEFpUmV2aWV3IHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZDogQWlSZXZpZXcgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmFpUmV2aWV3cy5maW5kSW5kZXgoXG4gICAgICAgIChhcikgPT4gYXIuYWlfcmV2aWV3X2lkID09PSBhaVJldmlld0lkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG4gICAgICBjb25zdCBhaVJldmlld3MgPSBbLi4uc3RhdGUuYWlSZXZpZXdzXVxuICAgICAgYWlSZXZpZXdzW2luZGV4XSA9IHsgLi4uYWlSZXZpZXdzW2luZGV4XSwgLi4udXBkYXRlcyB9XG4gICAgICB1cGRhdGVkID0gYWlSZXZpZXdzW2luZGV4XVxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFpUmV2aWV3cyB9XG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZFxuICB9LFxuICBnZXRBaVJldmlld0J5SWQ6IChhaVJldmlld0lkOiBzdHJpbmcpOiBBaVJldmlldyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5haVJldmlld3MuZmluZCgoYXIpID0+IGFyLmFpX3Jldmlld19pZCA9PT0gYWlSZXZpZXdJZClcbiAgfSxcbiAgbGlzdEFpUmV2aWV3czogKCk6IEFpUmV2aWV3W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWlSZXZpZXdzXG4gIH0sXG4gIGFkZERhdGFzaGVldDogKHsgY2hpcF9uYW1lIH06IHsgY2hpcF9uYW1lOiBzdHJpbmcgfSk6IERhdGFzaGVldCA9PiB7XG4gICAgY29uc3QgbmV3RGF0YXNoZWV0ID0gZGF0YXNoZWV0U2NoZW1hLnBhcnNlKHtcbiAgICAgIGRhdGFzaGVldF9pZDogY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICAgIGNoaXBfbmFtZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHBpbl9pbmZvcm1hdGlvbjogbnVsbCxcbiAgICAgIGRhdGFzaGVldF9wZGZfdXJsczogbnVsbCxcbiAgICAgIGFpX2Rlc2NyaXB0aW9uOiBudWxsLFxuICAgIH0pXG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGRhdGFzaGVldHM6IFsuLi5zdGF0ZS5kYXRhc2hlZXRzLCBuZXdEYXRhc2hlZXRdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdEYXRhc2hlZXRcbiAgfSxcbiAgZ2V0RGF0YXNoZWV0QnlJZDogKGRhdGFzaGVldElkOiBzdHJpbmcpOiBEYXRhc2hlZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuZGF0YXNoZWV0cy5maW5kKChkKSA9PiBkLmRhdGFzaGVldF9pZCA9PT0gZGF0YXNoZWV0SWQpXG4gIH0sXG4gIGdldERhdGFzaGVldEJ5Q2hpcE5hbWU6IChjaGlwTmFtZTogc3RyaW5nKTogRGF0YXNoZWV0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmRhdGFzaGVldHMuZmluZChcbiAgICAgIChkKSA9PiBkLmNoaXBfbmFtZS50b0xvd2VyQ2FzZSgpID09PSBjaGlwTmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgIClcbiAgfSxcbiAgbGlzdERhdGFzaGVldHM6ICh7XG4gICAgY2hpcF9uYW1lLFxuICAgIGlzX3BvcHVsYXIsXG4gIH06IHsgY2hpcF9uYW1lPzogc3RyaW5nOyBpc19wb3B1bGFyPzogYm9vbGVhbiB9ID0ge30pOiBEYXRhc2hlZXRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGlmIChpc19wb3B1bGFyKSB7XG4gICAgICByZXR1cm4gc3RhdGUuZGF0YXNoZWV0c1xuICAgIH1cblxuICAgIGlmIChjaGlwX25hbWUpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5kYXRhc2hlZXRzLmZpbHRlcihcbiAgICAgICAgKGQpID0+IGQuY2hpcF9uYW1lLnRvTG93ZXJDYXNlKCkgPT09IGNoaXBfbmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZS5kYXRhc2hlZXRzXG4gIH0sXG4gIHVwZGF0ZURhdGFzaGVldDogKFxuICAgIGRhdGFzaGVldElkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxEYXRhc2hlZXQ+LFxuICApOiBEYXRhc2hlZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGxldCB1cGRhdGVkOiBEYXRhc2hlZXQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmRhdGFzaGVldHMuZmluZEluZGV4KFxuICAgICAgICAoZCkgPT4gZC5kYXRhc2hlZXRfaWQgPT09IGRhdGFzaGVldElkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG4gICAgICBjb25zdCBkYXRhc2hlZXRzID0gWy4uLnN0YXRlLmRhdGFzaGVldHNdXG4gICAgICBkYXRhc2hlZXRzW2luZGV4XSA9IHsgLi4uZGF0YXNoZWV0c1tpbmRleF0sIC4uLnVwZGF0ZXMgfVxuICAgICAgdXBkYXRlZCA9IGRhdGFzaGVldHNbaW5kZXhdXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZGF0YXNoZWV0cyB9XG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZFxuICB9LFxuICBhZGRQYWNrYWdlQnVpbGQ6IChcbiAgICBwYWNrYWdlQnVpbGQ6IFBhcnRpYWw8XG4gICAgICBPbWl0PHouaW5wdXQ8dHlwZW9mIHBhY2thZ2VCdWlsZFNjaGVtYT4sIFwicGFja2FnZV9idWlsZF9pZFwiPlxuICAgID4gJiB7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHN0cmluZ1xuICAgIH0sXG4gICk6IFBhY2thZ2VCdWlsZCA9PiB7XG4gICAgY29uc3QgbmV3UGFja2FnZUJ1aWxkID0gcGFja2FnZUJ1aWxkU2NoZW1hLnBhcnNlKHtcbiAgICAgIHBhY2thZ2VfYnVpbGRfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICB1c2VyX2NvZGVfYnVpbGRfbG9nczogbnVsbCxcbiAgICAgIGltYWdlX2dlbmVyYXRpb25fbG9nczogbnVsbCxcbiAgICAgIC4uLnBhY2thZ2VCdWlsZCxcbiAgICB9KVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlQnVpbGRzOiBbLi4uc3RhdGUucGFja2FnZUJ1aWxkcywgbmV3UGFja2FnZUJ1aWxkXSxcbiAgICAgIC8vIEF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBwYWNrYWdlIHJlbGVhc2UgdG8gcmVmZXJlbmNlIHRoaXMgYXMgdGhlIGxhdGVzdCBidWlsZFxuICAgICAgcGFja2FnZVJlbGVhc2VzOiBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMubWFwKChyZWxlYXNlKSA9PlxuICAgICAgICByZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZUJ1aWxkLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5yZWxlYXNlLFxuICAgICAgICAgICAgICBsYXRlc3RfcGFja2FnZV9idWlsZF9pZDogbmV3UGFja2FnZUJ1aWxkLnBhY2thZ2VfYnVpbGRfaWQsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiByZWxlYXNlLFxuICAgICAgKSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3UGFja2FnZUJ1aWxkXG4gIH0sXG4gIGdldFBhY2thZ2VCdWlsZEJ5SWQ6IChwYWNrYWdlQnVpbGRJZDogc3RyaW5nKTogUGFja2FnZUJ1aWxkIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VCdWlsZHMuZmluZChcbiAgICAgIChwYikgPT4gcGIucGFja2FnZV9idWlsZF9pZCA9PT0gcGFja2FnZUJ1aWxkSWQsXG4gICAgKVxuICB9LFxuICBnZXRQYWNrYWdlQnVpbGRzQnlSZWxlYXNlSWQ6IChwYWNrYWdlUmVsZWFzZUlkOiBzdHJpbmcpOiBQYWNrYWdlQnVpbGRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5wYWNrYWdlQnVpbGRzXG4gICAgICAuZmlsdGVyKChwYikgPT4gcGIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkKVxuICAgICAgLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gICAgICApXG4gIH0sXG4gIHVwZGF0ZVBhY2thZ2VCdWlsZDogKFxuICAgIHBhY2thZ2VCdWlsZElkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxQYWNrYWdlQnVpbGQ+LFxuICApOiBQYWNrYWdlQnVpbGQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGxldCB1cGRhdGVkOiBQYWNrYWdlQnVpbGQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLnBhY2thZ2VCdWlsZHMuZmluZEluZGV4KFxuICAgICAgICAocGIpID0+IHBiLnBhY2thZ2VfYnVpbGRfaWQgPT09IHBhY2thZ2VCdWlsZElkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG4gICAgICBjb25zdCBwYWNrYWdlQnVpbGRzID0gWy4uLnN0YXRlLnBhY2thZ2VCdWlsZHNdXG4gICAgICBwYWNrYWdlQnVpbGRzW2luZGV4XSA9IHsgLi4ucGFja2FnZUJ1aWxkc1tpbmRleF0sIC4uLnVwZGF0ZXMgfVxuICAgICAgdXBkYXRlZCA9IHBhY2thZ2VCdWlsZHNbaW5kZXhdXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgcGFja2FnZUJ1aWxkcyB9XG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZFxuICB9LFxuICBhZGRPcmdhbml6YXRpb246IChvcmdhbml6YXRpb246IHtcbiAgICBuYW1lPzogc3RyaW5nXG4gICAgb3JnX2lkPzogc3RyaW5nXG4gICAgaXNfcGVyc29uYWxfb3JnPzogYm9vbGVhblxuICAgIG93bmVyX2FjY291bnRfaWQ6IHN0cmluZ1xuICAgIGdpdGh1Yl9oYW5kbGU/OiBzdHJpbmdcbiAgICBvcmdfZGlzcGxheV9uYW1lPzogc3RyaW5nXG4gICAgdHNjaXJjdWl0X2hhbmRsZT86IHN0cmluZ1xuICAgIGF2YXRhcl91cmw/OiBzdHJpbmcgfCBudWxsXG4gIH0pID0+IHtcbiAgICBjb25zdCBuZXdPcmdhbml6YXRpb246IE9yZ2FuaXphdGlvbiA9IHtcbiAgICAgIG9yZ19pZDogb3JnYW5pemF0aW9uLm9yZ19pZCB8fCBgb3JnXyR7Z2V0KCkuaWRDb3VudGVyICsgMX1gLFxuICAgICAgZ2l0aHViX2hhbmRsZTogb3JnYW5pemF0aW9uLmdpdGh1Yl9oYW5kbGUgPz8gbnVsbCxcbiAgICAgIGlzX3BlcnNvbmFsX29yZzogb3JnYW5pemF0aW9uLmlzX3BlcnNvbmFsX29yZyB8fCBmYWxzZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIG9yZ19kaXNwbGF5X25hbWU6XG4gICAgICAgIG9yZ2FuaXphdGlvbi5vcmdfZGlzcGxheV9uYW1lID8/XG4gICAgICAgIG9yZ2FuaXphdGlvbi50c2NpcmN1aXRfaGFuZGxlID8/XG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGF2YXRhcl91cmw6IG9yZ2FuaXphdGlvbi5hdmF0YXJfdXJsID8/IG51bGwsXG4gICAgICB0c2NpcmN1aXRfaGFuZGxlOlxuICAgICAgICBvcmdhbml6YXRpb24udHNjaXJjdWl0X2hhbmRsZSB8fCBvcmdhbml6YXRpb24ubmFtZSB8fCBudWxsLFxuICAgICAgLi4ub3JnYW5pemF0aW9uLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgb3JnYW5pemF0aW9uczogWy4uLnN0YXRlLm9yZ2FuaXphdGlvbnMsIG5ld09yZ2FuaXphdGlvbiBhcyBPcmdhbml6YXRpb25dLFxuICAgICAgLy8gQWRkIHRoZSBjcmVhdG9yIGFzIGEgbWVtYmVyIG9mIHRoZSBuZXcgb3JnIGJ5IHNldHRpbmcgdGhlaXIgcGVyc29uYWxfb3JnX2lkXG4gICAgICBhY2NvdW50czogc3RhdGUuYWNjb3VudHMubWFwKChhY2NvdW50KSA9PlxuICAgICAgICBhY2NvdW50LmFjY291bnRfaWQgPT09IG9yZ2FuaXphdGlvbi5vd25lcl9hY2NvdW50X2lkXG4gICAgICAgICAgPyB7IC4uLmFjY291bnQsIHBlcnNvbmFsX29yZ19pZDogbmV3T3JnYW5pemF0aW9uLm9yZ19pZCB9XG4gICAgICAgICAgOiBhY2NvdW50LFxuICAgICAgKSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3T3JnYW5pemF0aW9uXG4gIH0sXG4gIGdldE9yZ3M6IChcbiAgICBmaWx0ZXJzPzoge1xuICAgICAgb3duZXJfYWNjb3VudF9pZD86IHN0cmluZ1xuICAgICAgYWNjb3VudF9pZD86IHN0cmluZ1xuICAgICAgZ2l0aHViX2hhbmRsZT86IHN0cmluZ1xuICAgICAgdHNjaXJjdWl0X2hhbmRsZT86IHN0cmluZ1xuICAgICAgbmFtZT86IHN0cmluZ1xuICAgIH0sXG4gICAgYXV0aD86IHsgYWNjb3VudF9pZD86IHN0cmluZyB9LFxuICApID0+IHtcbiAgICBsZXQgb3JncyA9IGdldCgpLm9yZ2FuaXphdGlvbnNcbiAgICBpZiAoZmlsdGVycz8ub3duZXJfYWNjb3VudF9pZCkge1xuICAgICAgb3JncyA9IG9yZ3MuZmlsdGVyKFxuICAgICAgICAob3JnKSA9PiBvcmcub3duZXJfYWNjb3VudF9pZCA9PT0gZmlsdGVycy5vd25lcl9hY2NvdW50X2lkLFxuICAgICAgKVxuICAgIH1cbiAgICBpZiAoZmlsdGVycz8uYWNjb3VudF9pZCkge1xuICAgICAgb3JncyA9IG9yZ3MuZmlsdGVyKChvcmcpID0+IHtcbiAgICAgICAgY29uc3QgaXNNZW1iZXJWaWFPcmdBY2NvdW50cyA9IGdldCgpLm9yZ0FjY291bnRzLnNvbWUoXG4gICAgICAgICAgKG9hKSA9PlxuICAgICAgICAgICAgb2Eub3JnX2lkID09PSBvcmcub3JnX2lkICYmIG9hLmFjY291bnRfaWQgPT09IGZpbHRlcnMuYWNjb3VudF9pZCxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBpc1BlcnNvbmFsT3JnID1cbiAgICAgICAgICBvcmcuaXNfcGVyc29uYWxfb3JnICYmIG9yZy5vd25lcl9hY2NvdW50X2lkID09PSBmaWx0ZXJzLmFjY291bnRfaWRcbiAgICAgICAgcmV0dXJuIGlzTWVtYmVyVmlhT3JnQWNjb3VudHMgfHwgaXNQZXJzb25hbE9yZ1xuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGZpbHRlcnM/LmdpdGh1Yl9oYW5kbGUpIHtcbiAgICAgIG9yZ3MgPSBvcmdzLmZpbHRlcigob3JnKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjY291bnQgPSBnZXQoKS5hY2NvdW50cy5maW5kKFxuICAgICAgICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRfaWQgPT09IG9yZy5vd25lcl9hY2NvdW50X2lkLFxuICAgICAgICApXG4gICAgICAgIHJldHVybiBhY2NvdW50Py5naXRodWJfdXNlcm5hbWUgPT09IGZpbHRlcnMuZ2l0aHViX2hhbmRsZVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGZpbHRlcnM/LnRzY2lyY3VpdF9oYW5kbGUpIHtcbiAgICAgIGNvbnN0IGFjY291bnQgPSBnZXQoKS5hY2NvdW50cy5maW5kKFxuICAgICAgICAoYWNjb3VudCkgPT4gYWNjb3VudC50c2NpcmN1aXRfaGFuZGxlID09PSBmaWx0ZXJzLnRzY2lyY3VpdF9oYW5kbGUsXG4gICAgICApXG4gICAgICBvcmdzID0gb3Jncy5maWx0ZXIoKG9yZykgPT4ge1xuICAgICAgICBjb25zdCBvcmdBY2NvdW50ID0gZ2V0KCkub3JnQWNjb3VudHMuZmluZChcbiAgICAgICAgICAob2EpID0+XG4gICAgICAgICAgICBvYS5vcmdfaWQgPT09IG9yZy5vcmdfaWQgJiYgb2EuYWNjb3VudF9pZCA9PT0gYWNjb3VudD8uYWNjb3VudF9pZCxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBpc1BlcnNvbmFsT3JnID1cbiAgICAgICAgICBvcmcuaXNfcGVyc29uYWxfb3JnICYmIG9yZy5vd25lcl9hY2NvdW50X2lkID09PSBhY2NvdW50Py5hY2NvdW50X2lkXG4gICAgICAgIHJldHVybiBCb29sZWFuKG9yZ0FjY291bnQpIHx8IGlzUGVyc29uYWxPcmdcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChmaWx0ZXJzPy5uYW1lKSB7XG4gICAgICBvcmdzID0gb3Jncy5maWx0ZXIoXG4gICAgICAgIChvcmcpID0+XG4gICAgICAgICAgb3JnLmdpdGh1Yl9oYW5kbGUgPT09IGZpbHRlcnMubmFtZSB8fFxuICAgICAgICAgIG9yZy50c2NpcmN1aXRfaGFuZGxlID09PSBmaWx0ZXJzLm5hbWUsXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZ3MubWFwKChvcmcpID0+IHtcbiAgICAgIGNvbnN0IG1lbWJlcl9jb3VudCA9IGdldCgpLmFjY291bnRzLmZpbHRlcihcbiAgICAgICAgKGFjY291bnQpID0+IGFjY291bnQucGVyc29uYWxfb3JnX2lkID09PSBvcmcub3JnX2lkLFxuICAgICAgKS5sZW5ndGhcblxuICAgICAgY29uc3QgcGFja2FnZV9jb3VudCA9IGdldCgpLnBhY2thZ2VzLmZpbHRlcihcbiAgICAgICAgKHBrZykgPT4gcGtnLm93bmVyX29yZ19pZCA9PT0gb3JnLm9yZ19pZCxcbiAgICAgICkubGVuZ3RoXG5cbiAgICAgIGNvbnN0IGNhbl9tYW5hZ2Vfb3JnID0gYXV0aFxuICAgICAgICA/IG9yZy5vd25lcl9hY2NvdW50X2lkID09PSBhdXRoLmFjY291bnRfaWRcbiAgICAgICAgOiBmYWxzZVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vcmcsXG4gICAgICAgIG1lbWJlcl9jb3VudCxcbiAgICAgICAgcGFja2FnZV9jb3VudCxcbiAgICAgICAgY2FuX21hbmFnZV9vcmcsXG4gICAgICB9XG4gICAgfSlcbiAgfSxcbiAgZ2V0T3JnOiAoXG4gICAgZmlsdGVyczoge1xuICAgICAgb3JnX2lkPzogc3RyaW5nXG4gICAgICBnaXRodWJfaGFuZGxlPzogc3RyaW5nXG4gICAgICB0c2NpcmN1aXRfaGFuZGxlPzogc3RyaW5nXG4gICAgfSxcbiAgICBhdXRoPzogeyBhY2NvdW50X2lkOiBzdHJpbmcgfSxcbiAgKSA9PiB7XG4gICAgbGV0IG9yZ3MgPSBnZXQoKS5vcmdhbml6YXRpb25zXG5cbiAgICBpZiAoZmlsdGVycz8ub3JnX2lkKSB7XG4gICAgICBvcmdzID0gb3Jncy5maWx0ZXIoKG9yZykgPT4gb3JnLm9yZ19pZCA9PT0gZmlsdGVycy5vcmdfaWQpXG4gICAgfVxuICAgIC8vIGlmIChmaWx0ZXJzPy5vcmdfbmFtZSAmJiBhdXRoPy5hY2NvdW50X2lkKSB7XG4gICAgLy8gICBjb25zdCBhY2NvdW50ID0gZ2V0KCkuYWNjb3VudHMuZmluZCh4ID0+IHguYWNjb3VudF9pZCA9PSBhdXRoPy5hY2NvdW50X2lkKVxuICAgIC8vICAgb3JncyA9IG9yZ3MuZmlsdGVyKChvcmcpID0+IG9yZy5naXRodWJfaGFuZGxlID09PSBhY2NvdW50Py5naXRodWJfdXNlcm5hbWUpXG4gICAgLy8gfVxuICAgIGlmIChmaWx0ZXJzPy5naXRodWJfaGFuZGxlKSB7XG4gICAgICBvcmdzID0gb3Jncy5maWx0ZXIoKG9yZykgPT4gb3JnLmdpdGh1Yl9oYW5kbGUgPT09IGZpbHRlcnMuZ2l0aHViX2hhbmRsZSlcbiAgICB9XG4gICAgaWYgKGZpbHRlcnM/LnRzY2lyY3VpdF9oYW5kbGUpIHtcbiAgICAgIG9yZ3MgPSBvcmdzLmZpbHRlcihcbiAgICAgICAgKG9yZykgPT4gb3JnLnRzY2lyY3VpdF9oYW5kbGUgPT09IGZpbHRlcnMudHNjaXJjdWl0X2hhbmRsZSxcbiAgICAgIClcbiAgICB9XG4gICAgaWYgKG9yZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IG9yZyA9IG9yZ3NbMF1cbiAgICBjb25zdCBvcmdBY2NvdW50ID0gZ2V0KCkub3JnQWNjb3VudHMuZmluZChcbiAgICAgIChvYSkgPT4gb2Eub3JnX2lkID09PSBvcmcub3JnX2lkICYmIG9hLmFjY291bnRfaWQgPT09IGF1dGg/LmFjY291bnRfaWQsXG4gICAgKVxuICAgIGNvbnN0IGlzT3duZXIgPSBvcmcub3duZXJfYWNjb3VudF9pZCA9PT0gYXV0aD8uYWNjb3VudF9pZFxuXG4gICAgY29uc3QgbWVtYmVyX2NvdW50ID0gZ2V0KCkuYWNjb3VudHMuZmlsdGVyKFxuICAgICAgKGFjY291bnQpID0+IGFjY291bnQucGVyc29uYWxfb3JnX2lkID09PSBvcmcub3JnX2lkLFxuICAgICkubGVuZ3RoXG5cbiAgICBjb25zdCBwYWNrYWdlX2NvdW50ID0gZ2V0KCkucGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHBrZykgPT4gcGtnLm93bmVyX29yZ19pZCA9PT0gb3JnLm9yZ19pZCxcbiAgICApLmxlbmd0aFxuXG4gICAgY29uc3QgY2FuX21hbmFnZV9vcmcgPSBpc093bmVyID8gdHJ1ZSA6IG9yZ0FjY291bnQ/LmNhbl9tYW5hZ2Vfb3JnIHx8IGZhbHNlXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3JnLFxuICAgICAgbWVtYmVyX2NvdW50LFxuICAgICAgcGFja2FnZV9jb3VudCxcbiAgICAgIGNhbl9tYW5hZ2Vfb3JnLFxuICAgIH1cbiAgfSxcbiAgYWRkT3JnYW5pemF0aW9uQWNjb3VudDogKG9yZ2FuaXphdGlvbkFjY291bnQ6IHtcbiAgICBvcmdfaWQ6IHN0cmluZ1xuICAgIGFjY291bnRfaWQ6IHN0cmluZ1xuICAgIGlzX293bmVyPzogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgY29uc3QgY2FuX21hbmFnZV9vcmcgPSBvcmdhbml6YXRpb25BY2NvdW50LmlzX293bmVyIHx8IGZhbHNlXG4gICAgY29uc3QgbmV3T3JnQWNjb3VudDogT3JnQWNjb3VudCA9IHtcbiAgICAgIG9yZ19hY2NvdW50X2lkOiBgb3JnX2FjY291bnRfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICBvcmdfaWQ6IG9yZ2FuaXphdGlvbkFjY291bnQub3JnX2lkLFxuICAgICAgYWNjb3VudF9pZDogb3JnYW5pemF0aW9uQWNjb3VudC5hY2NvdW50X2lkLFxuICAgICAgaXNfb3duZXI6IG9yZ2FuaXphdGlvbkFjY291bnQuaXNfb3duZXIgfHwgZmFsc2UsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBjYW5fbWFuYWdlX29yZyxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIG9yZ0FjY291bnRzOiBbLi4uc3RhdGUub3JnQWNjb3VudHMsIG5ld09yZ0FjY291bnRdLFxuICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdPcmdBY2NvdW50XG4gIH0sXG4gIGdldE9yZ2FuaXphdGlvbkFjY291bnQ6IChmaWx0ZXJzOiB7XG4gICAgb3JnX2lkPzogc3RyaW5nXG4gICAgYWNjb3VudF9pZD86IHN0cmluZ1xuICB9KTogT3JnQWNjb3VudCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmdBY2NvdW50cy5maW5kKChvcmdBY2NvdW50KSA9PiB7XG4gICAgICBpZiAoZmlsdGVycy5vcmdfaWQgJiYgb3JnQWNjb3VudC5vcmdfaWQgIT09IGZpbHRlcnMub3JnX2lkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgaWYgKGZpbHRlcnMuYWNjb3VudF9pZCAmJiBvcmdBY2NvdW50LmFjY291bnRfaWQgIT09IGZpbHRlcnMuYWNjb3VudF9pZCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSlcbiAgfSxcbiAgZ2V0T3JnYW5pemF0aW9uQWNjb3VudHM6IChmaWx0ZXJzPzoge1xuICAgIG9yZ19pZD86IHN0cmluZ1xuICAgIGFjY291bnRfaWQ/OiBzdHJpbmdcbiAgfSk6IE9yZ0FjY291bnRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmdBY2NvdW50cy5maWx0ZXIoKG9yZ0FjY291bnQpID0+IHtcbiAgICAgIGlmIChmaWx0ZXJzPy5vcmdfaWQgJiYgb3JnQWNjb3VudC5vcmdfaWQgIT09IGZpbHRlcnMub3JnX2lkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgaWYgKGZpbHRlcnM/LmFjY291bnRfaWQgJiYgb3JnQWNjb3VudC5hY2NvdW50X2lkICE9PSBmaWx0ZXJzLmFjY291bnRfaWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0pXG4gIH0sXG4gIHJlbW92ZU9yZ2FuaXphdGlvbkFjY291bnQ6IChmaWx0ZXJzOiB7XG4gICAgb3JnX2lkOiBzdHJpbmdcbiAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgfSk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCByZW1vdmVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLm9yZ0FjY291bnRzLmZpbmRJbmRleChcbiAgICAgICAgKG9yZ0FjY291bnQpID0+XG4gICAgICAgICAgb3JnQWNjb3VudC5vcmdfaWQgPT09IGZpbHRlcnMub3JnX2lkICYmXG4gICAgICAgICAgb3JnQWNjb3VudC5hY2NvdW50X2lkID09PSBmaWx0ZXJzLmFjY291bnRfaWQsXG4gICAgICApXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHN0YXRlLm9yZ0FjY291bnRzLnNwbGljZShpbmRleCwgMSlcbiAgICAgICAgcmVtb3ZlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdGF0ZVxuICAgIH0pXG4gICAgcmV0dXJuIHJlbW92ZWRcbiAgfSxcbiAgdXBkYXRlT3JnYW5pemF0aW9uQWNjb3VudDogKFxuICAgIGZpbHRlcnM6IHtcbiAgICAgIG9yZ19pZDogc3RyaW5nXG4gICAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgICB9LFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8VXNlclBlcm1pc3Npb25zPixcbiAgKTogT3JnQWNjb3VudCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgbGV0IHVwZGF0ZWRPcmdBY2NvdW50OiBPcmdBY2NvdW50IHwgdW5kZWZpbmVkXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5vcmdBY2NvdW50cy5maW5kSW5kZXgoXG4gICAgICAgIChvcmdBY2NvdW50KSA9PlxuICAgICAgICAgIG9yZ0FjY291bnQub3JnX2lkID09PSBmaWx0ZXJzLm9yZ19pZCAmJlxuICAgICAgICAgIG9yZ0FjY291bnQuYWNjb3VudF9pZCA9PT0gZmlsdGVycy5hY2NvdW50X2lkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG4gICAgICBjb25zdCB1cGRhdGVkT3JnQWNjb3VudHMgPSBbLi4uc3RhdGUub3JnQWNjb3VudHNdXG4gICAgICB1cGRhdGVkT3JnQWNjb3VudHNbaW5kZXhdID0ge1xuICAgICAgICAuLi51cGRhdGVkT3JnQWNjb3VudHNbaW5kZXhdLFxuICAgICAgICAuLi51cGRhdGVzLFxuICAgICAgfVxuICAgICAgdXBkYXRlZE9yZ0FjY291bnQgPSB1cGRhdGVkT3JnQWNjb3VudHNbaW5kZXhdXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgb3JnQWNjb3VudHM6IHVwZGF0ZWRPcmdBY2NvdW50cyB9XG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZE9yZ0FjY291bnRcbiAgfSxcbiAgdXBkYXRlT3JnYW5pemF0aW9uOiAoXG4gICAgb3JnSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPE9yZ2FuaXphdGlvbj4sXG4gICk6IE9yZ2FuaXphdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgbGV0IHVwZGF0ZWRPcmc6IE9yZ2FuaXphdGlvbiB8IHVuZGVmaW5lZFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IG9yZ0luZGV4ID0gc3RhdGUub3JnYW5pemF0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgIChvcmcpID0+IG9yZy5vcmdfaWQgPT09IG9yZ0lkLFxuICAgICAgKVxuICAgICAgaWYgKG9yZ0luZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG4gICAgICBjb25zdCB1cGRhdGVkT3JnYW5pemF0aW9ucyA9IFsuLi5zdGF0ZS5vcmdhbml6YXRpb25zXVxuICAgICAgdXBkYXRlZE9yZ2FuaXphdGlvbnNbb3JnSW5kZXhdID0ge1xuICAgICAgICAuLi51cGRhdGVkT3JnYW5pemF0aW9uc1tvcmdJbmRleF0sXG4gICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICB9XG4gICAgICB1cGRhdGVkT3JnID0gdXBkYXRlZE9yZ2FuaXphdGlvbnNbb3JnSW5kZXhdXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgb3JnYW5pemF0aW9uczogdXBkYXRlZE9yZ2FuaXphdGlvbnMgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVwZGF0ZWRPcmdcbiAgfSxcbiAgZGVsZXRlT3JnYW5pemF0aW9uOiAob3JnSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCBkZWxldGVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBvcmdJbmRleCA9IHN0YXRlLm9yZ2FuaXphdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAob3JnKSA9PiBvcmcub3JnX2lkID09PSBvcmdJZCxcbiAgICAgIClcbiAgICAgIGlmIChvcmdJbmRleCA9PT0gLTEpIHJldHVybiBzdGF0ZVxuXG4gICAgICBjb25zdCB1cGRhdGVkT3JnYW5pemF0aW9ucyA9IFsuLi5zdGF0ZS5vcmdhbml6YXRpb25zXVxuICAgICAgdXBkYXRlZE9yZ2FuaXphdGlvbnMuc3BsaWNlKG9yZ0luZGV4LCAxKVxuXG4gICAgICBjb25zdCB1cGRhdGVkT3JnQWNjb3VudHMgPSBzdGF0ZS5vcmdBY2NvdW50cy5maWx0ZXIoXG4gICAgICAgIChvcmdBY2NvdW50KSA9PiBvcmdBY2NvdW50Lm9yZ19pZCAhPT0gb3JnSWQsXG4gICAgICApXG5cbiAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgb3JnYW5pemF0aW9uczogdXBkYXRlZE9yZ2FuaXphdGlvbnMsXG4gICAgICAgIG9yZ0FjY291bnRzOiB1cGRhdGVkT3JnQWNjb3VudHMsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gZGVsZXRlZFxuICB9LFxuICBkZWxldGVBY2NvdW50OiAoYWNjb3VudElkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5hY2NvdW50cy5maW5kSW5kZXgoXG4gICAgICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRfaWQgPT09IGFjY291bnRJZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc3RhdGUuYWNjb3VudHMuc3BsaWNlKGluZGV4LCAxKVxuICAgICAgICBkZWxldGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfSlcbiAgICByZXR1cm4gZGVsZXRlZFxuICB9LFxuICBhZGRPcmdJbnZpdGF0aW9uOiAoaW52aXRhdGlvbjoge1xuICAgIG9yZ19pZDogc3RyaW5nXG4gICAgaW52aXRlZV9lbWFpbDogc3RyaW5nXG4gICAgaW52aXRlcl9hY2NvdW50X2lkOiBzdHJpbmdcbiAgICBpbnZpdGF0aW9uX3Rva2VuOiBzdHJpbmdcbiAgfSk6IE9yZ0ludml0YXRpb24gPT4ge1xuICAgIGNvbnN0IGV4cGlyZXNBdCA9IG5ldyBEYXRlKClcbiAgICBleHBpcmVzQXQuc2V0RGF0ZShleHBpcmVzQXQuZ2V0RGF0ZSgpICsgNykgLy8gNyBkYXlzIGZyb20gbm93XG5cbiAgICBjb25zdCBuZXdJbnZpdGF0aW9uOiBPcmdJbnZpdGF0aW9uID0ge1xuICAgICAgb3JnX2ludml0YXRpb25faWQ6IGBvcmdfaW52aXRhdGlvbl8ke2dldCgpLmlkQ291bnRlciArIDF9YCxcbiAgICAgIG9yZ19pZDogaW52aXRhdGlvbi5vcmdfaWQsXG4gICAgICBpbnZpdGVlX2VtYWlsOiBpbnZpdGF0aW9uLmludml0ZWVfZW1haWwsXG4gICAgICBpbnZpdGVyX2FjY291bnRfaWQ6IGludml0YXRpb24uaW52aXRlcl9hY2NvdW50X2lkLFxuICAgICAgaW52aXRhdGlvbl90b2tlbjogaW52aXRhdGlvbi5pbnZpdGF0aW9uX3Rva2VuLFxuICAgICAgaXNfbGlua19pbnZpdGU6IGZhbHNlLFxuICAgICAgaXNfcGVuZGluZzogdHJ1ZSxcbiAgICAgIGlzX2FjY2VwdGVkOiBmYWxzZSxcbiAgICAgIGlzX2V4cGlyZWQ6IGZhbHNlLFxuICAgICAgaXNfcmV2b2tlZDogZmFsc2UsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBleHBpcmVzX2F0OiBleHBpcmVzQXQudG9JU09TdHJpbmcoKSxcbiAgICAgIGFjY2VwdGVkX2F0OiBudWxsLFxuICAgICAgYWNjZXB0ZWRfYnlfYWNjb3VudF9pZDogbnVsbCxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIG9yZ0ludml0YXRpb25zOiBbLi4uc3RhdGUub3JnSW52aXRhdGlvbnMsIG5ld0ludml0YXRpb25dLFxuICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdJbnZpdGF0aW9uXG4gIH0sXG4gIGdldE9yZ0ludml0YXRpb25CeVRva2VuOiAodG9rZW46IHN0cmluZyk6IE9yZ0ludml0YXRpb24gfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUub3JnSW52aXRhdGlvbnMuZmluZChcbiAgICAgIChpbnZpdGF0aW9uKSA9PiBpbnZpdGF0aW9uLmludml0YXRpb25fdG9rZW4gPT09IHRva2VuLFxuICAgIClcbiAgfSxcbiAgbGlzdE9yZ0ludml0YXRpb25zOiAob3JnSWQ6IHN0cmluZyk6IE9yZ0ludml0YXRpb25bXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmdJbnZpdGF0aW9ucy5maWx0ZXIoXG4gICAgICAoaW52aXRhdGlvbikgPT4gaW52aXRhdGlvbi5vcmdfaWQgPT09IG9yZ0lkLFxuICAgIClcbiAgfSxcbiAgdXBkYXRlT3JnSW52aXRhdGlvbjogKFxuICAgIGludml0YXRpb25JZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8T3JnSW52aXRhdGlvbj4sXG4gICk6IE9yZ0ludml0YXRpb24gfCB1bmRlZmluZWQgPT4ge1xuICAgIGxldCB1cGRhdGVkSW52aXRhdGlvbjogT3JnSW52aXRhdGlvbiB8IHVuZGVmaW5lZFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gc3RhdGUub3JnSW52aXRhdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAoaW52KSA9PiBpbnYub3JnX2ludml0YXRpb25faWQgPT09IGludml0YXRpb25JZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiBzdGF0ZVxuICAgICAgY29uc3QgdXBkYXRlZEludml0YXRpb25zID0gWy4uLnN0YXRlLm9yZ0ludml0YXRpb25zXVxuICAgICAgdXBkYXRlZEludml0YXRpb25zW2luZGV4XSA9IHtcbiAgICAgICAgLi4udXBkYXRlZEludml0YXRpb25zW2luZGV4XSxcbiAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgIH1cbiAgICAgIHVwZGF0ZWRJbnZpdGF0aW9uID0gdXBkYXRlZEludml0YXRpb25zW2luZGV4XVxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG9yZ0ludml0YXRpb25zOiB1cGRhdGVkSW52aXRhdGlvbnMgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVwZGF0ZWRJbnZpdGF0aW9uXG4gIH0sXG59KSlcbiIsICJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBjb25zdCBlcnJvclNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZXJyb3JfY29kZTogei5zdHJpbmcoKSxcbiAgICBtZXNzYWdlOiB6LnN0cmluZygpLFxuICB9KVxuICAucGFzc3Rocm91Z2goKVxuXG5leHBvcnQgY29uc3QgZXJyb3JSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZXJyb3I6IGVycm9yU2NoZW1hLFxufSlcblxuZXhwb3J0IGNvbnN0IGxvZyA9IHouYW55KClcblxuZXhwb3J0IGNvbnN0IHNuaXBwZXRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCksXG4gIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKSxcbiAgb3duZXJfbmFtZTogei5zdHJpbmcoKSxcbiAgaXNfc3RhcnJlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGNvZGU6IHouc3RyaW5nKCksXG4gIGR0czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjb21waWxlZF9qczogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gIGNpcmN1aXRfanNvbjogei5hcnJheSh6LnJlY29yZCh6LmFueSgpKSkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgdXBkYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgc3RhcnJlZF9hdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHZlcnNpb246IHouc3RyaW5nKCkuZGVmYXVsdChcIjAuMC4xXCIpLFxuICBzdGFyX2NvdW50OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wdWJsaWM6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgdGFnczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIFNuaXBwZXQgPSB6LmluZmVyPHR5cGVvZiBzbmlwcGV0U2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgc2Vzc2lvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgZXhwaXJlc19hdDogei5zdHJpbmcoKSxcbiAgaXNfY2xpX3Nlc3Npb246IHouYm9vbGVhbigpLFxufSlcbmV4cG9ydCB0eXBlIFNlc3Npb24gPSB6LmluZmVyPHR5cGVvZiBzZXNzaW9uU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgbG9naW5QYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBsb2dpbl9wYWdlX2lkOiB6LnN0cmluZygpLFxuICBsb2dpbl9wYWdlX2F1dGhfdG9rZW46IHouc3RyaW5nKCksXG4gIHdhc19sb2dpbl9zdWNjZXNzZnVsOiB6LmJvb2xlYW4oKSxcbiAgaGFzX2JlZW5fdXNlZF90b19jcmVhdGVfc2Vzc2lvbjogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG59KVxuZXhwb3J0IHR5cGUgTG9naW5QYWdlID0gei5pbmZlcjx0eXBlb2YgbG9naW5QYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgc2hpcHBpbmdJbmZvU2NoZW1hID0gei5vYmplY3Qoe1xuICBmaXJzdE5hbWU6IHouc3RyaW5nKCksXG4gIGxhc3ROYW1lOiB6LnN0cmluZygpLFxuICBjb21wYW55TmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhZGRyZXNzOiB6LnN0cmluZygpLFxuICBhcGFydG1lbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY2l0eTogei5zdHJpbmcoKSxcbiAgc3RhdGU6IHouc3RyaW5nKCksXG4gIHppcENvZGU6IHouc3RyaW5nKCksXG4gIGNvdW50cnk6IHouc3RyaW5nKCksXG4gIHBob25lOiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCBjb25zdCBhY2NvdW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gIHRzY2lyY3VpdF9oYW5kbGU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgc2hpcHBpbmdJbmZvOiBzaGlwcGluZ0luZm9TY2hlbWEub3B0aW9uYWwoKSxcbiAgcGVyc29uYWxfb3JnX2lkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGlzX3RzY2lyY3VpdF9zdGFmZjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGVtYWlsOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY3JlYXRlZF9hdDogei5kYXRlKCksXG59KVxuZXhwb3J0IHR5cGUgQWNjb3VudCA9IHouaW5mZXI8dHlwZW9mIGFjY291bnRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBwdWJsaWNBY2NvdW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgdHNjaXJjdWl0X2hhbmRsZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBwZXJzb25hbF9vcmdfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgY3JlYXRlZF9hdDogei5kYXRlKCksXG59KVxuXG5leHBvcnQgdHlwZSBQdWJsaWNBY2NvdW50ID0gei5pbmZlcjx0eXBlb2YgcHVibGljQWNjb3VudFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IG9yZGVyU2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBpc19ydW5uaW5nOiB6LmJvb2xlYW4oKSxcbiAgaXNfc3RhcnRlZDogei5ib29sZWFuKCksXG4gIGlzX2ZpbmlzaGVkOiB6LmJvb2xlYW4oKSxcbiAgZXJyb3I6IGVycm9yU2NoZW1hLm51bGxhYmxlKCksXG4gIGhhc19lcnJvcjogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHN0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgY29tcGxldGVkX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNpcmN1aXRfanNvbjogei5hbnkoKSxcbn0pXG5leHBvcnQgdHlwZSBPcmRlciA9IHouaW5mZXI8dHlwZW9mIG9yZGVyU2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgb3JkZXJGaWxlU2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmRlcl9maWxlX2lkOiB6LnN0cmluZygpLFxuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgaXNfZ2VyYmVyc196aXA6IHouYm9vbGVhbigpLFxuICBjb250ZW50X3R5cGU6IHouc3RyaW5nKCksXG4gIGZvcl9wcm92aWRlcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB1cGxvYWRlZF9hdDogei5zdHJpbmcoKSxcbiAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNvbnRlbnRfYnl0ZXM6IHouaW5zdGFuY2VvZihVaW50OEFycmF5KS5udWxsYWJsZSgpLFxufSlcbmV4cG9ydCB0eXBlIE9yZGVyRmlsZSA9IHouaW5mZXI8dHlwZW9mIG9yZGVyRmlsZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGJ1Z1JlcG9ydFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYnVnX3JlcG9ydF9pZDogei5zdHJpbmcoKS51dWlkKCksXG4gIHJlcG9ydGVyX2FjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIHRleHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgaXNfYXV0b19kZWxldGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgZGVsZXRlX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICBmaWxlX2NvdW50OiB6Lm51bWJlcigpLmludCgpLFxufSlcbmV4cG9ydCB0eXBlIEJ1Z1JlcG9ydCA9IHouaW5mZXI8dHlwZW9mIGJ1Z1JlcG9ydFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGJ1Z1JlcG9ydEZpbGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGJ1Z19yZXBvcnRfZmlsZV9pZDogei5zdHJpbmcoKS51dWlkKCksXG4gIGJ1Z19yZXBvcnRfaWQ6IHouc3RyaW5nKCkudXVpZCgpLFxuICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gIGNvbnRlbnRfbWltZXR5cGU6IHouc3RyaW5nKCksXG4gIGlzX3RleHQ6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjb250ZW50X2J5dGVzOiB6Lmluc3RhbmNlb2YoVWludDhBcnJheSkubnVsbGFibGUoKSxcbn0pXG5leHBvcnQgY29uc3QgYnVnUmVwb3J0RmlsZVJlc3BvbnNlU2NoZW1hID0gYnVnUmVwb3J0RmlsZVNjaGVtYS5vbWl0KHtcbiAgY29udGVudF90ZXh0OiB0cnVlLFxuICBjb250ZW50X2J5dGVzOiB0cnVlLFxufSlcbmV4cG9ydCB0eXBlIEJ1Z1JlcG9ydEZpbGUgPSB6LmluZmVyPHR5cGVvZiBidWdSZXBvcnRGaWxlU2NoZW1hPlxuXG5jb25zdCBzaGlwcGluZ09wdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY2Fycmllcjogei5zdHJpbmcoKSxcbiAgc2VydmljZTogei5zdHJpbmcoKSxcbiAgY29zdDogei5udW1iZXIoKSxcbn0pXG5leHBvcnQgdHlwZSBTaGlwcGluZ09wdGlvbiA9IHouaW5mZXI8dHlwZW9mIHNoaXBwaW5nT3B0aW9uU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcXVvdGVkQ29tcG9uZW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBtYW51ZmFjdHVyZXJfcGFydF9udW1iZXI6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgc3VwcGxpZXJfcGFydF9udW1iZXI6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcXVhbnRpdHk6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgdW5pdF9wcmljZTogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICB0b3RhbF9wcmljZTogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICBhdmFpbGFibGU6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG59KVxuZXhwb3J0IHR5cGUgUXVvdGVkQ29tcG9uZW50ID0gei5pbmZlcjx0eXBlb2YgcXVvdGVkQ29tcG9uZW50U2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgb3JkZXJRdW90ZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgb3JkZXJfcXVvdGVfaWQ6IHouc3RyaW5nKCksXG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGlzX2NvbXBsZXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3Byb2Nlc3Npbmc6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIHZlbmRvcl9uYW1lOiB6LnN0cmluZygpLFxuICBlcnJvcjogZXJyb3JTY2hlbWEubnVsbGFibGUoKSxcbiAgaGFzX2Vycm9yOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgdXBkYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgY29tcGxldGVkX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHF1b3RlZF9jb21wb25lbnRzOiB6LmFycmF5KHF1b3RlZENvbXBvbmVudFNjaGVtYSkubnVsbGFibGUoKSxcbiAgYmFyZV9wY2JfY29zdDogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICBzaGlwcGluZ19vcHRpb25zOiB6LmFycmF5KHNoaXBwaW5nT3B0aW9uU2NoZW1hKSxcbiAgdG90YWxfY29zdF93aXRob3V0X3NoaXBwaW5nOiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG59KVxuZXhwb3J0IHR5cGUgT3JkZXJRdW90ZSA9IHouaW5mZXI8dHlwZW9mIG9yZGVyUXVvdGVTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBhaVJldmlld1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWlfcmV2aWV3X2lkOiB6LnN0cmluZygpLnV1aWQoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGFpX3Jldmlld190ZXh0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHN0YXJ0X3Byb2Nlc3NpbmdfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLFxuICBmaW5pc2hlZF9wcm9jZXNzaW5nX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKSxcbiAgcHJvY2Vzc2luZ19lcnJvcjogei5hbnkoKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGRpc3BsYXlfc3RhdHVzOiB6LmVudW0oW1wicGVuZGluZ1wiLCBcImNvbXBsZXRlZFwiLCBcImZhaWxlZFwiXSksXG59KVxuZXhwb3J0IHR5cGUgQWlSZXZpZXcgPSB6LmluZmVyPHR5cGVvZiBhaVJldmlld1NjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGRhdGFzaGVldFBpbkluZm9ybWF0aW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICBwaW5fbnVtYmVyOiB6LnN0cmluZygpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKSxcbiAgY2FwYWJpbGl0aWVzOiB6LmFycmF5KHouc3RyaW5nKCkpLFxufSlcblxuZXhwb3J0IGNvbnN0IGRhdGFzaGVldFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZGF0YXNoZWV0X2lkOiB6LnN0cmluZygpLFxuICBjaGlwX25hbWU6IHouc3RyaW5nKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHBpbl9pbmZvcm1hdGlvbjogZGF0YXNoZWV0UGluSW5mb3JtYXRpb25TY2hlbWEuYXJyYXkoKS5udWxsYWJsZSgpLFxuICBkYXRhc2hlZXRfcGRmX3VybHM6IHouYXJyYXkoei5zdHJpbmcoKSkubnVsbGFibGUoKSxcbiAgYWlfZGVzY3JpcHRpb246IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbn0pXG5leHBvcnQgdHlwZSBEYXRhc2hlZXQgPSB6LmluZmVyPHR5cGVvZiBkYXRhc2hlZXRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBnaXRodWJJbnN0YWxsYXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGdpdGh1Yl9pbnN0YWxsYXRpb25faWQ6IHouc3RyaW5nKCksXG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIGluc3RhbGxhdGlvbl9pZDogei5zdHJpbmcoKSwgLy8gR2l0SHViIEFwcCBpbnN0YWxsYXRpb24gSURcbiAgZ2l0aHViX3VzZXJuYW1lOiB6LnN0cmluZygpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgaXNfYWN0aXZlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICBhY2Nlc3NfdG9rZW46IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLCAvLyBGb3Igc3RvcmluZyBHaXRIdWIgYWNjZXNzIHRva2VuXG4gIGFjY2Vzc190b2tlbl9leHBpcmVzX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIEdpdGh1Ykluc3RhbGxhdGlvbiA9IHouaW5mZXI8dHlwZW9mIGdpdGh1Ykluc3RhbGxhdGlvblNjaGVtYT5cblxuLy8gVE9ETzogUmVtb3ZlIHRoaXMgc2NoZW1hIGFmdGVyIG1pZ3JhdGlvbiB0byBhY2NvdW50UGFja2FnZXMgaXMgY29tcGxldGVcbmV4cG9ydCBjb25zdCBhY2NvdW50U25pcHBldFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgaGFzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICB1cGRhdGVkX2F0OiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCB0eXBlIEFjY291bnRTbmlwcGV0ID0gei5pbmZlcjx0eXBlb2YgYWNjb3VudFNuaXBwZXRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBhY2NvdW50UGFja2FnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWNjb3VudF9wYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgdXBkYXRlZF9hdDogei5zdHJpbmcoKSxcbn0pXG5leHBvcnQgdHlwZSBBY2NvdW50UGFja2FnZSA9IHouaW5mZXI8dHlwZW9mIGFjY291bnRQYWNrYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZVJlbGVhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgdmVyc2lvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBpc19sb2NrZWQ6IHouYm9vbGVhbigpLFxuICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGNvbW1pdF9zaGE6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDogelxuICAgIC5zdHJpbmcoKVxuICAgIC5kYXRldGltZSgpXG4gICAgLm51bGxhYmxlKClcbiAgICAub3B0aW9uYWwoKSxcbiAgaGFzX3RyYW5zcGlsZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB0cmFuc3BpbGF0aW9uX2Vycm9yOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgZnNfc2hhOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgLy8gQnVpbGQgU3RhdHVzIGFuZCBEaXNwbGF5XG4gIGRpc3BsYXlfc3RhdHVzOiB6XG4gICAgLmVudW0oW1wicGVuZGluZ1wiLCBcImJ1aWxkaW5nXCIsIFwiY29tcGxldGVcIiwgXCJlcnJvclwiXSlcbiAgICAuZGVmYXVsdChcInBlbmRpbmdcIiksXG4gIHRvdGFsX2J1aWxkX2R1cmF0aW9uX21zOiB6Lm51bWJlcigpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcblxuICAvLyBUcmFuc3BpbGF0aW9uIFByb2Nlc3NcbiAgdHJhbnNwaWxhdGlvbl9kaXNwbGF5X3N0YXR1czogelxuICAgIC5lbnVtKFtcInBlbmRpbmdcIiwgXCJidWlsZGluZ1wiLCBcImNvbXBsZXRlXCIsIFwiZXJyb3JcIl0pXG4gICAgLmRlZmF1bHQoXCJwZW5kaW5nXCIpLFxuICB0cmFuc3BpbGF0aW9uX2luX3Byb2dyZXNzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgdHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICB0cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgdHJhbnNwaWxhdGlvbl9sb2dzOiB6LmFycmF5KHouYW55KCkpLmRlZmF1bHQoW10pLFxuICB0cmFuc3BpbGF0aW9uX2lzX3N0YWxlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcblxuICAvLyBVc2VyIENvZGUgSm9iIFByb2Nlc3NcbiAgZXh0X3VzZXJfY29kZV9qb2JfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICB1c2VyX2NvZGVfc3RhcnRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgdXNlcl9jb2RlX2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgdXNlcl9jb2RlX2J1aWxkX2xvZ3M6IHouYXJyYXkoei5hbnkoKSkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICB1c2VyX2NvZGVfZXJyb3I6IGVycm9yU2NoZW1hLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgdXNlcl9jb2RlX2xvZ19zdHJlYW1fdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcblxuICAvLyBDaXJjdWl0IEpTT04gQnVpbGQgUHJvY2Vzc1xuICBjaXJjdWl0X2pzb25fYnVpbGRfZGlzcGxheV9zdGF0dXM6IHpcbiAgICAuZW51bShbXCJwZW5kaW5nXCIsIFwiYnVpbGRpbmdcIiwgXCJjb21wbGV0ZVwiLCBcImVycm9yXCJdKVxuICAgIC5kZWZhdWx0KFwicGVuZGluZ1wiKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiB6LmFycmF5KHouYW55KCkpLmRlZmF1bHQoW10pLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfaXNfc3RhbGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuXG4gIC8vIEltYWdlIEdlbmVyYXRpb24gUHJvY2Vzc1xuICBpbWFnZV9nZW5lcmF0aW9uX2Rpc3BsYXlfc3RhdHVzOiB6XG4gICAgLmVudW0oW1wicGVuZGluZ1wiLCBcImJ1aWxkaW5nXCIsIFwiY29tcGxldGVcIiwgXCJlcnJvclwiXSlcbiAgICAuZGVmYXVsdChcInBlbmRpbmdcIiksXG4gIGltYWdlX2dlbmVyYXRpb25faW5fcHJvZ3Jlc3M6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpbWFnZV9nZW5lcmF0aW9uX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGltYWdlX2dlbmVyYXRpb25fY29tcGxldGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBpbWFnZV9nZW5lcmF0aW9uX2xvZ3M6IHouYXJyYXkoei5hbnkoKSkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBpbWFnZV9nZW5lcmF0aW9uX2lzX3N0YWxlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaW1hZ2VfZ2VuZXJhdGlvbl9lcnJvcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGltYWdlX2dlbmVyYXRpb25fZXJyb3JfbGFzdF91cGRhdGVkX2F0OiB6XG4gICAgLnN0cmluZygpXG4gICAgLmRhdGV0aW1lKClcbiAgICAubnVsbGFibGUoKVxuICAgIC5vcHRpb25hbCgpLFxuXG4gIC8vIEFJIFJldmlld1xuICBhaV9yZXZpZXdfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCkub3B0aW9uYWwoKSxcbiAgYWlfcmV2aWV3X3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGFpX3Jldmlld19jb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGFpX3Jldmlld19lcnJvcjogei5hbnkoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gIGFpX3Jldmlld19sb2dzOiB6LmFycmF5KHouYW55KCkpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgYWlfcmV2aWV3X3JlcXVlc3RlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG5cbiAgLy8gUHJldmlld1xuICBpc19wcl9wcmV2aWV3OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgZ2l0aHViX3ByX251bWJlcjogei5udW1iZXIoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG5cbiAgLy8gTGF0ZXN0IEJ1aWxkIFJlZmVyZW5jZVxuICBsYXRlc3RfcGFja2FnZV9idWlsZF9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGJyYW5jaF9uYW1lOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY29tbWl0X21lc3NhZ2U6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBjb21taXRfYXV0aG9yOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcblxuICAvLyBQcmV2aWV3IGltYWdlcyB1cmxcbiAgcGNiX3ByZXZpZXdfaW1hZ2VfdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgc2NoX3ByZXZpZXdfaW1hZ2VfdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgY2FkX3ByZXZpZXdfaW1hZ2VfdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlUmVsZWFzZSA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VSZWxlYXNlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZUZpbGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNvbnRlbnRfYnl0ZXM6IHouaW5zdGFuY2VvZihCdWZmZXIpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgaXNfcmVsZWFzZV90YXJiYWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBucG1fcGFja19vdXRwdXQ6IHouYW55KCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBpc190ZXh0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IHBhY2thZ2VGaWxlTGl0ZVNjaGVtYSA9IHBhY2thZ2VGaWxlU2NoZW1hLm9taXQoe1xuICBjb250ZW50X3RleHQ6IHRydWUsXG59KVxuZXhwb3J0IHR5cGUgUGFja2FnZUZpbGVMaXRlID0gei5pbmZlcjx0eXBlb2YgcGFja2FnZUZpbGVMaXRlU2NoZW1hPlxuZXhwb3J0IHR5cGUgUGFja2FnZUZpbGUgPSB6LmluZmVyPHR5cGVvZiBwYWNrYWdlRmlsZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHBhY2thZ2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gIGNyZWF0b3JfYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgb3duZXJfb3JnX2lkOiB6LnN0cmluZygpLFxuICBvd25lcl9naXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBvcmdfb3duZXJfdHNjaXJjdWl0X2hhbmRsZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgaXNfc25pcHBldDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2JvYXJkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcGFja2FnZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX21vZGVsOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfZm9vdHByaW50OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkubnVsbGFibGUoKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHVibGljOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQodHJ1ZSksXG4gIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19zb3VyY2VfZnJvbV9naXRodWI6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSkub3B0aW9uYWwoKSxcbiAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsYXRlc3RfdmVyc2lvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHdlYnNpdGU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBzdGFyX2NvdW50OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIGFpX2Rlc2NyaXB0aW9uOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGxhdGVzdF9saWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfZnNfc2hhOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgZGVmYXVsdF92aWV3OiB6XG4gICAgLmVudW0oW1wiZmlsZXNcIiwgXCIzZFwiLCBcInBjYlwiLCBcInNjaGVtYXRpY1wiXSlcbiAgICAuZGVmYXVsdChcImZpbGVzXCIpXG4gICAgLm9wdGlvbmFsKCksXG4gIGFsbG93X3ByX3ByZXZpZXdzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKS5vcHRpb25hbCgpLFxuICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKS5vcHRpb25hbCgpLFxuICBsYXRlc3RfcGNiX3ByZXZpZXdfaW1hZ2VfdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgbGF0ZXN0X3NjaF9wcmV2aWV3X2ltYWdlX3VybDogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGxhdGVzdF9jYWRfcHJldmlld19pbWFnZV91cmw6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIFBhY2thZ2UgPSB6LmluZmVyPHR5cGVvZiBwYWNrYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgamxjcGNiT3JkZXJTdGF0ZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiB6LnN0cmluZygpLFxuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19nZXJiZXJfYW5hbHl6ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19ib21fdXBsb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wbnBfdXBsb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19ib21fcG5wX2FuYWx5emVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfYm9tX3BhcnNpbmdfY29tcGxldGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfY29tcG9uZW50c19hdmFpbGFibGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19kZm1fcmVzdWx0X2dlbmVyYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGFyZV9maWxlc19kb3dubG9hZGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX2ZpbmFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2FkZGVkX3RvX2NhcnQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB1cGxvYWRlZF9nZXJiZXJfbWV0YWRhdGE6IHouYW55KCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBnZXJiZXJfYW5hbHlzaXM6IHouYW55KCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICBhcmVfZ2VyYmVyc19nZW5lcmF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjdXJyZW50X3N0ZXA6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxufSlcbmV4cG9ydCB0eXBlIEpsY3BjYk9yZGVyU3RhdGUgPSB6LmluZmVyPHR5cGVvZiBqbGNwY2JPcmRlclN0YXRlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgamxjcGNiT3JkZXJTdGVwUnVuU2NoZW1hID0gei5vYmplY3Qoe1xuICBqbGNwY2Jfb3JkZXJfc3RlcF9ydW5faWQ6IHouc3RyaW5nKCksXG4gIGlzX3J1bm5pbmc6IHouYm9vbGVhbigpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgc3RlcF9mdW5jdGlvbl9uYW1lOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgZXJyb3JfbWVzc2FnZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG59KVxuZXhwb3J0IHR5cGUgSmxjcGNiT3JkZXJTdGVwUnVuID0gei5pbmZlcjx0eXBlb2YgamxjcGNiT3JkZXJTdGVwUnVuU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZUJ1aWxkU2NoZW1hID0gei5vYmplY3Qoe1xuICBwYWNrYWdlX2J1aWxkX2lkOiB6LnN0cmluZygpLnV1aWQoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIHRyYW5zcGlsYXRpb25faW5fcHJvZ3Jlc3M6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB0cmFuc3BpbGF0aW9uX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICB0cmFuc3BpbGF0aW9uX2xvZ3M6IHouYXJyYXkobG9nKS5udWxsYWJsZSgpLFxuICB0cmFuc3BpbGF0aW9uX2Vycm9yOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiB6LmFycmF5KGxvZykubnVsbGFibGUoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgaW1hZ2VfZ2VuZXJhdGlvbl9pbl9wcm9ncmVzczogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGltYWdlX2dlbmVyYXRpb25fc3RhcnRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgaW1hZ2VfZ2VuZXJhdGlvbl9jb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGltYWdlX2dlbmVyYXRpb25fbG9nczogei5hcnJheShsb2cpLm51bGxhYmxlKCksXG4gIGltYWdlX2dlbmVyYXRpb25fZXJyb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBidWlsZF9pbl9wcm9ncmVzczogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGJ1aWxkX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGJ1aWxkX2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYnVpbGRfZXJyb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBidWlsZF9lcnJvcl9sYXN0X3VwZGF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgcHJldmlld191cmw6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBidWlsZF9sb2dzOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgdXNlcl9jb2RlX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIHVzZXJfY29kZV9jb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIHVzZXJfY29kZV9lcnJvcjogei5hbnkoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIHVzZXJfY29kZV9idWlsZF9sb2dzOiB6LmFycmF5KGxvZykubnVsbGFibGUoKSxcbiAgdXNlcl9jb2RlX2xvZ19zdHJlYW1fdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlQnVpbGQgPSB6LmluZmVyPHR5cGVvZiBwYWNrYWdlQnVpbGRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBvcmdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIG9yZ19pZDogei5zdHJpbmcoKSxcbiAgb3duZXJfYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgaXNfcGVyc29uYWxfb3JnOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICBvcmdfZGlzcGxheV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGF2YXRhcl91cmw6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBnaXRodWJfaGFuZGxlOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHRzY2lyY3VpdF9oYW5kbGU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbn0pXG5leHBvcnQgdHlwZSBPcmdhbml6YXRpb24gPSB6LmluZmVyPHR5cGVvZiBvcmdTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBvcmdBY2NvdW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmdfYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgb3JnX2lkOiB6LnN0cmluZygpLFxuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBpc19vd25lcjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgY2FuX21hbmFnZV9vcmc6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxufSlcbmV4cG9ydCB0eXBlIE9yZ0FjY291bnQgPSB6LmluZmVyPHR5cGVvZiBvcmdBY2NvdW50U2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgb3JnSW52aXRhdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgb3JnX2ludml0YXRpb25faWQ6IHouc3RyaW5nKCksXG4gIG9yZ19pZDogei5zdHJpbmcoKSxcbiAgaW52aXRlZV9lbWFpbDogei5zdHJpbmcoKS5lbWFpbCgpLm51bGxhYmxlKCksXG4gIGludml0ZXJfYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgaW52aXRhdGlvbl90b2tlbjogei5zdHJpbmcoKSxcbiAgaXNfbGlua19pbnZpdGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wZW5kaW5nOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICBpc19hY2NlcHRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2V4cGlyZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19yZXZva2VkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICBleHBpcmVzX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGFjY2VwdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKSxcbiAgYWNjZXB0ZWRfYnlfYWNjb3VudF9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxufSlcbmV4cG9ydCB0eXBlIE9yZ0ludml0YXRpb24gPSB6LmluZmVyPHR5cGVvZiBvcmdJbnZpdGF0aW9uU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgdXNlclBlcm1pc3Npb25zU2NoZW1hID0gei5vYmplY3Qoe1xuICBjYW5fbWFuYWdlX29yZzogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgY2FuX21hbmFnZV9wYWNrYWdlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIFVzZXJQZXJtaXNzaW9ucyA9IHouaW5mZXI8dHlwZW9mIHVzZXJQZXJtaXNzaW9uc1NjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHB1YmxpY09yZ1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgb3JnX2lkOiB6LnN0cmluZygpLCAvLy51dWlkKCksXG4gIG93bmVyX2FjY291bnRfaWQ6IHouc3RyaW5nKCksIC8vLnV1aWQoKSxcbiAgbmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBtZW1iZXJfY291bnQ6IHoubnVtYmVyKCksXG4gIGlzX3BlcnNvbmFsX29yZzogei5ib29sZWFuKCksXG4gIGRpc3BsYXlfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBwYWNrYWdlX2NvdW50OiB6Lm51bWJlcigpLFxuICBhdmF0YXJfdXJsOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgZ2l0aHViX2hhbmRsZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBnaXRodWJfaW5zdGFsbGF0aW9uX2hhbmRsZXM6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgdHNjaXJjdWl0X2hhbmRsZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICB1c2VyX3Blcm1pc3Npb25zOiB1c2VyUGVybWlzc2lvbnNTY2hlbWEub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBQdWJsaWNPcmdTY2hlbWEgPSB6LmluZmVyPHR5cGVvZiBwdWJsaWNPcmdTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBkYXRhYmFzZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWRDb3VudGVyOiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBwYWNrYWdlUmVsZWFzZXM6IHouYXJyYXkocGFja2FnZVJlbGVhc2VTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBwYWNrYWdlRmlsZXM6IHouYXJyYXkocGFja2FnZUZpbGVTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBzZXNzaW9uczogei5hcnJheShzZXNzaW9uU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgbG9naW5QYWdlczogei5hcnJheShsb2dpblBhZ2VTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBhY2NvdW50czogei5hcnJheShhY2NvdW50U2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgcGFja2FnZXM6IHouYXJyYXkocGFja2FnZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIG9yZGVyczogei5hcnJheShvcmRlclNjaGVtYSkuZGVmYXVsdChbXSksXG4gIG9yZ2FuaXphdGlvbnM6IHouYXJyYXkob3JnU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgb3JnQWNjb3VudHM6IHouYXJyYXkob3JnQWNjb3VudFNjaGVtYSkuZGVmYXVsdChbXSksXG4gIG9yZ0ludml0YXRpb25zOiB6LmFycmF5KG9yZ0ludml0YXRpb25TY2hlbWEpLmRlZmF1bHQoW10pLFxuICBvcmRlckZpbGVzOiB6LmFycmF5KG9yZGVyRmlsZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGFjY291bnRTbmlwcGV0czogei5hcnJheShhY2NvdW50U25pcHBldFNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGFjY291bnRQYWNrYWdlczogei5hcnJheShhY2NvdW50UGFja2FnZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGpsY3BjYk9yZGVyU3RhdGU6IHouYXJyYXkoamxjcGNiT3JkZXJTdGF0ZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGpsY3BjYk9yZGVyU3RlcFJ1bnM6IHouYXJyYXkoamxjcGNiT3JkZXJTdGVwUnVuU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgb3JkZXJRdW90ZXM6IHouYXJyYXkob3JkZXJRdW90ZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGFpUmV2aWV3czogei5hcnJheShhaVJldmlld1NjaGVtYSkuZGVmYXVsdChbXSksXG4gIGRhdGFzaGVldHM6IHouYXJyYXkoZGF0YXNoZWV0U2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgZ2l0aHViSW5zdGFsbGF0aW9uczogei5hcnJheShnaXRodWJJbnN0YWxsYXRpb25TY2hlbWEpLmRlZmF1bHQoW10pLFxuICBwYWNrYWdlQnVpbGRzOiB6LmFycmF5KHBhY2thZ2VCdWlsZFNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGJ1Z1JlcG9ydHM6IHouYXJyYXkoYnVnUmVwb3J0U2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgYnVnUmVwb3J0RmlsZXM6IHouYXJyYXkoYnVnUmVwb3J0RmlsZVNjaGVtYSkuZGVmYXVsdChbXSksXG59KVxuZXhwb3J0IHR5cGUgRGF0YWJhc2VTY2hlbWEgPSB6LmluZmVyPHR5cGVvZiBkYXRhYmFzZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHRzY2lyY3VpdEhhbmRsZVNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC5taW4oMSlcbiAgLm1heCg0MClcbiAgLnJlZ2V4KFxuICAgIC9eWzAtOUEtWmEtel0oWzAtOUEtWmEtel8tXSpbMC05QS1aYS16XSk/JC8sXG4gICAgXCJ0c2NpcmN1aXRfaGFuZGxlIG11c3Qgc3RhcnQgYW5kIGVuZCB3aXRoIGEgbGV0dGVyIG9yIG51bWJlciwgYW5kIG1heSBvbmx5IGNvbnRhaW4gbGV0dGVycywgbnVtYmVycywgdW5kZXJzY29yZXMsIGFuZCBoeXBoZW5zXCIsXG4gIClcbiIsICJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBqb2luLCBkaXJuYW1lIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCJcbmltcG9ydCB7IERiQ2xpZW50IH0gZnJvbSBcIi4vZGItY2xpZW50XCJcbmltcG9ydCB7IGxvYWRBdXRvbG9hZFBhY2thZ2VzIH0gZnJvbSBcIi4vYXV0b2xvYWQtZGV2LXBhY2thZ2VzXCJcblxuY29uc3QgX19kaXJuYW1lID0gZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpXG5cbmV4cG9ydCBjb25zdCBzZWVkID0gKGRiOiBEYkNsaWVudCkgPT4ge1xuICBjb25zdCB7IGFjY291bnRfaWQgfSA9IGRiLmFkZEFjY291bnQoe1xuICAgIGFjY291bnRfaWQ6IFwiYWNjb3VudC0xMjM0XCIsXG4gICAgcGVyc29uYWxfb3JnX2lkOiBcIm9yZy0xMjM0XCIsXG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgdHNjaXJjdWl0X2hhbmRsZTogXCJ0ZXN0dXNlclwiLFxuICAgIGVtYWlsOiBcInRlc3R1c2VyQHRzY2lyY3VpdC5jb21cIixcbiAgICBzaGlwcGluZ0luZm86IHtcbiAgICAgIGZpcnN0TmFtZTogXCJUZXN0XCIsXG4gICAgICBsYXN0TmFtZTogXCJVc2VyXCIsXG4gICAgICBjb21wYW55TmFtZTogXCJUZXN0IENvbXBhbnlcIixcbiAgICAgIGFkZHJlc3M6IFwiMTIzIFRlc3QgU3RcIixcbiAgICAgIGFwYXJ0bWVudDogXCJBcHQgNEJcIixcbiAgICAgIGNpdHk6IFwiVGVzdHZpbGxlXCIsXG4gICAgICBzdGF0ZTogXCJOWVwiLFxuICAgICAgemlwQ29kZTogXCIxMDAwMVwiLFxuICAgICAgY291bnRyeTogXCJVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2FcIixcbiAgICAgIHBob25lOiBcIjU1NS0xMjMtNDU2N1wiLFxuICAgIH0sXG4gIH0pXG4gIGNvbnN0IHNldmVpYmFyQWNjID0gZGIuYWRkQWNjb3VudCh7XG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInNldmVpYmFyXCIsXG4gICAgdHNjaXJjdWl0X2hhbmRsZTogXCJzZXZlaWJhclwiLFxuICAgIGVtYWlsOiBcImV4YW1wbGVAdHNjaXJjdWl0LmNvbVwiLFxuICB9KVxuXG4gIGlmIChwcm9jZXNzLmVudi5BVVRPTE9BRF9QQUNLQUdFUyA9PT0gXCJ0cnVlXCIpIHtcbiAgICBsb2FkQXV0b2xvYWRQYWNrYWdlcyhkYilcbiAgfVxuXG4gIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkMSB9ID0gZGIuYWRkU25pcHBldCh7XG4gICAgbmFtZTogXCJ0ZXN0dXNlci9teS10ZXN0LWJvYXJkXCIsXG4gICAgdW5zY29wZWRfbmFtZTogXCJteS10ZXN0LWJvYXJkXCIsXG4gICAgZ2l0aHViX3JlcG9fZnVsbF9uYW1lOiBcInRlc3R1c2VyL215LXRlc3QtYm9hcmRcIixcbiAgICBvd25lcl9uYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgYnJhbmNoX25hbWU6IFwibWFpblwiLFxuICAgIGNvbW1pdF9tZXNzYWdlOiBcIkF0dGVtcHRlZCBidWlsZCBvZiBhNTU1dGltZXItc3F1YXJlLXdhdmUgcGFja2FnZVwiLFxuICAgIGNvbW1pdF9hdXRob3I6IFwidGVzdHVzZXJcIixcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGFjY291bnRfaWQsXG4gICAgY29kZTogYFxuaW1wb3J0IHsgQTU1NVRpbWVyIH0gZnJvbSBcIkB0c2NpL3NldmVpYmFyLmE1NTV0aW1lclwiXG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IChcbiAgPGJvYXJkIHdpZHRoPVwiMTBtbVwiIGhlaWdodD1cIjEwbW1cIj5cbiAgICA8QTU1NVRpbWVyIG5hbWU9XCJVMVwiIC8+XG4gIDwvYm9hcmQ+XG4pYC50cmltKCksXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwiYm9hcmRcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBIHNpbXBsZSBib2FyZCB3aXRoIGFuIEE1NTUgVGltZXIgY29tcG9uZW50XCIsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBuYW1lOiBcInBpbjFcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMVwiLCBcIjFcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgbmFtZTogXCJwaW4yXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjJcIiwgXCIyXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIG5hbWU6IFwicGluM1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4zXCIsIFwiM1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBuYW1lOiBcInBpbjRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNFwiLCBcIjRcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgbmFtZTogXCJwaW41XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjVcIiwgXCI1XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIG5hbWU6IFwicGluNlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW42XCIsIFwiNlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBuYW1lOiBcInBpbjdcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluN1wiLCBcIjdcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgbmFtZTogXCJwaW44XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjhcIiwgXCI4XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfY29tcG9uZW50XCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZ0eXBlOiBcInNpbXBsZV9jaGlwXCIsXG4gICAgICAgIG5hbWU6IFwiVTFcIixcbiAgICAgICAgc3VwcGxpZXJfcGFydF9udW1iZXJzOiB7fSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX2NvbXBvbmVudFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzaXplOiB7XG4gICAgICAgICAgd2lkdGg6IDEuMSxcbiAgICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHBpbl9zcGFjaW5nOiAwLjIsXG4gICAgICAgIHBvcnRfbGFiZWxzOiB7fSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzNcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF80XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzVcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzdcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA3LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfY29tcG9uZW50XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IDguODIsXG4gICAgICAgIGhlaWdodDogOC44MixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfYm9hcmRcIixcbiAgICAgICAgcGNiX2JvYXJkX2lkOiBcInBjYl9ib2FyZF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpY2tuZXNzOiAxLjQsXG4gICAgICAgIG51bV9sYXllcnM6IDQsXG4gICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgaGVpZ2h0OiAxMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIxXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMlwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjNcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNFwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI1XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNlwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjdcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjhcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXCIsXG4gICAgICAgIHBjYl9zaWxrc2NyZWVuX3BhdGhfaWQ6IFwicGNiX3NpbGtzY3JlZW5fcGF0aF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3V0ZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjcwOTQ2MzgwMzc5MDUwMjYsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC4zODM5NTkwNDM4MDYzMDY3LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogNi4xNDM2NDQ3NzU3MjI1NTZlLTE3LFxuICAgICAgICAgICAgeTogMy42MDY2NjY2NjY2NjY2Njc0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC4zODM5NTkwNDM4MDYzMDY3NCxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuNzA5NDYzODAzNzkwNTAyNyxcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzdHJva2Vfd2lkdGg6IDAuMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiY2FkX2NvbXBvbmVudFwiLFxuICAgICAgICBjYWRfY29tcG9uZW50X2lkOiBcImNhZF9jb21wb25lbnRfMFwiLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLjcsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZvb3RwcmludGVyX3N0cmluZzogXCJkaXA4XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pXG5cbiAgY29uc3QgZmlyc3RCdWlsZCA9IGRiLmFkZFBhY2thZ2VCdWlsZCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkMSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTUwMDApLnRvSVNPU3RyaW5nKCksIC8vIDE1IHNlY29uZHMgYWdvXG4gICAgdHJhbnNwaWxhdGlvbl9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgdHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTUwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgdHJhbnNwaWxhdGlvbl9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNDAwMCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIHRyYW5zcGlsYXRpb24uLi5cIixcbiAgICAgIFwiW0lORk9dIFBhcnNpbmcgcGFja2FnZSBjb2RlXCIsXG4gICAgICBcIltFUlJPUl0gRmFpbGVkIHRvIHBhcnNlIFR5cGVTY3JpcHQgZGVmaW5pdGlvbnNcIixcbiAgICAgIFwiW0VSUk9SXSBJbnZhbGlkIHN5bnRheCBpbiBjb21wb25lbnQgZGVjbGFyYXRpb25cIixcbiAgICBdLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6XG4gICAgICBcIlR5cGVTY3JpcHQgY29tcGlsYXRpb24gZmFpbGVkOiBTeW50YXggZXJyb3IgaW4gY29tcG9uZW50IGRlY2xhcmF0aW9uXCIsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDogbnVsbCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfY29tcGxldGVkX2F0OiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBbXSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3I6IFwiQnVpbGQgY2FuY2VsbGVkIGR1ZSB0byB0cmFuc3BpbGF0aW9uIGZhaWx1cmVcIixcbiAgICBidWlsZF9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE1MDAwKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE0MDAwKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2Vycm9yOiBcIkJ1aWxkIGZhaWxlZDogVW5hYmxlIHRvIGNvbXBsZXRlIHRyYW5zcGlsYXRpb24gc3RlcFwiLFxuICAgIGJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE0MDAwKS50b0lTT1N0cmluZygpLFxuICAgIHByZXZpZXdfdXJsOiBudWxsLFxuICAgIGJ1aWxkX2xvZ3M6XG4gICAgICBcIkJ1aWxkIHByb2Nlc3M6XFxuXCIgK1xuICAgICAgXCIxLiBFbnZpcm9ubWVudCBzZXR1cCAtIE9LXFxuXCIgK1xuICAgICAgXCIyLiBEZXBlbmRlbmN5IHJlc29sdXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiMy4gQ29kZSBjb21waWxhdGlvbiAtIEZBSUxFRFxcblwiICtcbiAgICAgIFwiRXJyb3I6IEludmFsaWQgc3ludGF4IGluIGNvbXBvbmVudCBkZWNsYXJhdGlvblxcblwiICtcbiAgICAgIFwiQnVpbGQgdGVybWluYXRlZCB3aXRoIGVycm9yc1wiLFxuICB9KVxuXG4gIC8vIFVwZGF0ZSB0aGUgcGFja2FnZSByZWxlYXNlIHdpdGggdGhlIGxhdGVzdCBidWlsZCBJRFxuICBjb25zdCByZWxlYXNlMSA9IGRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChwYWNrYWdlUmVsZWFzZUlkMSkhXG4gIGRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlKHtcbiAgICAuLi5yZWxlYXNlMSxcbiAgICBsYXRlc3RfcGFja2FnZV9idWlsZF9pZDogZmlyc3RCdWlsZC5wYWNrYWdlX2J1aWxkX2lkLFxuICB9KVxuXG4gIC8vIFRlc3QgUGFja2FnZSBhZGRpdGlvblxuICBjb25zdCB0ZXN0MlBhY2thZ2UgPSBkYi5hZGRQYWNrYWdlKHtcbiAgICBuYW1lOiBcInRlc3R1c2VyL3Rlc3QyLXBhY2thZ2VcIixcbiAgICB1bnNjb3BlZF9uYW1lOiBcInRlc3QyLXBhY2thZ2VcIixcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGFjY291bnRfaWQsXG4gICAgb3duZXJfb3JnX2lkOiBcIm9yZy0xMjM0XCIsXG4gICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSB0ZXN0IHBhY2thZ2UgZm9yIGRldmVsb3BtZW50XCIsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBpc19zb3VyY2VfZnJvbV9naXRodWI6IGZhbHNlLFxuICAgIHNuaXBwZXRfdHlwZTogXCJwYWNrYWdlXCIsXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbnVsbCxcbiAgICBsYXRlc3RfdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgIGxpY2Vuc2U6IFwiTUlUXCIsXG4gICAgd2Vic2l0ZTogXCJodHRwczovL3RzY2lyY3VpdC5jb21cIixcbiAgICBzdGFyX2NvdW50OiAxMCxcbiAgICBhaV9kZXNjcmlwdGlvbjpcbiAgICAgIFwiQSBjb21wcmVoZW5zaXZlIHRlc3QgcGFja2FnZSBkZXNpZ25lZCBmb3IgZGV2ZWxvcG1lbnQgYW5kIHRlc3RpbmcgcHVycG9zZXMuIFRoaXMgcGFja2FnZSBpbmNsdWRlcyB2YXJpb3VzIGNvbXBvbmVudHMgYW5kIHV0aWxpdGllcyBjb21tb25seSB1c2VkIGluIGNpcmN1aXQgZGVzaWduIGFuZCBzaW11bGF0aW9uIHdvcmtmbG93cy5cIixcbiAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6XG4gICAgICBcIkltcG9ydCB0aGUgcGFja2FnZSB1c2luZyBgaW1wb3J0IHsgVGVzdENvbXBvbmVudCB9IGZyb20gJ0B0c2NpL3Rlc3R1c2VyLnRlc3QyLXBhY2thZ2UnYC4gVXNlIHRoZSBUZXN0Q29tcG9uZW50IGluIHlvdXIgY2lyY3VpdCBkZXNpZ25zIGJ5IHByb3ZpZGluZyB0aGUgcmVxdWlyZWQgcHJvcHMuIEV4YW1wbGU6IGA8VGVzdENvbXBvbmVudCBuYW1lPSdteS10ZXN0JyB2YWx1ZT17NDJ9IC8+YFwiLFxuICAgIGRlZmF1bHRfdmlldzogXCJmaWxlc1wiLFxuICAgIGxhdGVzdF9wY2JfcHJldmlld19pbWFnZV91cmw6IGAvYXBpL3BhY2thZ2VzL2ltYWdlcy90ZXN0dXNlci90ZXN0Mi1wYWNrYWdlL3BjYi5wbmdgLFxuICAgIGxhdGVzdF9jYWRfcHJldmlld19pbWFnZV91cmw6IGAvYXBpL3BhY2thZ2VzL2ltYWdlcy90ZXN0dXNlci90ZXN0Mi1wYWNrYWdlLzNkLnBuZ2AsXG4gICAgbGF0ZXN0X3NjaF9wcmV2aWV3X2ltYWdlX3VybDogYC9hcGkvcGFja2FnZXMvaW1hZ2VzL3Rlc3R1c2VyL3Rlc3QyLXBhY2thZ2Uvc2NoZW1hdGljLnBuZ2AsXG4gIH0pXG4gIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkOiB0ZXN0MlBhY2thZ2VSZWxlYXNlSWQgfSA9IGRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICBwYWNrYWdlX2lkOiB0ZXN0MlBhY2thZ2UucGFja2FnZV9pZCxcbiAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgIGhhc190cmFuc3BpbGVkOiB0cnVlLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IG51bGwsXG4gICAgcGNiX3ByZXZpZXdfaW1hZ2VfdXJsOiBgL2FwaS9wYWNrYWdlcy9pbWFnZXMvdGVzdHVzZXIvdGVzdDItcGFja2FnZS9wY2IucG5nYCxcbiAgICBjYWRfcHJldmlld19pbWFnZV91cmw6IGAvYXBpL3BhY2thZ2VzL2ltYWdlcy90ZXN0dXNlci90ZXN0Mi1wYWNrYWdlLzNkLnBuZ2AsXG4gICAgc2NoX3ByZXZpZXdfaW1hZ2VfdXJsOiBgL2FwaS9wYWNrYWdlcy9pbWFnZXMvdGVzdHVzZXIvdGVzdDItcGFja2FnZS9zY2hlbWF0aWMucG5nYCxcbiAgfSlcbiAgZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogdGVzdDJQYWNrYWdlUmVsZWFzZUlkLFxuICAgIGZpbGVfcGF0aDogXCJpbmRleC50c3hcIixcbiAgICBjb250ZW50X3RleHQ6IGBcbmV4cG9ydCBjb25zdCBUZXN0Q29tcG9uZW50ID0gKHsgbmFtZSB9OiB7IG5hbWU6IHN0cmluZyB9KSA9PiAoXG4gIDxyZXNpc3RvciBuYW1lPXtuYW1lfSByZXNpc3RhbmNlPVwiMTBrXCIgLz5cbilcbmAudHJpbSgpLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBpc190ZXh0OiB0cnVlLFxuICB9KVxuICBkYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB0ZXN0MlBhY2thZ2VSZWxlYXNlSWQsXG4gICAgZmlsZV9wYXRoOiBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICAgIGNvbnRlbnRfdGV4dDogYFtcbiAge1xuICAgIFwidHlwZVwiOiBcInNvdXJjZV9wcm9qZWN0X21ldGFkYXRhXCIsXG4gICAgXCJzb3VyY2VfcHJvamVjdF9tZXRhZGF0YV9pZFwiOiBcInNvdXJjZV9wcm9qZWN0X21ldGFkYXRhXzBcIixcbiAgICBcInNvZnR3YXJlX3VzZWRfc3RyaW5nXCI6IFwiQHRzY2lyY3VpdC9jb3JlQDAuMC44MTNcIlxuICB9LFxuICB7XG4gICAgXCJ0eXBlXCI6IFwic291cmNlX2dyb3VwXCIsXG4gICAgXCJzb3VyY2VfZ3JvdXBfaWRcIjogXCJzb3VyY2VfZ3JvdXBfMFwiLFxuICAgIFwiaXNfc3ViY2lyY3VpdFwiOiB0cnVlLFxuICAgIFwid2FzX2F1dG9tYXRpY2FsbHlfbmFtZWRcIjogdHJ1ZSxcbiAgICBcInN1YmNpcmN1aXRfaWRcIjogXCJzdWJjaXJjdWl0X3NvdXJjZV9ncm91cF8wXCJcbiAgfSxcbiAge1xuICAgIFwidHlwZVwiOiBcInNvdXJjZV9ib2FyZFwiLFxuICAgIFwic291cmNlX2JvYXJkX2lkXCI6IFwic291cmNlX2JvYXJkXzBcIixcbiAgICBcInNvdXJjZV9ncm91cF9pZFwiOiBcInNvdXJjZV9ncm91cF8wXCJcbiAgfSxcbiAge1xuICAgIFwidHlwZVwiOiBcInNjaGVtYXRpY19ncm91cFwiLFxuICAgIFwic2NoZW1hdGljX2dyb3VwX2lkXCI6IFwic2NoZW1hdGljX2dyb3VwXzBcIixcbiAgICBcImlzX3N1YmNpcmN1aXRcIjogdHJ1ZSxcbiAgICBcInN1YmNpcmN1aXRfaWRcIjogXCJzdWJjaXJjdWl0X3NvdXJjZV9ncm91cF8wXCIsXG4gICAgXCJuYW1lXCI6IFwidW5uYW1lZF9ib2FyZDFcIixcbiAgICBcImNlbnRlclwiOiB7XG4gICAgICBcInhcIjogMCxcbiAgICAgIFwieVwiOiAwXG4gICAgfSxcbiAgICBcIndpZHRoXCI6IDAsXG4gICAgXCJoZWlnaHRcIjogMCxcbiAgICBcInNjaGVtYXRpY19jb21wb25lbnRfaWRzXCI6IFtdLFxuICAgIFwic291cmNlX2dyb3VwX2lkXCI6IFwic291cmNlX2dyb3VwXzBcIlxuICB9LFxuICB7XG4gICAgXCJ0eXBlXCI6IFwicGNiX2JvYXJkXCIsXG4gICAgXCJwY2JfYm9hcmRfaWRcIjogXCJwY2JfYm9hcmRfMFwiLFxuICAgIFwiY2VudGVyXCI6IHtcbiAgICAgIFwieFwiOiAwLFxuICAgICAgXCJ5XCI6IDBcbiAgICB9LFxuICAgIFwidGhpY2tuZXNzXCI6IDEuNCxcbiAgICBcIm51bV9sYXllcnNcIjogMixcbiAgICBcIndpZHRoXCI6IDEwLFxuICAgIFwiaGVpZ2h0XCI6IDEwLFxuICAgIFwibWF0ZXJpYWxcIjogXCJmcjRcIlxuICB9XG5dYC50cmltKCksXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGlzX3RleHQ6IHRydWUsXG4gIH0pXG4gIGRiLmFkZFBhY2thZ2VCdWlsZCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB0ZXN0MlBhY2thZ2VSZWxlYXNlSWQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25faW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIHRyYW5zcGlsYXRpb25fc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDUwMDApLnRvSVNPU3RyaW5nKCksIC8vIFN0YXJ0ZWQgNSBzZWNvbmRzIGFnb1xuICAgIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMzAwMCkudG9JU09TdHJpbmcoKSwgLy8gQ29tcGxldGVkIDMgc2Vjb25kcyBhZ29cbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIHRyYW5zcGlsYXRpb24uLi5cIixcbiAgICAgIFwiW0lORk9dIFBhcnNpbmcgcGFja2FnZSBjb2RlXCIsXG4gICAgICBcIltJTkZPXSBHZW5lcmF0aW5nIFR5cGVTY3JpcHQgZGVmaW5pdGlvbnNcIixcbiAgICAgIFwiW0lORk9dIENvbXBpbGluZyB0byBKYXZhU2NyaXB0XCIsXG4gICAgICBcIltTVUNDRVNTXSBUcmFuc3BpbGF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICBdLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDMwMDApLnRvSVNPU3RyaW5nKCksIC8vIFN0YXJ0ZWQgYWZ0ZXIgdHJhbnNwaWxhdGlvblxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxMDAwKS50b0lTT1N0cmluZygpLCAvLyBDb21wbGV0ZWQgMSBzZWNvbmQgYWdvXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIGNpcmN1aXQgSlNPTiBidWlsZC4uLlwiLFxuICAgICAgXCJbSU5GT10gQW5hbHl6aW5nIGNvbXBvbmVudCBzdHJ1Y3R1cmVcIixcbiAgICAgIFwiW0lORk9dIEdlbmVyYXRpbmcgcG9ydCBjb25maWd1cmF0aW9uc1wiLFxuICAgICAgXCJbSU5GT10gVmFsaWRhdGluZyBjaXJjdWl0IGNvbm5lY3Rpb25zXCIsXG4gICAgICBcIltTVUNDRVNTXSBDaXJjdWl0IEpTT04gYnVpbGQgY29tcGxldGVkXCIsXG4gICAgXSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3I6IG51bGwsXG4gICAgYnVpbGRfaW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIGJ1aWxkX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxMDAwMCkudG9JU09TdHJpbmcoKSwgLy8gU3RhcnRlZCAxMCBzZWNvbmRzIGFnb1xuICAgIGJ1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLCAvLyBKdXN0IGNvbXBsZXRlZFxuICAgIGJ1aWxkX2Vycm9yOiBudWxsLFxuICAgIGJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2xvZ3M6XG4gICAgICBcIkJ1aWxkIHByb2Nlc3M6XFxuXCIgK1xuICAgICAgXCIxLiBFbnZpcm9ubWVudCBzZXR1cCAtIE9LXFxuXCIgK1xuICAgICAgXCIyLiBEZXBlbmRlbmN5IHJlc29sdXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiMy4gQ29kZSBjb21waWxhdGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCI0LiBDaXJjdWl0IHZhbGlkYXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiNS4gUGFja2FnZSBhc3NlbWJseSAtIE9LXFxuXCIgK1xuICAgICAgXCJCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gIH0pXG5cbiAgLy8gRGVmaW5lIHRoZSBAdHNjaS9zZXZlaWJhci5hNTU1dGltZXIgcGFja2FnZVxuICBkYi5hZGRTbmlwcGV0KHtcbiAgICBuYW1lOiBcInNldmVpYmFyL2E1NTV0aW1lclwiLFxuICAgIHVuc2NvcGVkX25hbWU6IFwiYTU1NXRpbWVyXCIsXG4gICAgb3duZXJfbmFtZTogXCJzZXZlaWJhclwiLFxuICAgIGNvZGU6IGBcbmV4cG9ydCBjb25zdCBBNTU1VGltZXIgPSAoeyBuYW1lIH06IHsgbmFtZTogc3RyaW5nIH0pID0+IChcbiAgPGNoaXAgbmFtZT17bmFtZX0gZm9vdHByaW50PVwiZGlwOFwiIC8+XG4pXG5gLnRyaW0oKSxcbiAgICBkdHM6IGBcbmRlY2xhcmUgbW9kdWxlIFwiQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyXCIge1xuICBleHBvcnQgY29uc3QgQTU1NVRpbWVyOiAoeyBuYW1lIH06IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH0pID0+IGFueTtcbn1cbmAudHJpbSgpLFxuICAgIGNvbXBpbGVkX2pzOiBgXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuQTU1NVRpbWVyID0gdm9pZCAwO1xuY29uc3QgQTU1NVRpbWVyID0gKHtcbiAgbmFtZVxufSkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjaGlwXCIsIHtcbiAgbmFtZTogbmFtZSxcbiAgZm9vdHByaW50OiBcImRpcDhcIlxufSk7XG5leHBvcnRzLkE1NTVUaW1lciA9IEE1NTVUaW1lcjtcbiAgICBgLnRyaW0oKSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHNuaXBwZXRfdHlwZTogXCJwYWNrYWdlXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSBzaW1wbGUgcGFja2FnZSB3aXRoIGFuIEE1NTUgVGltZXIgY29tcG9uZW50XCIsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBuYW1lOiBcInBpbjFcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMVwiLCBcIjFcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgbmFtZTogXCJwaW4yXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjJcIiwgXCIyXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIG5hbWU6IFwicGluM1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4zXCIsIFwiM1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBuYW1lOiBcInBpbjRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNFwiLCBcIjRcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgbmFtZTogXCJwaW41XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjVcIiwgXCI1XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIG5hbWU6IFwicGluNlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW42XCIsIFwiNlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBuYW1lOiBcInBpbjdcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluN1wiLCBcIjdcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgbmFtZTogXCJwaW44XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjhcIiwgXCI4XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfY29tcG9uZW50XCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZ0eXBlOiBcInNpbXBsZV9jaGlwXCIsXG4gICAgICAgIG5hbWU6IFwiVTFcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX2NvbXBvbmVudFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzaXplOiB7XG4gICAgICAgICAgd2lkdGg6IDEuMSxcbiAgICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHBpbl9zcGFjaW5nOiAwLjIsXG4gICAgICAgIHBvcnRfbGFiZWxzOiB7fSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzNcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF80XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzVcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzdcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA3LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfY29tcG9uZW50XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IDguODIsXG4gICAgICAgIGhlaWdodDogOC44MixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfYm9hcmRcIixcbiAgICAgICAgcGNiX2JvYXJkX2lkOiBcInBjYl9ib2FyZF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpY2tuZXNzOiAxLjQsXG4gICAgICAgIG51bV9sYXllcnM6IDQsXG4gICAgICAgIHdpZHRoOiA1MCxcbiAgICAgICAgaGVpZ2h0OiA1MCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIxXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMlwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjNcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNFwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI1XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNlwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjdcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjhcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXCIsXG4gICAgICAgIHBjYl9zaWxrc2NyZWVuX3BhdGhfaWQ6IFwicGNiX3NpbGtzY3JlZW5fcGF0aF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3V0ZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjcwOTQ2MzgwMzc5MDUwMjYsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC4zODM5NTkwNDM4MDYzMDY3LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogNi4xNDM2NDQ3NzU3MjI1NTZlLTE3LFxuICAgICAgICAgICAgeTogMy42MDY2NjY2NjY2NjY2Njc0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC4zODM5NTkwNDM4MDYzMDY3NCxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuNzA5NDYzODAzNzkwNTAyNyxcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzdHJva2Vfd2lkdGg6IDAuMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiY2FkX2NvbXBvbmVudFwiLFxuICAgICAgICBjYWRfY29tcG9uZW50X2lkOiBcImNhZF9jb21wb25lbnRfMFwiLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLjcsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZvb3RwcmludGVyX3N0cmluZzogXCJkaXA4XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pXG5cbiAgLy8gQWRkIGEgc25pcHBldCB0aGF0IG91dHB1dHMgYSBzcXVhcmUgd2F2ZWZvcm0gdXNpbmcgdGhlIGE1NTV0aW1lclxuXG4gIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkMiB9ID0gZGIuYWRkU25pcHBldCh7XG4gICAgbmFtZTogXCJ0ZXN0dXNlci9hNTU1dGltZXItc3F1YXJlLXdhdmVcIixcbiAgICB1bnNjb3BlZF9uYW1lOiBcImE1NTV0aW1lci1zcXVhcmUtd2F2ZVwiLFxuICAgIG93bmVyX25hbWU6IFwidGVzdHVzZXJcIixcbiAgICBicmFuY2hfbmFtZTogXCJtYWluXCIsXG4gICAgY29tbWl0X21lc3NhZ2U6IFwiQXR0ZW1wdGVkIGJ1aWxkIG9mIGE1NTV0aW1lci1zcXVhcmUtd2F2ZSBwYWNrYWdlXCIsXG4gICAgY29tbWl0X2F1dGhvcjogXCJ0ZXN0dXNlclwiLFxuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogYWNjb3VudF9pZCxcbiAgICBjb2RlOiBgXG5pbXBvcnQgeyBBNTU1VGltZXIgfSBmcm9tIFwiQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyXCJcblxuZXhwb3J0IGNvbnN0IFNxdWFyZVdhdmVNb2R1bGUgPSAoKSA9PiAoXG4gIDxBNTU1VGltZXIgbmFtZT1cIlUxXCIgLz5cbilcbmAudHJpbSgpLFxuICAgIGR0czogJ2V4cG9ydCBkZWNsYXJlIGNvbnN0IFNxdWFyZVdhdmVNb2R1bGU6ICgpID0+IGltcG9ydChcInJlYWN0L2pzeC1ydW50aW1lXCIpLkpTWC5FbGVtZW50O1xcbicsXG4gICAgY29tcGlsZWRfanM6XG4gICAgICAnXCJ1c2Ugc3RyaWN0XCI7XFxuXFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XFxuICB2YWx1ZTogdHJ1ZVxcbn0pO1xcbmV4cG9ydHMuU3F1YXJlV2F2ZU1vZHVsZSA9IHZvaWQgMDtcXG52YXIgX3NldmVpYmFyID0gcmVxdWlyZShcIkB0c2NpL3NldmVpYmFyLmE1NTV0aW1lclwiKTtcXG5jb25zdCBTcXVhcmVXYXZlTW9kdWxlID0gKCkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoX3NldmVpYmFyLkE1NTVUaW1lciwge1xcbiAgbmFtZTogXCJVMVwiXFxufSk7XFxuZXhwb3J0cy5TcXVhcmVXYXZlTW9kdWxlID0gU3F1YXJlV2F2ZU1vZHVsZTsnLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc25pcHBldF90eXBlOiBcInBhY2thZ2VcIixcbiAgICBnaXRodWJfcmVwb19mdWxsX25hbWU6IFwidGVzdHVzZXIvdGVzdFwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJBIHNpbXBsZSBwYWNrYWdlIHRoYXQgb3V0cHV0cyBhIHNxdWFyZSB3YXZlZm9ybSB1c2luZyB0aGUgYTU1NXRpbWVyXCIsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBuYW1lOiBcInBpbjFcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMVwiLCBcIjFcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgbmFtZTogXCJwaW4yXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjJcIiwgXCIyXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIG5hbWU6IFwicGluM1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4zXCIsIFwiM1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBuYW1lOiBcInBpbjRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNFwiLCBcIjRcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgbmFtZTogXCJwaW41XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjVcIiwgXCI1XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIG5hbWU6IFwicGluNlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW42XCIsIFwiNlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBuYW1lOiBcInBpbjdcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluN1wiLCBcIjdcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgbmFtZTogXCJwaW44XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjhcIiwgXCI4XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfY29tcG9uZW50XCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZ0eXBlOiBcInNpbXBsZV9jaGlwXCIsXG4gICAgICAgIG5hbWU6IFwiVTFcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX2NvbXBvbmVudFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzaXplOiB7XG4gICAgICAgICAgd2lkdGg6IDEuMSxcbiAgICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHBpbl9zcGFjaW5nOiAwLjIsXG4gICAgICAgIHBvcnRfbGFiZWxzOiB7fSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzNcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF80XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzVcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzdcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA3LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfY29tcG9uZW50XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IDguODIsXG4gICAgICAgIGhlaWdodDogOC44MixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfYm9hcmRcIixcbiAgICAgICAgcGNiX2JvYXJkX2lkOiBcInBjYl9ib2FyZF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpY2tuZXNzOiAxLjQsXG4gICAgICAgIG51bV9sYXllcnM6IDQsXG4gICAgICAgIHdpZHRoOiA1MCxcbiAgICAgICAgaGVpZ2h0OiA1MCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIxXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMlwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjNcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNFwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI1XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNlwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjdcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjhcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXCIsXG4gICAgICAgIHBjYl9zaWxrc2NyZWVuX3BhdGhfaWQ6IFwicGNiX3NpbGtzY3JlZW5fcGF0aF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3V0ZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjcwOTQ2MzgwMzc5MDUwMjYsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC4zODM5NTkwNDM4MDYzMDY3LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogNi4xNDM2NDQ3NzU3MjI1NTZlLTE3LFxuICAgICAgICAgICAgeTogMy42MDY2NjY2NjY2NjY2Njc0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC4zODM5NTkwNDM4MDYzMDY3NCxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuNzA5NDYzODAzNzkwNTAyNyxcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzdHJva2Vfd2lkdGg6IDAuMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiY2FkX2NvbXBvbmVudFwiLFxuICAgICAgICBjYWRfY29tcG9uZW50X2lkOiBcImNhZF9jb21wb25lbnRfMFwiLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLjcsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZvb3RwcmludGVyX3N0cmluZzogXCJkaXA4XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pXG5cbiAgLy8gQWRkIGZhaWxlZCBidWlsZCBmaXJzdFxuICBjb25zdCBmYWlsZWRCdWlsZCA9IGRiLmFkZFBhY2thZ2VCdWlsZCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkMixcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTUwMDApLnRvSVNPU3RyaW5nKCksIC8vIDE1IHNlY29uZHMgYWdvXG4gICAgdHJhbnNwaWxhdGlvbl9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgdHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTUwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgdHJhbnNwaWxhdGlvbl9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNDAwMCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIHRyYW5zcGlsYXRpb24uLi5cIixcbiAgICAgIFwiW0lORk9dIFBhcnNpbmcgcGFja2FnZSBjb2RlXCIsXG4gICAgICBcIltFUlJPUl0gRmFpbGVkIHRvIHBhcnNlIFR5cGVTY3JpcHQgZGVmaW5pdGlvbnNcIixcbiAgICAgIFwiW0VSUk9SXSBJbnZhbGlkIHN5bnRheCBpbiBjb21wb25lbnQgZGVjbGFyYXRpb25cIixcbiAgICBdLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6XG4gICAgICBcIlR5cGVTY3JpcHQgY29tcGlsYXRpb24gZmFpbGVkOiBTeW50YXggZXJyb3IgaW4gY29tcG9uZW50IGRlY2xhcmF0aW9uXCIsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDogbnVsbCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfY29tcGxldGVkX2F0OiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBbXSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3I6IFwiQnVpbGQgY2FuY2VsbGVkIGR1ZSB0byB0cmFuc3BpbGF0aW9uIGZhaWx1cmVcIixcbiAgICBidWlsZF9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE1MDAwKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE0MDAwKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2Vycm9yOiBcIkJ1aWxkIGZhaWxlZDogVW5hYmxlIHRvIGNvbXBsZXRlIHRyYW5zcGlsYXRpb24gc3RlcFwiLFxuICAgIGJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE0MDAwKS50b0lTT1N0cmluZygpLFxuICAgIHByZXZpZXdfdXJsOiBudWxsLFxuICAgIGJ1aWxkX2xvZ3M6XG4gICAgICBcIkJ1aWxkIHByb2Nlc3M6XFxuXCIgK1xuICAgICAgXCIxLiBFbnZpcm9ubWVudCBzZXR1cCAtIE9LXFxuXCIgK1xuICAgICAgXCIyLiBEZXBlbmRlbmN5IHJlc29sdXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiMy4gQ29kZSBjb21waWxhdGlvbiAtIEZBSUxFRFxcblwiICtcbiAgICAgIFwiRXJyb3I6IEludmFsaWQgc3ludGF4IGluIGNvbXBvbmVudCBkZWNsYXJhdGlvblxcblwiICtcbiAgICAgIFwiQnVpbGQgdGVybWluYXRlZCB3aXRoIGVycm9yc1wiLFxuICB9KVxuXG4gIC8vIEFkZCBzdWNjZXNzZnVsIGJ1aWxkXG4gIGNvbnN0IHN1Y2Nlc3NmdWxCdWlsZCA9IGRiLmFkZFBhY2thZ2VCdWlsZCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkMixcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdHJhbnNwaWxhdGlvbl9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgdHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gNTAwMCkudG9JU09TdHJpbmcoKSwgLy8gU3RhcnRlZCA1IHNlY29uZHMgYWdvXG4gICAgdHJhbnNwaWxhdGlvbl9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAzMDAwKS50b0lTT1N0cmluZygpLCAvLyBDb21wbGV0ZWQgMyBzZWNvbmRzIGFnb1xuICAgIHRyYW5zcGlsYXRpb25fbG9nczogW1xuICAgICAgXCJbSU5GT10gU3RhcnRpbmcgdHJhbnNwaWxhdGlvbi4uLlwiLFxuICAgICAgXCJbSU5GT10gUGFyc2luZyBwYWNrYWdlIGNvZGVcIixcbiAgICAgIFwiW0lORk9dIEdlbmVyYXRpbmcgVHlwZVNjcmlwdCBkZWZpbml0aW9uc1wiLFxuICAgICAgXCJbSU5GT10gQ29tcGlsaW5nIHRvIEphdmFTY3JpcHRcIixcbiAgICAgIFwiW1NVQ0NFU1NdIFRyYW5zcGlsYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICAgIF0sXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogbnVsbCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfaW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMzAwMCkudG9JU09TdHJpbmcoKSwgLy8gU3RhcnRlZCBhZnRlciB0cmFuc3BpbGF0aW9uXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDEwMDApLnRvSVNPU3RyaW5nKCksIC8vIENvbXBsZXRlZCAxIHNlY29uZCBhZ29cbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfbG9nczogW1xuICAgICAgXCJbSU5GT10gU3RhcnRpbmcgY2lyY3VpdCBKU09OIGJ1aWxkLi4uXCIsXG4gICAgICBcIltJTkZPXSBBbmFseXppbmcgY29tcG9uZW50IHN0cnVjdHVyZVwiLFxuICAgICAgXCJbSU5GT10gR2VuZXJhdGluZyBwb3J0IGNvbmZpZ3VyYXRpb25zXCIsXG4gICAgICBcIltJTkZPXSBWYWxpZGF0aW5nIGNpcmN1aXQgY29ubmVjdGlvbnNcIixcbiAgICAgIFwiW1NVQ0NFU1NdIENpcmN1aXQgSlNPTiBidWlsZCBjb21wbGV0ZWRcIixcbiAgICBdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogbnVsbCxcbiAgICBidWlsZF9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDEwMDAwKS50b0lTT1N0cmluZygpLCAvLyBTdGFydGVkIDEwIHNlY29uZHMgYWdvXG4gICAgYnVpbGRfY29tcGxldGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksIC8vIEp1c3QgY29tcGxldGVkXG4gICAgYnVpbGRfZXJyb3I6IG51bGwsXG4gICAgYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgcHJldmlld191cmw6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL3ByZXZpZXcvcGFja2FnZV9idWlsZF8xXCIsXG4gICAgYnVpbGRfbG9nczpcbiAgICAgIFwiQnVpbGQgcHJvY2VzczpcXG5cIiArXG4gICAgICBcIjEuIEVudmlyb25tZW50IHNldHVwIC0gT0tcXG5cIiArXG4gICAgICBcIjIuIERlcGVuZGVuY3kgcmVzb2x1dGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCIzLiBDb2RlIGNvbXBpbGF0aW9uIC0gT0tcXG5cIiArXG4gICAgICBcIjQuIENpcmN1aXQgdmFsaWRhdGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCI1LiBQYWNrYWdlIGFzc2VtYmx5IC0gT0tcXG5cIiArXG4gICAgICBcIkJ1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgfSlcblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UgcmVsZWFzZSB3aXRoIHRoZSBsYXRlc3QgKHN1Y2Nlc3NmdWwpIGJ1aWxkIElEXG4gIGNvbnN0IHJlbGVhc2UyID0gZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKHBhY2thZ2VSZWxlYXNlSWQyKSFcbiAgZGIudXBkYXRlUGFja2FnZVJlbGVhc2Uoe1xuICAgIC4uLnJlbGVhc2UyLFxuICAgIGxhdGVzdF9wYWNrYWdlX2J1aWxkX2lkOiBzdWNjZXNzZnVsQnVpbGQucGFja2FnZV9idWlsZF9pZCxcbiAgfSlcblxuICBkYi5hZGRPcmRlcih7XG4gICAgYWNjb3VudF9pZCxcbiAgICBpc19ydW5uaW5nOiBmYWxzZSxcbiAgICBpc19zdGFydGVkOiBmYWxzZSxcbiAgICBpc19maW5pc2hlZDogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gICAgaGFzX2Vycm9yOiBmYWxzZSxcbiAgICBjaXJjdWl0X2pzb246IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfY29tcG9uZW50XCIsXG4gICAgICAgIGZ0eXBlOiBcInNpbXBsZV9yZXNpc3RvclwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMVwiLFxuICAgICAgICBuYW1lOiBcIlIxXCIsXG4gICAgICAgIHJlc2lzdGFuZTogXCIxa1wiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzdGFydGVkX2F0OiBudWxsLFxuICAgIGNvbXBsZXRlZF9hdDogbnVsbCxcbiAgfSlcblxuICBjb25zdCB0ZXN0T3JnID0gZGIuYWRkT3JnYW5pemF0aW9uKHtcbiAgICBvcmdfZGlzcGxheV9uYW1lOiBcIlRlc3QgT3JnYW5pemF0aW9uXCIsXG4gICAgdHNjaXJjdWl0X2hhbmRsZTogXCJ0ZXN0LW9yZ2FuaXphdGlvblwiLFxuICAgIGdpdGh1Yl9oYW5kbGU6IFwidHNjaXJjdWl0XCIsXG4gICAgb3duZXJfYWNjb3VudF9pZDogYWNjb3VudF9pZCxcbiAgfSlcblxuICAvLyBBZGQgb3JnIG1lbWJlclxuICBkYi5hZGRPcmdhbml6YXRpb25BY2NvdW50KHtcbiAgICBvcmdfaWQ6IHRlc3RPcmcub3JnX2lkLFxuICAgIGFjY291bnRfaWQ6IGFjY291bnRfaWQsXG4gICAgaXNfb3duZXI6IHRydWUsXG4gIH0pXG5cbiAgLy8gVGVzdCAgT3JnIFBhY2thZ2UgYWRkaXRpb25cbiAgY29uc3QgdGVzdE9yZ1BhY2thZ2UgPSBkYi5hZGRQYWNrYWdlKHtcbiAgICBuYW1lOiBcInRlc3Qtb3JnYW5pemF0aW9uL3Rlc3Qtb3JnLXBhY2thZ2VcIixcbiAgICB1bnNjb3BlZF9uYW1lOiBcInRlc3Qtb3JnLXBhY2thZ2VcIixcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGFjY291bnRfaWQsXG4gICAgb3duZXJfb3JnX2lkOiB0ZXN0T3JnLm9yZ19pZCxcbiAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IHRlc3RPcmcuZ2l0aHViX2hhbmRsZSxcbiAgICBkZXNjcmlwdGlvbjogXCJBIHRlc3QgcGFja2FnZSBmb3IgZGV2ZWxvcG1lbnRcIixcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgc25pcHBldF90eXBlOiBcInBhY2thZ2VcIixcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBudWxsLFxuICAgIGxhdGVzdF92ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgbGljZW5zZTogXCJNSVRcIixcbiAgICB3ZWJzaXRlOiBcImh0dHBzOi8vdHNjaXJjdWl0LmNvbVwiLFxuICAgIHN0YXJfY291bnQ6IDEwLFxuICAgIGFpX2Rlc2NyaXB0aW9uOlxuICAgICAgXCJBIGNvbXByZWhlbnNpdmUgdGVzdCBwYWNrYWdlIGRlc2lnbmVkIGZvciBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyBwdXJwb3Nlcy4gVGhpcyBwYWNrYWdlIGluY2x1ZGVzIHZhcmlvdXMgY29tcG9uZW50cyBhbmQgdXRpbGl0aWVzIGNvbW1vbmx5IHVzZWQgaW4gY2lyY3VpdCBkZXNpZ24gYW5kIHNpbXVsYXRpb24gd29ya2Zsb3dzLlwiLFxuICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczpcbiAgICAgIFwiSW1wb3J0IHRoZSBwYWNrYWdlIHVzaW5nIGBpbXBvcnQgeyBUZXN0Q29tcG9uZW50IH0gZnJvbSAnQHRzY2kvdGVzdC1vcmdhbml6YXRpb24udGVzdC1vcmctcGFja2FnZSdgLiBVc2UgdGhlIFRlc3RDb21wb25lbnQgaW4geW91ciBjaXJjdWl0IGRlc2lnbnMgYnkgcHJvdmlkaW5nIHRoZSByZXF1aXJlZCBwcm9wcy4gRXhhbXBsZTogYDxUZXN0Q29tcG9uZW50IG5hbWU9J215LXRlc3QnIHZhbHVlPXs0Mn0gLz5gXCIsXG4gICAgZGVmYXVsdF92aWV3OiBcImZpbGVzXCIsXG4gICAgbGF0ZXN0X3BjYl9wcmV2aWV3X2ltYWdlX3VybDogYC9hcGkvcGFja2FnZXMvaW1hZ2VzL3Rlc3Qtb3JnYW5pemF0aW9uL3Rlc3Qtb3JnLXBhY2thZ2UvcGNiLnBuZ2AsXG4gICAgbGF0ZXN0X2NhZF9wcmV2aWV3X2ltYWdlX3VybDogYC9hcGkvcGFja2FnZXMvaW1hZ2VzL3Rlc3Qtb3JnYW5pemF0aW9uL3Rlc3Qtb3JnLXBhY2thZ2UvM2QucG5nYCxcbiAgICBsYXRlc3Rfc2NoX3ByZXZpZXdfaW1hZ2VfdXJsOiBgL2FwaS9wYWNrYWdlcy9pbWFnZXMvdGVzdC1vcmdhbml6YXRpb24vdGVzdC1vcmctcGFja2FnZS9zY2hlbWF0aWMucG5nYCxcbiAgfSlcbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQ6IHRlc3RPcmdQYWNrYWdlUmVsZWFzZUlkIH0gPSBkYi5hZGRQYWNrYWdlUmVsZWFzZSh7XG4gICAgcGFja2FnZV9pZDogdGVzdE9yZ1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgIGhhc190cmFuc3BpbGVkOiB0cnVlLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IG51bGwsXG5cbiAgICBwY2JfcHJldmlld19pbWFnZV91cmw6IGAvYXBpL3BhY2thZ2VzL2ltYWdlcy90ZXN0LW9yZ2FuaXphdGlvbi90ZXN0LW9yZy1wYWNrYWdlL3BjYi5wbmdgLFxuICAgIGNhZF9wcmV2aWV3X2ltYWdlX3VybDogYC9hcGkvcGFja2FnZXMvaW1hZ2VzL3Rlc3Qtb3JnYW5pemF0aW9uL3Rlc3Qtb3JnLXBhY2thZ2UvM2QucG5nYCxcbiAgICBzY2hfcHJldmlld19pbWFnZV91cmw6IGAvYXBpL3BhY2thZ2VzL2ltYWdlcy90ZXN0LW9yZ2FuaXphdGlvbi90ZXN0LW9yZy1wYWNrYWdlL3NjaGVtYXRpYy5wbmdgLFxuICB9KVxuICBkYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB0ZXN0T3JnUGFja2FnZVJlbGVhc2VJZCxcbiAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgY29udGVudF90ZXh0OiBgXG4gICAgZXhwb3J0IGNvbnN0IFRlc3RDb21wb25lbnQgPSAoeyBuYW1lIH06IHsgbmFtZTogc3RyaW5nIH0pID0+IChcbiAgICAgIDxyZXNpc3RvciBuYW1lPXtuYW1lfSByZXNpc3RhbmNlPVwiMTBrXCIgLz5cbiAgICApXG4gICAgYC50cmltKCksXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGlzX3RleHQ6IHRydWUsXG4gIH0pXG4gIGRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHRlc3RPcmdQYWNrYWdlUmVsZWFzZUlkLFxuICAgIGZpbGVfcGF0aDogXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICBjb250ZW50X3RleHQ6IGBbXG4gICAgICB7XG4gICAgICAgIFwidHlwZVwiOiBcInNvdXJjZV9wcm9qZWN0X21ldGFkYXRhXCIsXG4gICAgICAgIFwic291cmNlX3Byb2plY3RfbWV0YWRhdGFfaWRcIjogXCJzb3VyY2VfcHJvamVjdF9tZXRhZGF0YV8wXCIsXG4gICAgICAgIFwic29mdHdhcmVfdXNlZF9zdHJpbmdcIjogXCJAdHNjaXJjdWl0L2NvcmVAMC4wLjgxM1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcInR5cGVcIjogXCJzb3VyY2VfZ3JvdXBcIixcbiAgICAgICAgXCJzb3VyY2VfZ3JvdXBfaWRcIjogXCJzb3VyY2VfZ3JvdXBfMFwiLFxuICAgICAgICBcImlzX3N1YmNpcmN1aXRcIjogdHJ1ZSxcbiAgICAgICAgXCJ3YXNfYXV0b21hdGljYWxseV9uYW1lZFwiOiB0cnVlLFxuICAgICAgICBcInN1YmNpcmN1aXRfaWRcIjogXCJzdWJjaXJjdWl0X3NvdXJjZV9ncm91cF8wXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwidHlwZVwiOiBcInNvdXJjZV9ib2FyZFwiLFxuICAgICAgICBcInNvdXJjZV9ib2FyZF9pZFwiOiBcInNvdXJjZV9ib2FyZF8wXCIsXG4gICAgICAgIFwic291cmNlX2dyb3VwX2lkXCI6IFwic291cmNlX2dyb3VwXzBcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0eXBlXCI6IFwic2NoZW1hdGljX2dyb3VwXCIsXG4gICAgICAgIFwic2NoZW1hdGljX2dyb3VwX2lkXCI6IFwic2NoZW1hdGljX2dyb3VwXzBcIixcbiAgICAgICAgXCJpc19zdWJjaXJjdWl0XCI6IHRydWUsXG4gICAgICAgIFwic3ViY2lyY3VpdF9pZFwiOiBcInN1YmNpcmN1aXRfc291cmNlX2dyb3VwXzBcIixcbiAgICAgICAgXCJuYW1lXCI6IFwidW5uYW1lZF9ib2FyZDFcIixcbiAgICAgICAgXCJjZW50ZXJcIjoge1xuICAgICAgICAgIFwieFwiOiAwLFxuICAgICAgICAgIFwieVwiOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFwid2lkdGhcIjogMCxcbiAgICAgICAgXCJoZWlnaHRcIjogMCxcbiAgICAgICAgXCJzY2hlbWF0aWNfY29tcG9uZW50X2lkc1wiOiBbXSxcbiAgICAgICAgXCJzb3VyY2VfZ3JvdXBfaWRcIjogXCJzb3VyY2VfZ3JvdXBfMFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcInR5cGVcIjogXCJwY2JfYm9hcmRcIixcbiAgICAgICAgXCJwY2JfYm9hcmRfaWRcIjogXCJwY2JfYm9hcmRfMFwiLFxuICAgICAgICBcImNlbnRlclwiOiB7XG4gICAgICAgICAgXCJ4XCI6IDAsXG4gICAgICAgICAgXCJ5XCI6IDBcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0aGlja25lc3NcIjogMS40LFxuICAgICAgICBcIm51bV9sYXllcnNcIjogMixcbiAgICAgICAgXCJ3aWR0aFwiOiAxMCxcbiAgICAgICAgXCJoZWlnaHRcIjogMTAsXG4gICAgICAgIFwibWF0ZXJpYWxcIjogXCJmcjRcIlxuICAgICAgfVxuICAgIF1gLnRyaW0oKSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfdGV4dDogdHJ1ZSxcbiAgfSlcbiAgZGIuYWRkUGFja2FnZUJ1aWxkKHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHRlc3RPcmdQYWNrYWdlUmVsZWFzZUlkLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICB0cmFuc3BpbGF0aW9uX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSA1MDAwKS50b0lTT1N0cmluZygpLCAvLyBTdGFydGVkIDUgc2Vjb25kcyBhZ29cbiAgICB0cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDMwMDApLnRvSVNPU3RyaW5nKCksIC8vIENvbXBsZXRlZCAzIHNlY29uZHMgYWdvXG4gICAgdHJhbnNwaWxhdGlvbl9sb2dzOiBbXG4gICAgICBcIltJTkZPXSBTdGFydGluZyB0cmFuc3BpbGF0aW9uLi4uXCIsXG4gICAgICBcIltJTkZPXSBQYXJzaW5nIHBhY2thZ2UgY29kZVwiLFxuICAgICAgXCJbSU5GT10gR2VuZXJhdGluZyBUeXBlU2NyaXB0IGRlZmluaXRpb25zXCIsXG4gICAgICBcIltJTkZPXSBDb21waWxpbmcgdG8gSmF2YVNjcmlwdFwiLFxuICAgICAgXCJbU1VDQ0VTU10gVHJhbnNwaWxhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gICAgXSxcbiAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAzMDAwKS50b0lTT1N0cmluZygpLCAvLyBTdGFydGVkIGFmdGVyIHRyYW5zcGlsYXRpb25cbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfY29tcGxldGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTAwMCkudG9JU09TdHJpbmcoKSwgLy8gQ29tcGxldGVkIDEgc2Vjb25kIGFnb1xuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBbXG4gICAgICBcIltJTkZPXSBTdGFydGluZyBjaXJjdWl0IEpTT04gYnVpbGQuLi5cIixcbiAgICAgIFwiW0lORk9dIEFuYWx5emluZyBjb21wb25lbnQgc3RydWN0dXJlXCIsXG4gICAgICBcIltJTkZPXSBHZW5lcmF0aW5nIHBvcnQgY29uZmlndXJhdGlvbnNcIixcbiAgICAgIFwiW0lORk9dIFZhbGlkYXRpbmcgY2lyY3VpdCBjb25uZWN0aW9uc1wiLFxuICAgICAgXCJbU1VDQ0VTU10gQ2lyY3VpdCBKU09OIGJ1aWxkIGNvbXBsZXRlZFwiLFxuICAgIF0sXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yOiBudWxsLFxuICAgIGJ1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBidWlsZF9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTAwMDApLnRvSVNPU3RyaW5nKCksIC8vIFN0YXJ0ZWQgMTAgc2Vjb25kcyBhZ29cbiAgICBidWlsZF9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwgLy8gSnVzdCBjb21wbGV0ZWRcbiAgICBidWlsZF9lcnJvcjogbnVsbCxcbiAgICBidWlsZF9lcnJvcl9sYXN0X3VwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBidWlsZF9sb2dzOlxuICAgICAgXCJCdWlsZCBwcm9jZXNzOlxcblwiICtcbiAgICAgIFwiMS4gRW52aXJvbm1lbnQgc2V0dXAgLSBPS1xcblwiICtcbiAgICAgIFwiMi4gRGVwZW5kZW5jeSByZXNvbHV0aW9uIC0gT0tcXG5cIiArXG4gICAgICBcIjMuIENvZGUgY29tcGlsYXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiNC4gQ2lyY3VpdCB2YWxpZGF0aW9uIC0gT0tcXG5cIiArXG4gICAgICBcIjUuIFBhY2thZ2UgYXNzZW1ibHkgLSBPS1xcblwiICtcbiAgICAgIFwiQnVpbGQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICB9KVxuXG4gIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkOiBvcmdQYWNrYWdlUmVsZWFzZUlkIH0gPSBkYi5hZGRTbmlwcGV0KHtcbiAgICBuYW1lOiBcInRlc3Qtb3JnYW5pemF0aW9uL3Rlc3QtcGFja2FnZVwiLFxuICAgIHVuc2NvcGVkX25hbWU6IFwidGVzdC1wYWNrYWdlXCIsXG4gICAgb3duZXJfbmFtZTogXCJ0ZXN0LW9yZ2FuaXphdGlvblwiLFxuICAgIGNvZGU6IGBcbmV4cG9ydCBjb25zdCBUZXN0Q29tcG9uZW50ID0gKHsgbmFtZSB9OiB7IG5hbWU6IHN0cmluZyB9KSA9PiAoXG4gIDxyZXNpc3RvciBuYW1lPXtuYW1lfSByZXNpc3RhbmNlPVwiMTBrXCIgLz5cbilcbmAudHJpbSgpLFxuICAgIGR0czogYFxuZGVjbGFyZSBtb2R1bGUgXCJAdHNjaS90ZXN0LW9yZ2FuaXphdGlvbi50ZXN0LXBhY2thZ2VcIiB7XG4gIGV4cG9ydCBjb25zdCBUZXN0Q29tcG9uZW50OiAoeyBuYW1lIH06IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH0pID0+IGFueTtcbn1cbmAudHJpbSgpLFxuICAgIGNvbXBpbGVkX2pzOiBgXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuVGVzdENvbXBvbmVudCA9IHZvaWQgMDtcbmNvbnN0IFRlc3RDb21wb25lbnQgPSAoe1xuICBuYW1lXG59KSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInJlc2lzdG9yXCIsIHtcbiAgbmFtZTogbmFtZSxcbiAgcmVzaXN0YW5jZTogXCIxMGtcIlxufSk7XG5leHBvcnRzLlRlc3RDb21wb25lbnQgPSBUZXN0Q29tcG9uZW50O1xuICAgIGAudHJpbSgpLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc25pcHBldF90eXBlOiBcInBhY2thZ2VcIixcbiAgICBkZXNjcmlwdGlvbjogXCJUZXN0IHBhY2thZ2UgZm9yIG9yZ2FuaXphdGlvblwiLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9jb21wb25lbnRcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZnR5cGU6IFwic2ltcGxlX3Jlc2lzdG9yXCIsXG4gICAgICAgIG5hbWU6IFwiUjFcIixcbiAgICAgICAgcmVzaXN0YW5jZTogXCIxMGtcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSlcblxuICAvLyBBZGQgc3VjY2Vzc2Z1bCBidWlsZCBmb3Igb3JnIHBhY2thZ2VcbiAgY29uc3Qgb3JnUGFja2FnZUJ1aWxkID0gZGIuYWRkUGFja2FnZUJ1aWxkKHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG9yZ1BhY2thZ2VSZWxlYXNlSWQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25faW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIHRyYW5zcGlsYXRpb25fc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDUwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgdHJhbnNwaWxhdGlvbl9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAzMDAwKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25fbG9nczogW1xuICAgICAgXCJbSU5GT10gU3RhcnRpbmcgdHJhbnNwaWxhdGlvbi4uLlwiLFxuICAgICAgXCJbU1VDQ0VTU10gVHJhbnNwaWxhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gICAgXSxcbiAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAzMDAwKS50b0lTT1N0cmluZygpLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxMDAwKS50b0lTT1N0cmluZygpLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBbXG4gICAgICBcIltJTkZPXSBTdGFydGluZyBjaXJjdWl0IEpTT04gYnVpbGQuLi5cIixcbiAgICAgIFwiW1NVQ0NFU1NdIENpcmN1aXQgSlNPTiBidWlsZCBjb21wbGV0ZWRcIixcbiAgICBdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogbnVsbCxcbiAgICBidWlsZF9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDEwMDAwKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2Vycm9yOiBudWxsLFxuICAgIGJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHByZXZpZXdfdXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9wcmV2aWV3L29yZ19wYWNrYWdlX2J1aWxkXCIsXG4gICAgYnVpbGRfbG9nczogXCJCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gIH0pXG5cbiAgLy8gVXBkYXRlIHRoZSBvcmcgcGFja2FnZSByZWxlYXNlIHdpdGggdGhlIGJ1aWxkIElEXG4gIGNvbnN0IG9yZ1JlbGVhc2UgPSBkYi5nZXRQYWNrYWdlUmVsZWFzZUJ5SWQob3JnUGFja2FnZVJlbGVhc2VJZCkhXG4gIGRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlKHtcbiAgICAuLi5vcmdSZWxlYXNlLFxuICAgIGxhdGVzdF9wYWNrYWdlX2J1aWxkX2lkOiBvcmdQYWNrYWdlQnVpbGQucGFja2FnZV9idWlsZF9pZCxcbiAgfSlcblxuICBkYi5hZGRPcmdhbml6YXRpb24oe1xuICAgIG5hbWU6IFwidGVzdHVzZXJcIixcbiAgICBvd25lcl9hY2NvdW50X2lkOiBhY2NvdW50X2lkLFxuICAgIGdpdGh1Yl9oYW5kbGU6IFwidHNjaXJjdWl0XCIsXG4gICAgaXNfcGVyc29uYWxfb3JnOiB0cnVlLFxuICAgIG9yZ19pZDogXCJvcmctMTIzNFwiLFxuICB9KVxuXG4gIGRiLmFkZE9yZ2FuaXphdGlvbkFjY291bnQoe1xuICAgIG9yZ19pZDogdGVzdE9yZy5vcmdfaWQsXG4gICAgYWNjb3VudF9pZDogc2V2ZWliYXJBY2MuYWNjb3VudF9pZCxcbiAgfSlcblxuICAvLyBBZGQgYSBwYWNrYWdlIHdpdGggYSBjdXN0b20gM0QgbW9kZWwgKEdMQiBmaWxlKVxuICBjb25zdCBnbGJNb2RlbFBhY2thZ2UgPSBkYi5hZGRQYWNrYWdlKHtcbiAgICBuYW1lOiBcInRlc3R1c2VyL2N1c3RvbS0zZC1tb2RlbFwiLFxuICAgIHVuc2NvcGVkX25hbWU6IFwiY3VzdG9tLTNkLW1vZGVsXCIsXG4gICAgY3JlYXRvcl9hY2NvdW50X2lkOiBhY2NvdW50X2lkLFxuICAgIG93bmVyX29yZ19pZDogXCJvcmctMTIzNFwiLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgcGFja2FnZSBkZW1vbnN0cmF0aW5nIGN1c3RvbSAzRCBDQUQgbW9kZWwgdXNhZ2VcIixcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgc25pcHBldF90eXBlOiBcInBhY2thZ2VcIixcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBudWxsLFxuICAgIGxhdGVzdF92ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgbGljZW5zZTogXCJNSVRcIixcbiAgICB3ZWJzaXRlOiBcImh0dHBzOi8vdHNjaXJjdWl0LmNvbVwiLFxuICAgIHN0YXJfY291bnQ6IDUsXG4gICAgYWlfZGVzY3JpcHRpb246XG4gICAgICBcIkEgcGFja2FnZSB0aGF0IGRlbW9uc3RyYXRlcyBob3cgdG8gdXNlIGN1c3RvbSAzRCBDQUQgbW9kZWxzIChHTEIgZmlsZXMpIHdpdGggdHNjaXJjdWl0IGNvbXBvbmVudHMuXCIsXG4gICAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOlxuICAgICAgXCJJbXBvcnQgdGhlIGRlZmF1bHQgY29tcG9uZW50IGFuZCB1c2UgaXQgaW4geW91ciBjaXJjdWl0IGRlc2lnbi4gVGhlIGNvbXBvbmVudCBpbmNsdWRlcyBhIGN1c3RvbSAzRCBtb2RlbCBmb3IgdmlzdWFsaXphdGlvbi5cIixcbiAgICBkZWZhdWx0X3ZpZXc6IFwiM2RcIixcbiAgfSlcblxuICBjb25zdCB7IHBhY2thZ2VfcmVsZWFzZV9pZDogZ2xiTW9kZWxSZWxlYXNlSWQgfSA9IGRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICBwYWNrYWdlX2lkOiBnbGJNb2RlbFBhY2thZ2UucGFja2FnZV9pZCxcbiAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgIGhhc190cmFuc3BpbGVkOiB0cnVlLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IG51bGwsXG4gIH0pXG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlIHRvIGxpbmsgdG8gdGhlIHJlbGVhc2VcbiAgZGIudXBkYXRlUGFja2FnZShnbGJNb2RlbFBhY2thZ2UucGFja2FnZV9pZCwge1xuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IGdsYk1vZGVsUmVsZWFzZUlkLFxuICB9KVxuXG4gIC8vIEFkZCB0aGUgaW5kZXgudHN4IGZpbGVcbiAgZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogZ2xiTW9kZWxSZWxlYXNlSWQsXG4gICAgZmlsZV9wYXRoOiBcImluZGV4LnRzeFwiLFxuICAgIGNvbnRlbnRfdGV4dDogYGltcG9ydCBnbGJVcmwgZnJvbSBcIi4vdGVzdC5nbGJcIlxuZXhwb3J0IGRlZmF1bHQgKCkgPT4gKFxuICA8Ym9hcmQ+XG4gICAgPGNoaXBcbiAgICAgIG5hbWU9XCJVMVwiXG4gICAgICBjYWRNb2RlbD17XG4gICAgICAgIDxjYWRhc3NlbWJseT5cbiAgICAgICAgICA8Y2FkbW9kZWxcbiAgICAgICAgICAgIG1vZGVsVXJsPXtnbGJVcmx9XG4gICAgICAgICAgICBtb2RlbFVuaXRUb01tU2NhbGU9ezEwMDB9XG4gICAgICAgICAgICBwb3NpdGlvbk9mZnNldD17eyB4OiAwLCB5OiAwLCB6OiAwLjIgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2NhZGFzc2VtYmx5PlxuICAgICAgfVxuICAgIC8+XG4gIDwvYm9hcmQ+XG4pYCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfdGV4dDogdHJ1ZSxcbiAgfSlcblxuICAvLyBSZWFkIHRoZSBHTEIgZmlsZSBmcm9tIGFzc2V0cyBkaXJlY3RvcnkgYW5kIGFkZCBpdCBhcyBhIHBhY2thZ2UgZmlsZVxuICBjb25zdCBnbGJGaWxlUGF0aCA9IGpvaW4oX19kaXJuYW1lLCBcImFzc2V0c1wiLCBcInRlc3QuZ2xiXCIpXG4gIGNvbnN0IGdsYkZpbGVDb250ZW50ID0gcmVhZEZpbGVTeW5jKGdsYkZpbGVQYXRoKVxuICBkYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBnbGJNb2RlbFJlbGVhc2VJZCxcbiAgICBmaWxlX3BhdGg6IFwidGVzdC5nbGJcIixcbiAgICBjb250ZW50X2J5dGVzOiBnbGJGaWxlQ29udGVudCxcbiAgICBjb250ZW50X21pbWV0eXBlOiBcIm1vZGVsL2dsdGYtYmluYXJ5XCIsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGlzX3RleHQ6IGZhbHNlLFxuICB9KVxuXG4gIC8vIEFkZCBhIHN1Y2Nlc3NmdWwgYnVpbGQgZm9yIHRoZSBHTEIgbW9kZWwgcGFja2FnZVxuICBkYi5hZGRQYWNrYWdlQnVpbGQoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogZ2xiTW9kZWxSZWxlYXNlSWQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25faW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIHRyYW5zcGlsYXRpb25fc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDUwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgdHJhbnNwaWxhdGlvbl9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAzMDAwKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25fbG9nczogW1xuICAgICAgXCJbSU5GT10gU3RhcnRpbmcgdHJhbnNwaWxhdGlvbi4uLlwiLFxuICAgICAgXCJbSU5GT10gUGFyc2luZyBwYWNrYWdlIGNvZGVcIixcbiAgICAgIFwiW0lORk9dIFByb2Nlc3NpbmcgR0xCIGFzc2V0IGZpbGVcIixcbiAgICAgIFwiW0lORk9dIEdlbmVyYXRpbmcgVHlwZVNjcmlwdCBkZWZpbml0aW9uc1wiLFxuICAgICAgXCJbU1VDQ0VTU10gVHJhbnNwaWxhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gICAgXSxcbiAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAzMDAwKS50b0lTT1N0cmluZygpLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxMDAwKS50b0lTT1N0cmluZygpLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBbXG4gICAgICBcIltJTkZPXSBTdGFydGluZyBjaXJjdWl0IEpTT04gYnVpbGQuLi5cIixcbiAgICAgIFwiW0lORk9dIExvYWRpbmcgY3VzdG9tIDNEIG1vZGVsXCIsXG4gICAgICBcIltJTkZPXSBWYWxpZGF0aW5nIENBRCBhc3NlbWJseSBzdHJ1Y3R1cmVcIixcbiAgICAgIFwiW1NVQ0NFU1NdIENpcmN1aXQgSlNPTiBidWlsZCBjb21wbGV0ZWRcIixcbiAgICBdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogbnVsbCxcbiAgICBidWlsZF9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDEwMDAwKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2Vycm9yOiBudWxsLFxuICAgIGJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2xvZ3M6XG4gICAgICBcIkJ1aWxkIHByb2Nlc3M6XFxuXCIgK1xuICAgICAgXCIxLiBFbnZpcm9ubWVudCBzZXR1cCAtIE9LXFxuXCIgK1xuICAgICAgXCIyLiBBc3NldCBwcm9jZXNzaW5nIC0gT0tcXG5cIiArXG4gICAgICBcIjMuIENvZGUgY29tcGlsYXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiNC4gM0QgbW9kZWwgdmFsaWRhdGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCJCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gIH0pXG59XG4iLCAiaW1wb3J0IGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgYXhpb3MgZnJvbSBcInJlZGF4aW9zXCJcbmltcG9ydCB0eXBlIHsgRGJDbGllbnQgfSBmcm9tIFwiLi9kYi1jbGllbnRcIlxuaW1wb3J0IHR5cGUgeyBQYWNrYWdlLCBQYWNrYWdlRmlsZSwgUGFja2FnZVJlbGVhc2UgfSBmcm9tIFwiLi9zY2hlbWFcIlxuXG5jb25zdCBleHRyYWN0VHNjaURlcGVuZGVuY2llcyA9IChcbiAgY29kZTogc3RyaW5nLFxuKTogQXJyYXk8eyBvd25lcjogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfT4gPT4ge1xuICBjb25zdCByZWdleCA9IC9AdHNjaVxcLyhbXi5dKylcXC4oW15cIidcXHNdKykvZ1xuICBjb25zdCBtYXRjaGVzID0gQXJyYXkuZnJvbShjb2RlLm1hdGNoQWxsKHJlZ2V4KSlcbiAgcmV0dXJuIG1hdGNoZXMubWFwKChtYXRjaCkgPT4gKHtcbiAgICBvd25lcjogbWF0Y2hbMV0sXG4gICAgbmFtZTogbWF0Y2hbMl0sXG4gIH0pKVxufVxuXG5jb25zdCByZWdpc3RyeUFwaSA9IGF4aW9zLmNyZWF0ZSh7XG4gIGJhc2VVUkw6IFwiaHR0cHM6Ly9hcGkudHNjaXJjdWl0LmNvbVwiLFxuICBoZWFkZXJzOiB7XG4gICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgfSxcbn0pXG5cbmNvbnN0IGZldGNoUGFja2FnZUZyb21SZWdpc3RyeSA9IGFzeW5jIChvd25lcjogc3RyaW5nLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgZnVsbE5hbWUgPSBgJHtvd25lcn0vJHtuYW1lfWBcbiAgY29uc29sZS5sb2coYFthdXRvbG9hZC1kZXYtcGtnc10gXHVEODNEXHVEQ0U2IEZldGNoaW5nIHBhY2thZ2UgJHtmdWxsTmFtZX0uLi5gKVxuXG4gIGxldCBwYWNrYWdlRGF0YVxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVnaXN0cnlBcGkucG9zdChcIi9wYWNrYWdlcy9nZXRcIiwge1xuICAgICAgbmFtZTogZnVsbE5hbWUsXG4gICAgfSlcbiAgICBwYWNrYWdlRGF0YSA9IHJlc3BvbnNlLmRhdGFcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBwYWNrYWdlIGRhdGEgZm9yICR7ZnVsbE5hbWV9OmAsIGUpXG4gICAgdGhyb3cgZVxuICB9XG5cbiAgbGV0IHJlbGVhc2VEYXRhXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZWdpc3RyeUFwaS5wb3N0KFwiL3BhY2thZ2VfcmVsZWFzZXMvZ2V0XCIsIHtcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VEYXRhLnBhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICB9KVxuICAgIHJlbGVhc2VEYXRhID0gcmVzcG9uc2UuZGF0YVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBbYXV0b2xvYWQtZGV2LXBrZ3NdIFx1Mjc0QyBGYWlsZWQgdG8gZmV0Y2ggcmVsZWFzZSBkYXRhIGZvciAke2Z1bGxOYW1lfTpgLFxuICAgICAgZSxcbiAgICApXG4gICAgdGhyb3cgZVxuICB9XG5cbiAgbGV0IGZpbGVzRGF0YVxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVnaXN0cnlBcGkucG9zdChcbiAgICAgIGBwYWNrYWdlX2ZpbGVzL2xpc3Q/cGFja2FnZV9yZWxlYXNlX2lkPSR7cmVsZWFzZURhdGEucGFja2FnZV9yZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZH1gLFxuICAgICAge30sXG4gICAgKVxuICAgIGZpbGVzRGF0YSA9IHJlc3BvbnNlLmRhdGFcblxuICAgIC8vIEZldGNoIGNvbnRlbnRfdGV4dCBmb3IgZWFjaCBmaWxlIGluZGl2aWR1YWxseVxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlc0RhdGEucGFja2FnZV9maWxlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZmlsZVJlc3BvbnNlID0gYXdhaXQgcmVnaXN0cnlBcGkucG9zdChcbiAgICAgICAgICBgL3BhY2thZ2VfZmlsZXMvZ2V0P3BhY2thZ2VfZmlsZV9pZD0ke2ZpbGUucGFja2FnZV9maWxlX2lkfWAsXG4gICAgICAgICAge30sXG4gICAgICAgIClcbiAgICAgICAgZmlsZS5jb250ZW50X3RleHQgPSBmaWxlUmVzcG9uc2UuZGF0YS5wYWNrYWdlX2ZpbGUuY29udGVudF90ZXh0XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYFthdXRvbG9hZC1kZXYtcGtnc10gXHUyNzRDIEZhaWxlZCB0byBmZXRjaCBjb250ZW50IGZvciBmaWxlICR7ZmlsZS5maWxlX3BhdGh9IGluIHBhY2thZ2UgJHtmdWxsTmFtZX06YCxcbiAgICAgICAgICBlLFxuICAgICAgICApXG4gICAgICAgIHRocm93IGVcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYFthdXRvbG9hZC1kZXYtcGtnc10gXHUyNzRDIEZhaWxlZCB0byBmZXRjaCBmaWxlcyBkYXRhIGZvciAke2Z1bGxOYW1lfTpgLFxuICAgICAgZSxcbiAgICApXG4gICAgdGhyb3cgZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYWNrYWdlOiBwYWNrYWdlRGF0YS5wYWNrYWdlIGFzIFBhY2thZ2UsXG4gICAgcmVsZWFzZTogcmVsZWFzZURhdGEucGFja2FnZV9yZWxlYXNlIGFzIFBhY2thZ2VSZWxlYXNlLFxuICAgIGZpbGVzOiBmaWxlc0RhdGEucGFja2FnZV9maWxlcyBhcyBQYWNrYWdlRmlsZVtdLFxuICB9XG59XG5cbmNvbnN0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyA9IGFzeW5jIChcbiAgZGI6IERiQ2xpZW50LFxuICBvd25lcjogc3RyaW5nLFxuICBuYW1lOiBzdHJpbmcsXG4gIGxvYWRlZFBhY2thZ2VzID0gbmV3IFNldDxzdHJpbmc+KCksXG4pID0+IHtcbiAgY29uc3QgcGFja2FnZUtleSA9IGAke293bmVyfS8ke25hbWV9YFxuICBpZiAobG9hZGVkUGFja2FnZXMuaGFzKHBhY2thZ2VLZXkpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGxldCByZXN1bHRcbiAgdHJ5IHtcbiAgICByZXN1bHQgPSBhd2FpdCBmZXRjaFBhY2thZ2VGcm9tUmVnaXN0cnkob3duZXIsIG5hbWUpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGBbYXV0b2xvYWQtZGV2LXBrZ3NdIFx1Mjc0QyBGYWlsZWQgdG8gbG9hZCAke3BhY2thZ2VLZXl9YClcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IHsgcGFja2FnZTogcGtnLCByZWxlYXNlLCBmaWxlcyB9ID0gcmVzdWx0XG5cbiAgLy8gQ2hlY2sgaWYgcGFja2FnZSBhbHJlYWR5IGV4aXN0c1xuICBpZiAoZGIuZ2V0UGFja2FnZUJ5SWQocGtnLnBhY2thZ2VfaWQpKSB7XG4gICAgY29uc29sZS5sb2coYFthdXRvbG9hZC1kZXYtcGtnc10gXHUyNkExIFBhY2thZ2UgJHtwYWNrYWdlS2V5fSBhbHJlYWR5IGV4aXN0c2ApXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIEFkZCBwYWNrYWdlLCByZWxlYXNlLCBhbmQgZmlsZXMgdG8gZGJcbiAgZGIuYWRkUGFja2FnZSh7XG4gICAgLi4ucGtnLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogcmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgc3Rhcl9jb3VudDogTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTEpLFxuICB9KVxuXG4gIGRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICAuLi5yZWxlYXNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IEFycmF5LmlzQXJyYXkocmVsZWFzZS50cmFuc3BpbGF0aW9uX2xvZ3MpXG4gICAgICA/IHJlbGVhc2UudHJhbnNwaWxhdGlvbl9sb2dzXG4gICAgICA6IFtdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBBcnJheS5pc0FycmF5KHJlbGVhc2UuY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3MpXG4gICAgICA/IHJlbGVhc2UuY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3NcbiAgICAgIDogW10sXG4gICAgdHJhbnNwaWxhdGlvbl9kaXNwbGF5X3N0YXR1czpcbiAgICAgIHJlbGVhc2UudHJhbnNwaWxhdGlvbl9kaXNwbGF5X3N0YXR1cyA/PyBcInBlbmRpbmdcIixcbiAgfSlcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBkYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAuLi5maWxlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH0pXG4gIH1cblxuICBsb2FkZWRQYWNrYWdlcy5hZGQocGFja2FnZUtleSlcbiAgY29uc29sZS5sb2coYFthdXRvbG9hZC1kZXYtcGtnc10gXHVEODNEXHVEQ0U2IExvYWRlZCAke3BhY2thZ2VLZXl9YClcblxuICAvLyBMb2FkIGRlcGVuZGVuY2llc1xuICBjb25zdCBtYWluRmlsZSA9IGZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiIHx8IGYuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIsXG4gIClcbiAgaWYgKCFtYWluRmlsZT8uY29udGVudF90ZXh0KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGNvbnN0IGRlcGVuZGVuY2llcyA9IGV4dHJhY3RUc2NpRGVwZW5kZW5jaWVzKG1haW5GaWxlLmNvbnRlbnRfdGV4dClcbiAgbGV0IGFsbERlcHNMb2FkZWQgPSB0cnVlXG5cbiAgZm9yIChjb25zdCBkZXAgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgY29uc3QgZGVwTG9hZGVkID0gYXdhaXQgbG9hZFBhY2thZ2VXaXRoRGVwZW5kZW5jaWVzKFxuICAgICAgZGIsXG4gICAgICBkZXAub3duZXIsXG4gICAgICBkZXAubmFtZSxcbiAgICAgIGxvYWRlZFBhY2thZ2VzLFxuICAgIClcbiAgICBpZiAoIWRlcExvYWRlZCkge1xuICAgICAgYWxsRGVwc0xvYWRlZCA9IGZhbHNlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbYXV0b2xvYWQtZGV2LXBrZ3NdIFx1MjZBMFx1RkUwRiBGYWlsZWQgdG8gbG9hZCBkZXBlbmRlbmN5ICR7ZGVwLm93bmVyfS8ke2RlcC5uYW1lfSBmb3IgJHtwYWNrYWdlS2V5fWAsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbERlcHNMb2FkZWRcbn1cblxuZXhwb3J0IGNvbnN0IGxvYWRBdXRvbG9hZFBhY2thZ2VzID0gYXN5bmMgKGRiOiBEYkNsaWVudCkgPT4ge1xuICBjb25zdCBhdXRvbG9hZFBhdGggPSBwYXRoLmpvaW4oXG4gICAgcGF0aC5kaXJuYW1lKF9fZGlybmFtZSksXG4gICAgXCJkYlwiLFxuICAgIFwiYXV0b2xvYWQtcGFja2FnZXMuanNvblwiLFxuICApXG4gIGlmICghZnMuZXhpc3RzU3luYyhhdXRvbG9hZFBhdGgpKSB7XG4gICAgY29uc29sZS5lcnJvcihcIlthdXRvbG9hZC1kZXYtcGtnc10gXHUyNzRDIE5vIGF1dG9sb2FkLXBhY2thZ2VzLmpzb24gZm91bmRcIilcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGF1dG9sb2FkQ29udGVudCA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGF1dG9sb2FkUGF0aCwgXCJ1dGY4XCIpKVxuICBjb25zdCBsb2FkZWRQYWNrYWdlcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGxldCBzdWNjZXNzQ291bnQgPSAwXG4gIGxldCBmYWlsdXJlQ291bnQgPSAwXG5cbiAgZm9yIChjb25zdCBwYWNrYWdlUmVmIG9mIGF1dG9sb2FkQ29udGVudC5wYWNrYWdlcykge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBsb2FkUGFja2FnZVdpdGhEZXBlbmRlbmNpZXMoXG4gICAgICBkYixcbiAgICAgIHBhY2thZ2VSZWYub3duZXIsXG4gICAgICBwYWNrYWdlUmVmLm5hbWUsXG4gICAgICBsb2FkZWRQYWNrYWdlcyxcbiAgICApXG4gICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgIHN1Y2Nlc3NDb3VudCsrXG4gICAgfSBlbHNlIHtcbiAgICAgIGZhaWx1cmVDb3VudCsrXG4gICAgfVxuICB9XG5cbiAgY29uc29sZS5sb2coYFxcblthdXRvbG9hZC1kZXYtcGtnc10gXHVEODNEXHVEQ0NCIFBhY2thZ2UgbG9hZGluZyBjb21wbGV0ZTpgKVxuICBjb25zb2xlLmxvZyhcbiAgICBgW2F1dG9sb2FkLWRldi1wa2dzXSBcdTI3MDUgU3VjY2Vzc2Z1bGx5IGxvYWRlZDogJHtzdWNjZXNzQ291bnR9IHBhY2thZ2VzYCxcbiAgKVxuICBpZiAoZmFpbHVyZUNvdW50ID4gMCkge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYFthdXRvbG9hZC1kZXYtcGtnc10gXHUyNzRDIEZhaWxlZCB0byBsb2FkOiAke2ZhaWx1cmVDb3VudH0gcGFja2FnZXNgLFxuICAgIClcbiAgfVxufVxuIiwgImltcG9ydCBtZDUgZnJvbSBcIm1kNVwiXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VGaWxlIH0gZnJvbSBcIi4uL2RiL3NjaGVtYVwiXG5cbi8qKlxuICogR2VuZXJhdGUgYW4gTUQ1IGhhc2ggZnJvbSBwYWNrYWdlIGZpbGVzIGNvbnRlbnRcbiAqIFVzZXMgdGhlIHNhbWUgZm9ybWF0IGFzIGV4aXN0aW5nIHRlc3RzOiBjcmVhdGVzIGEgbWFwIG9mIGZpbGVfcGF0aCAtPiBjb250ZW50X3RleHRcbiAqIGFuZCBnZW5lcmF0ZXMgYW4gTUQ1IGhhc2ggb2YgdGhlIEpTT04gc3RyaW5naWZpZWQgbWFwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUZzU2hhKHBhY2thZ2VGaWxlczogUGFja2FnZUZpbGVbXSk6IHN0cmluZyB7XG4gIGNvbnN0IGZzTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge31cblxuICBwYWNrYWdlRmlsZXNcbiAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLmNvbnRlbnRfdGV4dCkgLy8gT25seSBpbmNsdWRlIGZpbGVzIHdpdGggY29udGVudFxuICAgIC5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICBmc01hcFtmaWxlLmZpbGVfcGF0aF0gPSBmaWxlLmNvbnRlbnRfdGV4dCB8fCBcIlwiXG4gICAgfSlcblxuICBjb25zdCBoYXNoID0gbWQ1KEpTT04uc3RyaW5naWZ5KGZzTWFwKSlcbiAgcmV0dXJuIGBtZDUtJHtoYXNofWBcbn1cbiIsICJpbXBvcnQgdHlwZSB7IERiQ2xpZW50IH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnRcIlxuaW1wb3J0IHsgY3JlYXRlRGF0YWJhc2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL2RiLWNsaWVudFwiXG5pbXBvcnQgdHlwZSB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlY1wiXG5cbmV4cG9ydCBjb25zdCB3aXRoRGI6IE1pZGRsZXdhcmU8XG4gIHt9LFxuICB7XG4gICAgZGI6IERiQ2xpZW50XG4gIH1cbj4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgaWYgKCFjdHguZGIpIHtcbiAgICBjdHguZGIgPSBjcmVhdGVEYXRhYmFzZSgpXG4gIH1cbiAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG59XG4iLCAiaW1wb3J0IHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuXG5leHBvcnQgdHlwZSBDdHhFcnJvckZuID0gKFxuICBzdGF0dXM6IG51bWJlcixcbiAgZXJyb3JfcGF5bG9hZDoge1xuICAgIGVycm9yX2NvZGU6IHN0cmluZ1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICB9LFxuKSA9PiBSZXNwb25zZVxuXG5leHBvcnQgY29uc3Qgd2l0aEN0eEVycm9yOiBNaWRkbGV3YXJlPFxuICB7fSxcbiAge1xuICAgIGVycm9yOiBDdHhFcnJvckZuXG4gIH1cbj4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgY3R4LmVycm9yID0gKHN0YXR1cywgZXJyb3JfcGF5bG9hZCkgPT4ge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogZXJyb3JfcGF5bG9hZCB9KSwge1xuICAgICAgc3RhdHVzLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICByZXR1cm4gbmV4dChyZXEsIGN0eClcbn1cbiIsICJpbXBvcnQgdHlwZSB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCB0eXBlIHsgQ3R4RXJyb3JGbiB9IGZyb20gXCIuL3dpdGgtY3R4LWVycm9yXCJcbmltcG9ydCB0eXBlIHsgRGJDbGllbnQgfSBmcm9tIFwiLi4vZGIvZGItY2xpZW50XCJcbmltcG9ydCB7IGRlY29kZUp3dCB9IGZyb20gXCJqb3NlXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhTZXNzaW9uQXV0aDogTWlkZGxld2FyZTxcbiAge1xuICAgIGVycm9yOiBDdHhFcnJvckZuXG4gICAgZGI6IERiQ2xpZW50XG4gIH0sXG4gIHtcbiAgICBhdXRoOiB7XG4gICAgICB0eXBlOiBcInNlc3Npb25cIlxuICAgICAgYWNjb3VudF9pZDogc3RyaW5nXG4gICAgICBwZXJzb25hbF9vcmdfaWQ6IHN0cmluZ1xuICAgICAgZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmdcbiAgICAgIHRzY2lyY3VpdF9oYW5kbGU6IHN0cmluZyB8IG51bGxcbiAgICAgIHNlc3Npb25faWQ6IHN0cmluZ1xuICAgICAgb3JnczogQXJyYXk8e1xuICAgICAgICBvcmdfaWQ6IHN0cmluZ1xuICAgICAgICBuYW1lOiBzdHJpbmdcbiAgICAgICAgdXNlcl9wZXJtaXNzaW9uczoge1xuICAgICAgICAgIGNhbl9tYW5hZ2VfcGFja2FnZXM6IGJvb2xlYW5cbiAgICAgICAgfVxuICAgICAgfT5cbiAgICB9XG4gIH0sXG4gIHt9XG4+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIGlmIChyZXEubWV0aG9kID09PSBcIk9QVElPTlNcIikgcmV0dXJuIG5leHQocmVxLCBjdHgpXG4gIGNvbnN0IHRva2VuID0gcmVxLmhlYWRlcnMuZ2V0KFwiYXV0aG9yaXphdGlvblwiKT8uc3BsaXQoXCJCZWFyZXIgXCIpPy5bMV1cblxuICAvLyBUcnkgdG8gZGVjb2RlIEpXVCB0b2tlbiBhbmQgdmVyaWZ5IHNlc3Npb24gZXhpc3RzXG4gIGlmICh0b2tlbiAmJiBjdHguZGI/LmdldFN0YXRlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVKd3QodG9rZW4pXG4gICAgICBjb25zdCBzZXNzaW9uSWQgPSBkZWNvZGVkLnNlc3Npb25faWQgYXMgc3RyaW5nXG5cbiAgICAgIGlmIChzZXNzaW9uSWQpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBjdHguZGIuZ2V0U3RhdGUoKVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHNlc3Npb24gc3RpbGwgZXhpc3RzIGluIHRoZSBkYXRhYmFzZVxuICAgICAgICBjb25zdCBzZXNzaW9uID0gc3RhdGUuc2Vzc2lvbnMuZmluZChcbiAgICAgICAgICAoczogYW55KSA9PiBzLnNlc3Npb25faWQgPT09IHNlc3Npb25JZCxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgICAgIC8vIFNlc3Npb24gaGFzIGJlZW4gZGVsZXRlZCAobG9nZ2VkIG91dCksIHJlamVjdCB0aGUgcmVxdWVzdFxuICAgICAgICAgIHJldHVybiBjdHguZXJyb3IoNDAxLCB7XG4gICAgICAgICAgICBlcnJvcl9jb2RlOiBcInNlc3Npb25fZXhwaXJlZFwiLFxuICAgICAgICAgICAgbWVzc2FnZTogXCJTZXNzaW9uIGhhcyBiZWVuIGludmFsaWRhdGVkLiBQbGVhc2UgbG9nIGluIGFnYWluLlwiLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaW5kIGFjY291bnQgZnJvbSB0aGUgZGVjb2RlZCB0b2tlblxuICAgICAgICBjb25zdCBhY2NvdW50SWQgPSBkZWNvZGVkLmFjY291bnRfaWQgYXMgc3RyaW5nXG4gICAgICAgIGNvbnN0IGFjY291bnQgPSBzdGF0ZS5hY2NvdW50cy5maW5kKFxuICAgICAgICAgIChhY2M6IGFueSkgPT4gYWNjLmFjY291bnRfaWQgPT09IGFjY291bnRJZCxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChhY2NvdW50KSB7XG4gICAgICAgICAgLy8gRmV0Y2ggb3JncyBmb3IgdGhpcyBhY2NvdW50XG4gICAgICAgICAgY29uc3Qgb3JnQWNjb3VudHMgPSBzdGF0ZS5vcmdBY2NvdW50cy5maWx0ZXIoXG4gICAgICAgICAgICAob2E6IGFueSkgPT4gb2EuYWNjb3VudF9pZCA9PT0gYWNjb3VudC5hY2NvdW50X2lkLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9yZ3MgPSBvcmdBY2NvdW50cy5tYXAoKG9hOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9yZyA9IHN0YXRlLm9yZ2FuaXphdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgKG86IGFueSkgPT4gby5vcmdfaWQgPT09IG9hLm9yZ19pZCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIG9yZ19pZDogb2Eub3JnX2lkLFxuICAgICAgICAgICAgICBuYW1lOiBvcmc/Lm9yZ19kaXNwbGF5X25hbWUgfHwgb3JnPy5naXRodWJfaGFuZGxlIHx8IG9hLm9yZ19pZCxcbiAgICAgICAgICAgICAgdXNlcl9wZXJtaXNzaW9uczogeyBjYW5fbWFuYWdlX3BhY2thZ2VzOiB0cnVlIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IHRzY2lyY3VpdF9oYW5kbGUgPVxuICAgICAgICAgICAgZGVjb2RlZD8udHNjaXJjdWl0X2hhbmRsZSA/PyBhY2NvdW50Py50c2NpcmN1aXRfaGFuZGxlID8/IG51bGxcblxuICAgICAgICAgIGlmICghdHNjaXJjdWl0X2hhbmRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgICAgICAgICAgZXJyb3JfY29kZTogXCJ0c2NpcmN1aXRfaGFuZGxlX3JlcXVpcmVkXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJQbGVhc2Ugc2V0IGEgdHNjaXJjdWl0IGhhbmRsZSBiZWZvcmUgdXNpbmcgdGhpcyBmZWF0dXJlLiBWaXNpdCBhY2NvdW50IHNldHRpbmdzIHRvIGFkZCBvbmUuXCIsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGN0eC5hdXRoID0ge1xuICAgICAgICAgICAgdHlwZTogXCJzZXNzaW9uXCIsXG4gICAgICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgICAgICAgICBwZXJzb25hbF9vcmdfaWQ6XG4gICAgICAgICAgICAgIGFjY291bnQucGVyc29uYWxfb3JnX2lkIHx8IGBvcmctJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgICAgICAgIGdpdGh1Yl91c2VybmFtZTogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gICAgICAgICAgICB0c2NpcmN1aXRfaGFuZGxlOiBhY2NvdW50LnRzY2lyY3VpdF9oYW5kbGUsXG4gICAgICAgICAgICBzZXNzaW9uX2lkOiBzZXNzaW9uSWQsXG4gICAgICAgICAgICBvcmdzOlxuICAgICAgICAgICAgICBvcmdzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IG9yZ3NcbiAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIG9yZ19pZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnQucGVyc29uYWxfb3JnX2lkIHx8IGBvcmctJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudC5naXRodWJfdXNlcm5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnQucGVyc29uYWxfb3JnX2lkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBgb3JnLSR7YWNjb3VudC5hY2NvdW50X2lkfWAsXG4gICAgICAgICAgICAgICAgICAgICAgdXNlcl9wZXJtaXNzaW9uczogeyBjYW5fbWFuYWdlX3BhY2thZ2VzOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV4dChyZXEsIGN0eClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBKV1QgZGVjb2RlIGZhaWxlZCwgY29udGludWUgdG8gZmFsbGJhY2tcbiAgICB9XG4gIH1cblxuICAvLyBMZWdhY3k6IE9ubHkgY2hlY2sgZGF0YWJhc2UgYWNjb3VudHMgd2hlbiB3ZSdyZSBpbiBhIEJ1biB0ZXN0IGVudmlyb25tZW50XG4gIGlmIChwcm9jZXNzLmVudi5CVU5fVEVTVCA9PT0gXCJ0cnVlXCIgJiYgdG9rZW4gJiYgY3R4LmRiPy5nZXRTdGF0ZSkge1xuICAgIGNvbnN0IHN0YXRlID0gY3R4LmRiLmdldFN0YXRlKClcbiAgICBjb25zdCBhY2NvdW50ID0gc3RhdGUuYWNjb3VudHMuZmluZCgoYWNjOiBhbnkpID0+IGFjYy5hY2NvdW50X2lkID09PSB0b2tlbilcbiAgICBpZiAoYWNjb3VudCkge1xuICAgICAgLy8gRmV0Y2ggb3JncyBmb3IgdGhpcyBhY2NvdW50XG4gICAgICBjb25zdCBvcmdBY2NvdW50cyA9IHN0YXRlLm9yZ0FjY291bnRzLmZpbHRlcihcbiAgICAgICAgKG9hOiBhbnkpID0+IG9hLmFjY291bnRfaWQgPT09IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICAgIClcblxuICAgICAgY29uc3Qgb3JncyA9IG9yZ0FjY291bnRzLm1hcCgob2E6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBvcmcgPSBzdGF0ZS5vcmdhbml6YXRpb25zLmZpbmQoKG86IGFueSkgPT4gby5vcmdfaWQgPT09IG9hLm9yZ19pZClcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvcmdfaWQ6IG9hLm9yZ19pZCxcbiAgICAgICAgICBuYW1lOiBvcmc/Lm9yZ19kaXNwbGF5X25hbWUgfHwgb3JnPy5naXRodWJfaGFuZGxlIHx8IG9hLm9yZ19pZCxcbiAgICAgICAgICB1c2VyX3Blcm1pc3Npb25zOiB7IGNhbl9tYW5hZ2VfcGFja2FnZXM6IHRydWUgfSxcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgY3R4LmF1dGggPSB7XG4gICAgICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgICAgIHBlcnNvbmFsX29yZ19pZDogYWNjb3VudC5wZXJzb25hbF9vcmdfaWQgfHwgYG9yZy0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgICBnaXRodWJfdXNlcm5hbWU6IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgICB0c2NpcmN1aXRfaGFuZGxlOiBhY2NvdW50LnRzY2lyY3VpdF9oYW5kbGUsXG4gICAgICAgIHNlc3Npb25faWQ6IGBzZXNzaW9uLSR7YWNjb3VudC5hY2NvdW50X2lkfWAsXG4gICAgICAgIG9yZ3M6XG4gICAgICAgICAgb3Jncy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IG9yZ3NcbiAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG9yZ19pZDpcbiAgICAgICAgICAgICAgICAgICAgYWNjb3VudC5wZXJzb25hbF9vcmdfaWQgfHwgYG9yZy0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgYWNjb3VudC5naXRodWJfdXNlcm5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgYWNjb3VudC5wZXJzb25hbF9vcmdfaWQgfHxcbiAgICAgICAgICAgICAgICAgICAgYG9yZy0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgICAgICAgICAgICAgdXNlcl9wZXJtaXNzaW9uczogeyBjYW5fbWFuYWdlX3BhY2thZ2VzOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuICAgIH1cbiAgfVxuXG4gIC8vIEZhbGxiYWNrIGF1dGggZm9yIG5vbi10ZXN0IGVudmlyb25tZW50cyBvciB3aGVuIG5vIHRva2VuIGlzIGZvdW5kXG4gIGNvbnN0IGZhbGxiYWNrQWNjb3VudElkID0gXCJhY2NvdW50LTEyMzRcIlxuICBjb25zdCBmYWxsYmFja09yZ0lkID0gXCJvcmctMTIzNFwiXG5cbiAgY29uc3QgZmFsbGJhY2tPcmdzID0gW1xuICAgIHtcbiAgICAgIG9yZ19pZDogZmFsbGJhY2tPcmdJZCxcbiAgICAgIG5hbWU6IFwib3JnLTEyMzRcIixcbiAgICAgIHVzZXJfcGVybWlzc2lvbnM6IHsgY2FuX21hbmFnZV9wYWNrYWdlczogdHJ1ZSB9LFxuICAgIH0sXG4gIF1cblxuICBjdHguYXV0aCA9IHtcbiAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICBhY2NvdW50X2lkOiBmYWxsYmFja0FjY291bnRJZCxcbiAgICBwZXJzb25hbF9vcmdfaWQ6IGZhbGxiYWNrT3JnSWQsXG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgdHNjaXJjdWl0X2hhbmRsZTogXCJ0ZXN0dXNlclwiLFxuICAgIHNlc3Npb25faWQ6IFwic2Vzc2lvbi0xMjM0XCIsXG4gICAgb3JnczogZmFsbGJhY2tPcmdzLFxuICB9XG5cbiAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG59XG4iLCAiaW1wb3J0IHR5cGUgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQgdHlwZSB7IEN0eEVycm9yRm4gfSBmcm9tIFwiLi93aXRoLWN0eC1lcnJvclwiXG5pbXBvcnQgeyBkZWNvZGVKd3QgfSBmcm9tIFwiam9zZVwiXG5cbmV4cG9ydCBjb25zdCB3aXRoT3B0aW9uYWxTZXNzaW9uQXV0aDogTWlkZGxld2FyZTxcbiAge1xuICAgIGVycm9yOiBDdHhFcnJvckZuXG4gICAgZGI6IGFueVxuICB9LFxuICB7XG4gICAgYXV0aD86IHtcbiAgICAgIHR5cGU6IFwic2Vzc2lvblwiXG4gICAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgICAgIHBlcnNvbmFsX29yZ19pZDogc3RyaW5nXG4gICAgICBnaXRodWJfdXNlcm5hbWU6IHN0cmluZ1xuICAgICAgdHNjaXJjdWl0X2hhbmRsZTogc3RyaW5nIHwgbnVsbFxuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nXG4gICAgfVxuICB9LFxuICB7fVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBpZiAocmVxLm1ldGhvZCA9PT0gXCJPUFRJT05TXCIpIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuXG4gIGNvbnN0IHRva2VuID0gcmVxLmhlYWRlcnMuZ2V0KFwiYXV0aG9yaXphdGlvblwiKT8uc3BsaXQoXCJCZWFyZXIgXCIpPy5bMV1cblxuICBpZiAoIXRva2VuKSB7XG4gICAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG4gIH1cblxuICAvLyBUcnkgdG8gZGVjb2RlIEpXVCB0b2tlbiBhbmQgdmVyaWZ5IHNlc3Npb24gZXhpc3RzXG4gIGlmIChjdHguZGI/LmdldFN0YXRlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVKd3QodG9rZW4pXG4gICAgICBjb25zdCBzZXNzaW9uSWQgPSBkZWNvZGVkLnNlc3Npb25faWQgYXMgc3RyaW5nXG5cbiAgICAgIGlmIChzZXNzaW9uSWQpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBjdHguZGIuZ2V0U3RhdGUoKVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHNlc3Npb24gc3RpbGwgZXhpc3RzIGluIHRoZSBkYXRhYmFzZVxuICAgICAgICBjb25zdCBzZXNzaW9uID0gc3RhdGUuc2Vzc2lvbnMuZmluZChcbiAgICAgICAgICAoczogYW55KSA9PiBzLnNlc3Npb25faWQgPT09IHNlc3Npb25JZCxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIElmIHNlc3Npb24gZG9lc24ndCBleGlzdCwgdHJlYXQgYXMgdW5hdXRoZW50aWNhdGVkIChubyBhdXRoIGNvbnRleHQpXG4gICAgICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgICAgIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmluZCBhY2NvdW50IGZyb20gdGhlIGRlY29kZWQgdG9rZW5cbiAgICAgICAgY29uc3QgYWNjb3VudElkID0gZGVjb2RlZC5hY2NvdW50X2lkIGFzIHN0cmluZ1xuICAgICAgICBjb25zdCBhY2NvdW50ID0gc3RhdGUuYWNjb3VudHMuZmluZChcbiAgICAgICAgICAoYWNjOiBhbnkpID0+IGFjYy5hY2NvdW50X2lkID09PSBhY2NvdW50SWQsXG4gICAgICAgIClcblxuICAgICAgICBpZiAoYWNjb3VudCkge1xuICAgICAgICAgIGN0eC5hdXRoID0ge1xuICAgICAgICAgICAgdHlwZTogXCJzZXNzaW9uXCIsXG4gICAgICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgICAgICAgICBwZXJzb25hbF9vcmdfaWQ6XG4gICAgICAgICAgICAgIGFjY291bnQucGVyc29uYWxfb3JnX2lkIHx8IGBvcmctJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgICAgICAgIGdpdGh1Yl91c2VybmFtZTogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gICAgICAgICAgICB0c2NpcmN1aXRfaGFuZGxlOiBhY2NvdW50LnRzY2lyY3VpdF9oYW5kbGUsXG4gICAgICAgICAgICBzZXNzaW9uX2lkOiBzZXNzaW9uSWQsXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIEpXVCBkZWNvZGUgZmFpbGVkLCBjb250aW51ZSB0byBmYWxsYmFja1xuICAgIH1cbiAgfVxuXG4gIC8vIExlZ2FjeTogT25seSBjaGVjayBkYXRhYmFzZSBhY2NvdW50cyB3aGVuIHdlJ3JlIGluIGEgQnVuIHRlc3QgZW52aXJvbm1lbnRcbiAgaWYgKHByb2Nlc3MuZW52LkJVTl9URVNUID09PSBcInRydWVcIiAmJiBjdHguZGI/LmFjY291bnRzKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKChhY2M6IGFueSkgPT4gYWNjLmFjY291bnRfaWQgPT09IHRva2VuKVxuXG4gICAgaWYgKGFjY291bnQpIHtcbiAgICAgIGN0eC5hdXRoID0ge1xuICAgICAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICAgICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICAgICAgICBwZXJzb25hbF9vcmdfaWQ6IGBvcmctJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgICAgdHNjaXJjdWl0X2hhbmRsZTogYWNjb3VudC50c2NpcmN1aXRfaGFuZGxlLFxuICAgICAgICBzZXNzaW9uX2lkOiBgc2Vzc2lvbi0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuICB9XG5cbiAgY3R4LmF1dGggPSB7XG4gICAgdHlwZTogXCJzZXNzaW9uXCIsXG4gICAgYWNjb3VudF9pZDogXCJhY2NvdW50LTEyMzRcIixcbiAgICBwZXJzb25hbF9vcmdfaWQ6IFwib3JnLTEyMzRcIixcbiAgICBnaXRodWJfdXNlcm5hbWU6IFwidGVzdHVzZXJcIixcbiAgICB0c2NpcmN1aXRfaGFuZGxlOiBcInRlc3R1c2VyXCIsXG4gICAgc2Vzc2lvbl9pZDogXCJzZXNzaW9uLTEyMzRcIixcbiAgfVxuXG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCBrbGV1ciBmcm9tIFwia2xldXJcIlxuXG5leHBvcnQgY29uc3Qgd2l0aEVycm9ySGFuZGxpbmc6IE1pZGRsZXdhcmU8e30sIHt9PiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBuZXh0KHJlcSwgY3R4KVxuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgY29uc29sZS5lcnJvcihrbGV1ci5yZWQoXCJJbnRlcmNlcHRlZCBlcnJvcjpcIiksIGVycm9yKVxuICAgIC8vIElmIGVycm9yIGlzIGEgUmVzcG9uc2UsIHJldHVybiBpdFxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gZXJyb3JcbiAgICB9XG4gICAgcmV0dXJuIChjdHggYXMgYW55KS5qc29uKFxuICAgICAge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgbWVzc2FnZTogZXJyb3I/Lm1lc3NhZ2UsXG4gICAgICAgICAgZXJyb3JfY29kZTogZXJyb3I/LmVycm9yX2NvZGUgPz8gXCJpbnRlcm5hbF9zZXJ2ZXJfZXJyb3JcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7IHN0YXR1czogZXJyb3I/LnN0YXR1cyB8fCA1MDAgfSxcbiAgICApXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQga2xldXIgZnJvbSBcImtsZXVyXCJcblxuLy8gRU5BQkxFIENPTE9SUyBBTFdBWVNcbmtsZXVyLmVuYWJsZWQgPSB0cnVlXG5cbmNvbnN0IGNvbG9yU3RhdHVzID0gKHN0YXR1czogbnVtYmVyKSA9PiB7XG4gIGlmIChzdGF0dXMgPj0gNTAwKSB7XG4gICAgcmV0dXJuIGtsZXVyLnJlZChzdGF0dXMudG9TdHJpbmcoKSlcbiAgfVxuICBpZiAoc3RhdHVzID49IDQwMCkge1xuICAgIHJldHVybiBrbGV1ci55ZWxsb3coc3RhdHVzLnRvU3RyaW5nKCkpXG4gIH1cbiAgcmV0dXJuIGtsZXVyLmdyZWVuKHN0YXR1cy50b1N0cmluZygpKVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlciB7XG4gIGVycm9yOiAoLi4uYXJnczogYW55W10pID0+IHZvaWRcbiAgaW5mbzogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG4gIHdhcm46ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxuICBkZWJ1ZzogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBjb25zdCB3aXRoUmVxdWVzdExvZ2dpbmc6IE1pZGRsZXdhcmU8XG4gIHt9LFxuICB7XG4gICAgbG9nZ2VyOiBMb2dnZXJcbiAgfVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBpZiAoIWN0eC5sb2dnZXIpIHtcbiAgICBjdHgubG9nZ2VyID0ge1xuICAgICAgZXJyb3I6ICguLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5lcnJvciguLi5hcmdzKSxcbiAgICAgIGluZm86ICguLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5sb2coLi4uYXJncyksXG4gICAgICB3YXJuOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUud2FybiguLi5hcmdzKSxcbiAgICAgIGRlYnVnOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUubG9nKC4uLmFyZ3MpLFxuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIGN0eC5sb2dnZXIuaW5mbyhrbGV1ci5ibHVlKGA+ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWApKVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbmV4dChyZXEsIGN0eClcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2VCb2R5ID0gYXdhaXQgcmVzcG9uc2UuY2xvbmUoKS50ZXh0KClcbiAgICAgIGN0eC5sb2dnZXIuaW5mbyhcbiAgICAgICAgYDwgJHtjb2xvclN0YXR1cyhyZXNwb25zZS5zdGF0dXMpfSAke2tsZXVyLmdyYXkocmVzcG9uc2VCb2R5LnNsaWNlKDAsIDQwKS5yZXBsYWNlKC8oXFxyXFxufFxcbnxcXHIpL2dtLCBcIlwiKSl9YCxcbiAgICAgIClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjdHgubG9nZ2VyLmluZm8oYDwgJHtjb2xvclN0YXR1cyhyZXNwb25zZS5zdGF0dXMpfWApXG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZVxuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBjdHgubG9nZ2VyLmluZm8oa2xldXIucmVkKGA8IEVSUk9SICR7ZS50b1N0cmluZygpLnNsaWNlKDAsIDUwKX0uLi5gKSlcbiAgICB0aHJvdyBlXG4gIH1cbn1cbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgYWlSZXZpZXdTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBhaV9yZXZpZXdfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBhaV9yZXZpZXc6IGFpUmV2aWV3U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGFpX3Jldmlld19pZCB9ID0gcmVxLmpzb25Cb2R5XG4gIGNvbnN0IGV4aXN0aW5nID0gY3R4LmRiLmdldEFpUmV2aWV3QnlJZChhaV9yZXZpZXdfaWQpXG4gIGlmICghZXhpc3RpbmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhaV9yZXZpZXdfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFJIHJldmlldyBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICBjb25zdCB1cGRhdGVkID0gY3R4LmRiLnVwZGF0ZUFpUmV2aWV3KGFpX3Jldmlld19pZCwge1xuICAgIGFpX3Jldmlld190ZXh0OiBcIlBsYWNlaG9sZGVyIEFJIFJldmlld1wiLFxuICAgIHN0YXJ0X3Byb2Nlc3NpbmdfYXQ6IGV4aXN0aW5nLnN0YXJ0X3Byb2Nlc3NpbmdfYXQgPz8gbm93LFxuICAgIGZpbmlzaGVkX3Byb2Nlc3NpbmdfYXQ6IG5vdyxcbiAgICBkaXNwbGF5X3N0YXR1czogXCJjb21wbGV0ZWRcIixcbiAgfSkhXG4gIHJldHVybiBjdHguanNvbih7IGFpX3JldmlldzogdXBkYXRlZCB9KVxufSlcbiIsICJpbXBvcnQgeyBkYXRhc2hlZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgY29uc3QgcHJvY2Vzc0FsbERhdGFzaGVldHMgPSAoY3R4OiBhbnkpID0+IHtcbiAgY29uc3QgcHJvY2Vzc2VkID0gW10gYXMgei5pbmZlcjx0eXBlb2YgZGF0YXNoZWV0U2NoZW1hPltdXG4gIGN0eC5kYi5kYXRhc2hlZXRzLmZvckVhY2goKGRzOiBhbnkpID0+IHtcbiAgICBpZiAoIWRzLnBpbl9pbmZvcm1hdGlvbiB8fCAhZHMuZGF0YXNoZWV0X3BkZl91cmxzIHx8ICFkcy5haV9kZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IGN0eC5kYi51cGRhdGVEYXRhc2hlZXQoZHMuZGF0YXNoZWV0X2lkLCB7XG4gICAgICAgIHBpbl9pbmZvcm1hdGlvbjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBpbl9udW1iZXI6IFwiMVwiLFxuICAgICAgICAgICAgbmFtZTogXCJQSU4xXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQbGFjZWhvbGRlciBwaW5cIixcbiAgICAgICAgICAgIGNhcGFiaWxpdGllczogW1wiZGlnaXRhbFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBkYXRhc2hlZXRfcGRmX3VybHM6IFtcImh0dHBzOi8vZXhhbXBsZS5jb20vZGF0YXNoZWV0LnBkZlwiXSxcbiAgICAgICAgYWlfZGVzY3JpcHRpb246IFwiUGxhY2Vob2xkZXIgYWkgZGVzY3JpcHRpb25cIixcbiAgICAgIH0pXG4gICAgICBwcm9jZXNzZWQucHVzaCh1cGRhdGVkISlcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2Vzc2VkLnB1c2goZHMpXG4gICAgfVxuICB9KVxuICByZXR1cm4gcHJvY2Vzc2VkXG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgZGF0YXNoZWV0czogZGF0YXNoZWV0U2NoZW1hLmFycmF5KCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IGRhdGFzaGVldHMgPSBwcm9jZXNzQWxsRGF0YXNoZWV0cyhjdHgpXG4gIHJldHVybiBjdHguanNvbih7IGRhdGFzaGVldHMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNlZWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NlZWRcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvblJlc3BvbnNlOiB6LmFueSgpLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIHJldHVybiBjdHguanNvbihjdHguZGIuZ2V0U3RhdGUoKSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyU3RlcHMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvb3JkZXItc3RlcHNcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc3VjY2Vzczogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIC8vIEdldCBhbGwgb3JkZXJzIHRoYXQgYXJlbid0IGZpbmlzaGVkXG4gIGNvbnN0IG9yZGVycyA9IGN0eC5kYi5vcmRlcnMuZmlsdGVyKChvcmRlcikgPT4gIW9yZGVyLmlzX2ZpbmlzaGVkKVxuICBjb25zdCB1cGRhdGVkT3JkZXJzID0gW11cblxuICBmb3IgKGNvbnN0IG9yZGVyIG9mIG9yZGVycykge1xuICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBjdHguZGIuZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQob3JkZXIub3JkZXJfaWQpXG4gICAgaWYgKCFvcmRlclN0YXRlKSBjb250aW51ZVxuXG4gICAgLy8gRmluZCB0aGUgbmV4dCBzdGVwIHRvIGNvbXBsZXRlXG4gICAgbGV0IG5leHRTdGVwSW5kZXggPSAtMVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3JkZXJTdGVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc3RlcCA9IG9yZGVyU3RlcHNbaV1cbiAgICAgIGlmICghb3JkZXJTdGF0ZVtzdGVwXSkge1xuICAgICAgICBuZXh0U3RlcEluZGV4ID0gaVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGFsbCBzdGVwcyBhcmUgY29tcGxldGVkIG9yIG5vIG5leHQgc3RlcCBmb3VuZFxuICAgIGlmIChuZXh0U3RlcEluZGV4ID09PSAtMSkge1xuICAgICAgdXBkYXRlZE9yZGVycy5wdXNoKHtcbiAgICAgICAgb3JkZXJfaWQ6IG9yZGVyLm9yZGVyX2lkLFxuICAgICAgICBjdXJyZW50X3N0ZXA6IG51bGwsXG4gICAgICB9KVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIG5leHQgc3RlcCB0byB0cnVlXG4gICAgY29uc3QgbmV4dFN0ZXAgPSBvcmRlclN0ZXBzW25leHRTdGVwSW5kZXhdXG4gICAgY29uc3QgdXBkYXRlcyA9IHtcbiAgICAgIFtuZXh0U3RlcF06IHRydWUsXG4gICAgICBjdXJyZW50X3N0ZXA6IG5leHRTdGVwLFxuICAgIH1cblxuICAgIC8vIElmIHRoaXMgaXMgdGhlIGxhc3Qgc3RlcCwgYWxzbyB1cGRhdGUgdGhlIG9yZGVyIHN0YXR1c1xuICAgIGlmIChuZXh0U3RlcEluZGV4ID09PSBvcmRlclN0ZXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgIGN0eC5kYi51cGRhdGVPcmRlcihvcmRlci5vcmRlcl9pZCwge1xuICAgICAgICBpc19maW5pc2hlZDogdHJ1ZSxcbiAgICAgICAgY29tcGxldGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9KVxuICAgIH1cblxuICAgIGN0eC5kYi51cGRhdGVKbGNwY2JPcmRlclN0YXRlKG9yZGVyLm9yZGVyX2lkLCB1cGRhdGVzKVxuXG4gICAgdXBkYXRlZE9yZGVycy5wdXNoKHtcbiAgICAgIG9yZGVyX2lkOiBvcmRlci5vcmRlcl9pZCxcbiAgICAgIGN1cnJlbnRfc3RlcDogbmV4dFN0ZXAsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiZXhwb3J0IGNvbnN0IG9yZGVyU3RlcHMgPSBbXG4gIFwiYXJlX2dlcmJlcnNfZ2VuZXJhdGVkXCIsXG4gIFwiYXJlX2dlcmJlcnNfdXBsb2FkZWRcIixcbiAgXCJpc19nZXJiZXJfYW5hbHl6ZWRcIixcbiAgXCJhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkXCIsXG4gIFwiaXNfcGNiX2FkZGVkX3RvX2NhcnRcIixcbiAgXCJpc19ib21fdXBsb2FkZWRcIixcbiAgXCJpc19wbnBfdXBsb2FkZWRcIixcbiAgXCJpc19ib21fcG5wX2FuYWx5emVkXCIsXG4gIFwiaXNfYm9tX3BhcnNpbmdfY29tcGxldGVcIixcbiAgXCJhcmVfY29tcG9uZW50c19hdmFpbGFibGVcIixcbiAgXCJpc19wYXRjaF9tYXBfZ2VuZXJhdGVkXCIsXG4gIFwiaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWRcIixcbiAgXCJpc19kZm1fcmVzdWx0X2dlbmVyYXRlZFwiLFxuICBcImFyZV9maWxlc19kb3dubG9hZGVkXCIsXG4gIFwiYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkXCIsXG4gIFwiYXJlX2ZpbmFsX2Nvc3RzX2NhbGN1bGF0ZWRcIixcbiAgXCJpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZFwiLFxuICBcImlzX2FkZGVkX3RvX2NhcnRcIixcbl0gYXMgY29uc3RcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJRdW90ZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIG9yZGVyX3F1b3RlX2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfcXVvdGVzOiBvcmRlclF1b3RlU2NoZW1hLmFycmF5KCkub3B0aW9uYWwoKSxcbiAgICBlcnJvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZGVyX3F1b3RlX2lkIH0gPSByZXEuanNvbkJvZHlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyX3F1b3RlczogW1xuICAgICAge1xuICAgICAgICBvcmRlcl9xdW90ZV9pZCxcbiAgICAgICAgYWNjb3VudF9pZDogXCIxMjNcIixcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBcIjEyM1wiLFxuICAgICAgICBpc19jb21wbGV0ZWQ6IHRydWUsXG4gICAgICAgIGlzX3Byb2Nlc3Npbmc6IGZhbHNlLFxuICAgICAgICB2ZW5kb3JfbmFtZTogXCJKTENQQ0JcIixcbiAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgIGhhc19lcnJvcjogZmFsc2UsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IFwiMjAyNS0wNC0yMVwiLFxuICAgICAgICB1cGRhdGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgICAgY29tcGxldGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgICAgcXVvdGVkX2NvbXBvbmVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYW51ZmFjdHVyZXJfcGFydF9udW1iZXI6IFwiMTIzXCIsXG4gICAgICAgICAgICBzdXBwbGllcl9wYXJ0X251bWJlcjogXCIxMjNcIixcbiAgICAgICAgICAgIHF1YW50aXR5OiAxLFxuICAgICAgICAgICAgdW5pdF9wcmljZTogMTAwLFxuICAgICAgICAgICAgdG90YWxfcHJpY2U6IDEwMCxcbiAgICAgICAgICAgIGF2YWlsYWJsZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1hbnVmYWN0dXJlcl9wYXJ0X251bWJlcjogXCIxMjM0XCIsXG4gICAgICAgICAgICBzdXBwbGllcl9wYXJ0X251bWJlcjogXCIxMjM0XCIsXG4gICAgICAgICAgICBxdWFudGl0eTogMSxcbiAgICAgICAgICAgIHVuaXRfcHJpY2U6IDIwMCxcbiAgICAgICAgICAgIHRvdGFsX3ByaWNlOiAyMDAsXG4gICAgICAgICAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYmFyZV9wY2JfY29zdDogMzAwLFxuICAgICAgICBzaGlwcGluZ19vcHRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2FycmllcjogXCJESExcIixcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiRXhwcmVzc1wiLFxuICAgICAgICAgICAgY29zdDogMTAwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2FycmllcjogXCJGZWRFeFwiLFxuICAgICAgICAgICAgc2VydmljZTogXCJFeHByZXNzXCIsXG4gICAgICAgICAgICBjb3N0OiAyMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdG90YWxfY29zdF93aXRob3V0X3NoaXBwaW5nOiAxMDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmRlcl9xdW90ZV9pZCxcbiAgICAgICAgYWNjb3VudF9pZDogXCIxMjNcIixcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBcIjEyM1wiLFxuICAgICAgICBpc19jb21wbGV0ZWQ6IHRydWUsXG4gICAgICAgIGlzX3Byb2Nlc3Npbmc6IGZhbHNlLFxuICAgICAgICB2ZW5kb3JfbmFtZTogXCJES1JlZFwiLFxuICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgaGFzX2Vycm9yOiBmYWxzZSxcbiAgICAgICAgY3JlYXRlZF9hdDogXCIyMDI1LTA0LTIxXCIsXG4gICAgICAgIHVwZGF0ZWRfYXQ6IFwiMjAyNS0wNC0yMVwiLFxuICAgICAgICBjb21wbGV0ZWRfYXQ6IFwiMjAyNS0wNC0yMVwiLFxuICAgICAgICBxdW90ZWRfY29tcG9uZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1hbnVmYWN0dXJlcl9wYXJ0X251bWJlcjogXCIxMjNcIixcbiAgICAgICAgICAgIHN1cHBsaWVyX3BhcnRfbnVtYmVyOiBcIjEyM1wiLFxuICAgICAgICAgICAgcXVhbnRpdHk6IDEsXG4gICAgICAgICAgICB1bml0X3ByaWNlOiAxMDAsXG4gICAgICAgICAgICB0b3RhbF9wcmljZTogMTAwLFxuICAgICAgICAgICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWFudWZhY3R1cmVyX3BhcnRfbnVtYmVyOiBcIjEyMzRcIixcbiAgICAgICAgICAgIHN1cHBsaWVyX3BhcnRfbnVtYmVyOiBcIjEyMzRcIixcbiAgICAgICAgICAgIHF1YW50aXR5OiAxLFxuICAgICAgICAgICAgdW5pdF9wcmljZTogMjAwLFxuICAgICAgICAgICAgdG90YWxfcHJpY2U6IDIwMCxcbiAgICAgICAgICAgIGF2YWlsYWJsZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBiYXJlX3BjYl9jb3N0OiAzMDAsXG4gICAgICAgIHNoaXBwaW5nX29wdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjYXJyaWVyOiBcIkRITFwiLFxuICAgICAgICAgICAgc2VydmljZTogXCJFeHByZXNzXCIsXG4gICAgICAgICAgICBjb3N0OiAxMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjYXJyaWVyOiBcIkZlZEV4XCIsXG4gICAgICAgICAgICBzZXJ2aWNlOiBcIkV4cHJlc3NcIixcbiAgICAgICAgICAgIGNvc3Q6IDIwMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0b3RhbF9jb3N0X3dpdGhvdXRfc2hpcHBpbmc6IDEwMCxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHByb2Nlc3NBbGxEYXRhc2hlZXRzIH0gZnJvbSBcIi4vZGF0YXNoZWV0cy9wcm9jZXNzX2FsbF9kYXRhc2hlZXRzXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3QoeyBvazogei5ib29sZWFuKCkgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgcHJvY2Vzc0FsbERhdGFzaGVldHMoY3R4KVxuICByZXR1cm4gY3R4Lmpzb24oeyBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc2VlZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2VlZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7IG9rOiB6LmJvb2xlYW4oKSB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBzZWVkKGN0eC5kYilcblxuICByZXR1cm4gY3R4Lmpzb24oeyBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWNjb3VudF9iYWxhbmNlOiB6Lm9iamVjdCh7XG4gICAgICBtb250aGx5X2FpX2J1ZGdldF91c2VkX3VzZDogei5udW1iZXIoKSxcbiAgICB9KSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgLy8gRm9yIHRoaXMgZXhhbXBsZSwgd2UnbGwgcmV0dXJuIGEgbW9jayBiYWxhbmNlXG4gIC8vIEluIGEgcmVhbCBpbXBsZW1lbnRhdGlvbiwgeW91IHdvdWxkIGZldGNoIHRoaXMgZnJvbSBhIGRhdGFiYXNlIG9yIGV4dGVybmFsIHNlcnZpY2VcbiAgY29uc3QgbW9ja0JhbGFuY2UgPSB7XG4gICAgbW9udGhseV9haV9idWRnZXRfdXNlZF91c2Q6IDIuNSxcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgYWNjb3VudF9iYWxhbmNlOiBtb2NrQmFsYW5jZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7XG4gIEFjY291bnQsXG4gIGFjY291bnRTY2hlbWEsXG4gIHB1YmxpY0FjY291bnRTY2hlbWEsXG59IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBhY2NvdW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdHNjaXJjdWl0X2hhbmRsZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGdpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWNjb3VudDogcHVibGljQWNjb3VudFNjaGVtYS5leHRlbmQoe1xuICAgICAgZW1haWw6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQgYWNjb3VudDogQWNjb3VudCB8IHVuZGVmaW5lZFxuICBjb25zdCB7IGFjY291bnRfaWQsIGdpdGh1Yl91c2VybmFtZSwgdHNjaXJjdWl0X2hhbmRsZSB9ID0gcmVxLmNvbW1vblBhcmFtc1xuICBpZiAoYWNjb3VudF9pZCkge1xuICAgIGNvbnN0IGZvdW5kQWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKFxuICAgICAgKGFjYzogQWNjb3VudCkgPT4gYWNjLmFjY291bnRfaWQgPT09IGFjY291bnRfaWQsXG4gICAgKVxuICAgIGlmIChmb3VuZEFjY291bnQpIHtcbiAgICAgIGFjY291bnQgPSB7IC4uLmZvdW5kQWNjb3VudCwgZW1haWw6IHVuZGVmaW5lZCB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHRzY2lyY3VpdF9oYW5kbGUpIHtcbiAgICBjb25zdCBmb3VuZEFjY291bnQgPSBjdHguZGIuYWNjb3VudHMuZmluZChcbiAgICAgIChhY2M6IEFjY291bnQpID0+XG4gICAgICAgIGFjYy50c2NpcmN1aXRfaGFuZGxlPy50b0xvd2VyQ2FzZSgpID09PSB0c2NpcmN1aXRfaGFuZGxlLnRvTG93ZXJDYXNlKCksXG4gICAgKVxuICAgIGlmIChmb3VuZEFjY291bnQpIHtcbiAgICAgIGFjY291bnQgPSB7IC4uLmZvdW5kQWNjb3VudCwgZW1haWw6IHVuZGVmaW5lZCB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGdpdGh1Yl91c2VybmFtZSkge1xuICAgIGNvbnN0IGZvdW5kQWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKFxuICAgICAgKGFjYzogQWNjb3VudCkgPT5cbiAgICAgICAgYWNjLmdpdGh1Yl91c2VybmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gZ2l0aHViX3VzZXJuYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgKVxuICAgIGlmIChmb3VuZEFjY291bnQpIHtcbiAgICAgIGFjY291bnQgPSB7IC4uLmZvdW5kQWNjb3VudCwgZW1haWw6IHVuZGVmaW5lZCB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChjdHguYXV0aC5hY2NvdW50X2lkKVxuICB9XG5cbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgYWNjb3VudCB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgYWNjb3VudFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHF1ZXJ5OiB6LnN0cmluZygpLFxuICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVmYXVsdCg1MCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgYWNjb3VudHM6IHouYXJyYXkoYWNjb3VudFNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcXVlcnksIGxpbWl0IH0gPSByZXEuanNvbkJvZHlcbiAgY29uc3QgYWNjb3VudHMgPSBjdHguZGIuc2VhcmNoQWNjb3VudHMocXVlcnksIGxpbWl0KVxuICByZXR1cm4gY3R4Lmpzb24oeyBhY2NvdW50cywgb2s6IHRydWUgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7XG4gIGFjY291bnRTY2hlbWEsXG4gIHRzY2lyY3VpdEhhbmRsZVNjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiLCBcIlBBVENIXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICB0c2NpcmN1aXRfaGFuZGxlOiB0c2NpcmN1aXRIYW5kbGVTY2hlbWEsXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBhY2NvdW50OiBhY2NvdW50U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHRzY2lyY3VpdF9oYW5kbGUgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHJlcXVlc3RlZEhhbmRsZSA9IHRzY2lyY3VpdF9oYW5kbGUudHJpbSgpXG5cbiAgaWYgKCFyZXF1ZXN0ZWRIYW5kbGUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX3RzY2lyY3VpdF9oYW5kbGVcIixcbiAgICAgIG1lc3NhZ2U6IFwidHNjaXJjdWl0X2hhbmRsZSBjYW5ub3QgYmUgZW1wdHlcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG5cbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZXhpc3RpbmdIYW5kbGVMb3dlciA9IGFjY291bnQudHNjaXJjdWl0X2hhbmRsZT8udG9Mb3dlckNhc2UoKVxuICBjb25zdCByZXF1ZXN0ZWRIYW5kbGVMb3dlciA9IHJlcXVlc3RlZEhhbmRsZS50b0xvd2VyQ2FzZSgpXG5cbiAgaWYgKGV4aXN0aW5nSGFuZGxlTG93ZXIgPT09IHJlcXVlc3RlZEhhbmRsZUxvd2VyKSB7XG4gICAgcmV0dXJuIGN0eC5qc29uKHsgYWNjb3VudCB9KVxuICB9XG5cbiAgY29uc3QgZHVwbGljYXRlQWNjb3VudCA9IGN0eC5kYlxuICAgIC5nZXRTdGF0ZSgpXG4gICAgLmFjY291bnRzLmZpbmQoXG4gICAgICAoYSkgPT5cbiAgICAgICAgYS50c2NpcmN1aXRfaGFuZGxlPy50b0xvd2VyQ2FzZSgpID09PSByZXF1ZXN0ZWRIYW5kbGVMb3dlciAmJlxuICAgICAgICBhLmFjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgKVxuXG4gIGlmIChkdXBsaWNhdGVBY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF90c2NpcmN1aXRfaGFuZGxlX2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICBtZXNzYWdlOiBcIkFub3RoZXIgYWNjb3VudCBhbHJlYWR5IHVzZXMgdGhpcyB0c2NpcmN1aXQgaGFuZGxlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRBY2NvdW50ID0gY3R4LmRiLnVwZGF0ZUFjY291bnQoY3R4LmF1dGguYWNjb3VudF9pZCwge1xuICAgIHRzY2lyY3VpdF9oYW5kbGU6IHJlcXVlc3RlZEhhbmRsZSxcbiAgfSlcblxuICBpZiAoIXVwZGF0ZWRBY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG4gIGlmIChhY2NvdW50LnBlcnNvbmFsX29yZ19pZCkge1xuICAgIGNvbnN0IHBlcnNvbmFsT3JnID0gY3R4LmRiXG4gICAgICAuZ2V0U3RhdGUoKVxuICAgICAgLm9yZ2FuaXphdGlvbnMuZmluZCgob3JnKSA9PiBvcmcub3JnX2lkID09PSBhY2NvdW50LnBlcnNvbmFsX29yZ19pZClcbiAgICBpZiAocGVyc29uYWxPcmcgJiYgcGVyc29uYWxPcmcuaXNfcGVyc29uYWxfb3JnKSB7XG4gICAgICBjdHguZGIudXBkYXRlT3JnYW5pemF0aW9uKGFjY291bnQucGVyc29uYWxfb3JnX2lkLCB7XG4gICAgICAgIHRzY2lyY3VpdF9oYW5kbGU6IHJlcXVlc3RlZEhhbmRsZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgYWNjb3VudDogdXBkYXRlZEFjY291bnQgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IGFpUmV2aWV3U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBhaV9yZXZpZXc6IGFpUmV2aWV3U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfcmVsZWFzZV9pZCB9ID0gcmVxLmpzb25Cb2R5ID8/IHt9XG5cbiAgaWYgKHBhY2thZ2VfcmVsZWFzZV9pZCkge1xuICAgIGNvbnN0IHJlbGVhc2UgPSBjdHguZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKHBhY2thZ2VfcmVsZWFzZV9pZClcbiAgICBpZiAoIXJlbGVhc2UpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuICAgIGN0eC5kYi51cGRhdGVQYWNrYWdlUmVsZWFzZSh7XG4gICAgICAuLi5yZWxlYXNlLFxuICAgICAgYWlfcmV2aWV3X3JlcXVlc3RlZDogdHJ1ZSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgYWlfcmV2aWV3ID0gY3R4LmRiLmFkZEFpUmV2aWV3KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICBhaV9yZXZpZXdfdGV4dDogbnVsbCxcbiAgICBzdGFydF9wcm9jZXNzaW5nX2F0OiBudWxsLFxuICAgIGZpbmlzaGVkX3Byb2Nlc3NpbmdfYXQ6IG51bGwsXG4gICAgcHJvY2Vzc2luZ19lcnJvcjogbnVsbCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgZGlzcGxheV9zdGF0dXM6IFwicGVuZGluZ1wiLFxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7IGFpX3JldmlldyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgYWlSZXZpZXdTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIGFpX3Jldmlld19pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFpX3JldmlldzogYWlSZXZpZXdTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgYWlfcmV2aWV3X2lkIH0gPSByZXEucXVlcnlcbiAgY29uc3QgYWlfcmV2aWV3ID0gY3R4LmRiLmdldEFpUmV2aWV3QnlJZChhaV9yZXZpZXdfaWQpXG4gIGlmICghYWlfcmV2aWV3KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWlfcmV2aWV3X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBSSByZXZpZXcgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuICByZXR1cm4gY3R4Lmpzb24oeyBhaV9yZXZpZXcgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IGFpUmV2aWV3U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWlfcmV2aWV3czogei5hcnJheShhaVJldmlld1NjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IGFpX3Jldmlld3MgPSBjdHguZGIubGlzdEFpUmV2aWV3cygpXG4gIHJldHVybiBjdHguanNvbih7IGFpX3Jldmlld3MgfSlcbn0pXG4iLCAiLyoqXG4gKiBGb3J3YXJkIHJlcXVlc3QgdG8gYW50aHJvcGljXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIChyZXE6IFJlcXVlc3QpID0+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChyZXEudXJsKVxuICBjb25zdCBhbnRocm9waWNBcGlLZXkgPSBwcm9jZXNzLmVudi5BTlRIUk9QSUNfQVBJX0tFWVxuXG4gIGlmICghYW50aHJvcGljQXBpS2V5KSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcIkFudGhyb3BpYyBBUEkga2V5IGlzIG5vdCBzZXRcIiwgeyBzdGF0dXM6IDUwMCB9KVxuICB9XG5cbiAgY29uc3QgYW50aHJvcGljVXJsID1cbiAgICBcImh0dHBzOi8vYXBpLmFudGhyb3BpYy5jb21cIiArIHVybC5wYXRobmFtZS5yZXBsYWNlKC9eXFwvYXBpXFwvYWkvLCBcIlwiKVxuXG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhyZXEuaGVhZGVycylcbiAgaGVhZGVycy5zZXQoXCJ4LWFwaS1rZXlcIiwgYCR7YW50aHJvcGljQXBpS2V5fWApXG5cbiAgY29uc29sZS5sb2coXCJzZW5kaW5nIHJlcXVlc3QgdG8gYW50aHJvcGljXCIpXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYW50aHJvcGljVXJsLCB7XG4gICAgbWV0aG9kOiByZXEubWV0aG9kLFxuICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgYm9keTogcmVxLmJvZHksXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGR1cGxleDogXCJoYWxmXCIsXG4gIH0pLnRoZW4oKHIpID0+IHIuanNvbigpKVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpLCB7XG4gICAgc3RhdHVzOiAyMDAsXG4gICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICB9KVxufVxuIiwgImltcG9ydCBhaSBmcm9tIFwiLi9haS9bLi4uYW55cm91dGVdXCJcbmV4cG9ydCBkZWZhdWx0IGFpXG4iLCAiaW1wb3J0IHsgUmVhZGFibGVTdHJlYW0gfSBmcm9tIFwic3RyZWFtL3dlYlwiXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIChyZXE6IFJlcXVlc3QpID0+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChyZXEudXJsKVxuICBjb25zdCBhbnRocm9waWNBcGlLZXkgPSBwcm9jZXNzLmVudi5BTlRIUk9QSUNfQVBJX0tFWVxuXG4gIGlmICghYW50aHJvcGljQXBpS2V5KSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcIkFudGhyb3BpYyBBUEkga2V5IGlzIG5vdCBzZXRcIiwgeyBzdGF0dXM6IDUwMCB9KVxuICB9XG5cbiAgY29uc3QgYW50aHJvcGljVXJsID1cbiAgICBcImh0dHBzOi8vYXBpLmFudGhyb3BpYy5jb21cIiArIHVybC5wYXRobmFtZS5yZXBsYWNlKC9eXFwvYXBpXFwvYWkvLCBcIlwiKVxuXG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhyZXEuaGVhZGVycylcbiAgaGVhZGVycy5zZXQoXCJ4LWFwaS1rZXlcIiwgYCR7YW50aHJvcGljQXBpS2V5fWApXG4gIGhlYWRlcnMuc2V0KFwiQWNjZXB0XCIsIFwidGV4dC9ldmVudC1zdHJlYW1cIilcbiAgaGVhZGVycy5zZXQoXCJDYWNoZS1Db250cm9sXCIsIFwibm8tY2FjaGVcIilcbiAgaGVhZGVycy5zZXQoXCJDb25uZWN0aW9uXCIsIFwia2VlcC1hbGl2ZVwiKVxuXG4gIGNvbnNvbGUubG9nKFwic2VuZGluZyByZXF1ZXN0IHRvIGFudGhyb3BpY1wiKVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGFudGhyb3BpY1VybCwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgIGJvZHk6IHJlcS5ib2R5LFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBkdXBsZXg6IFwiaGFsZlwiLFxuICB9KVxuXG4gIC8vIENoZWNrIGlmIHRoZSByZXNwb25zZSBpcyBzdWNjZXNzZnVsXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFxuICAgICAgYEFudGhyb3BpYyBBUEkgcmV0dXJuZWQgYW4gZXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCxcbiAgICAgIHtcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIFJlYWRhYmxlU3RyZWFtIHRvIHByb2Nlc3MgdGhlIHJlc3BvbnNlXG4gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgYXN5bmMgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keSEuZ2V0UmVhZGVyKClcblxuICAgICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICAgICAgaWYgKGRvbmUpIGJyZWFrXG4gICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICByZWFkZXIucmVsZWFzZUxvY2soKVxuICAgICAgICBjb250cm9sbGVyLmNsb3NlKClcbiAgICAgIH1cbiAgICB9LFxuICB9KVxuXG4gIC8vIFJldHVybiBhIHN0cmVhbWluZyByZXNwb25zZVxuICByZXR1cm4gbmV3IFJlc3BvbnNlKHN0cmVhbSBhcyBhbnksIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcInRleHQvZXZlbnQtc3RyZWFtXCIsXG4gICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJuby1jYWNoZVwiLFxuICAgICAgQ29ubmVjdGlvbjogXCJrZWVwLWFsaXZlXCIsXG4gICAgfSxcbiAgfSlcbn1cbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcHJlZml4OiB6LnN0cmluZygpLFxuICAgIHN1ZmZpeDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHByZWRpY3Rpb246IHouc3RyaW5nKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIHJldHVybiBjdHguanNvbih7IHByZWRpY3Rpb246IFwiey8qIG1vY2sgYXV0b2NvbXBsZXRlIHByZWRpY3Rpb24gKi99XCIgfSlcbn0pXG4iLCAiaW1wb3J0IHsgYnVnUmVwb3J0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3QgcmVxdWVzdFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdGV4dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX2F1dG9fZGVsZXRlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBkZWxldGVfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3VwZXJSZWZpbmUoKGRhdGEsIGN0eCkgPT4ge1xuICAgIGlmIChkYXRhLmlzX2F1dG9fZGVsZXRlZCAmJiAhZGF0YS5kZWxldGVfYXQpIHtcbiAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgIGNvZGU6IHouWm9kSXNzdWVDb2RlLmN1c3RvbSxcbiAgICAgICAgbWVzc2FnZTogXCJkZWxldGVfYXQgaXMgcmVxdWlyZWQgd2hlbiBpc19hdXRvX2RlbGV0ZWQgaXMgdHJ1ZVwiLFxuICAgICAgICBwYXRoOiBbXCJkZWxldGVfYXRcIl0sXG4gICAgICB9KVxuICAgIH1cbiAgfSlcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogcmVxdWVzdFNjaGVtYSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHoubGl0ZXJhbCh0cnVlKSxcbiAgICBidWdfcmVwb3J0OiBidWdSZXBvcnRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgdGV4dCwgaXNfYXV0b19kZWxldGVkID0gZmFsc2UsIGRlbGV0ZV9hdCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgYnVnUmVwb3J0ID0gY3R4LmRiLmFkZEJ1Z1JlcG9ydCh7XG4gICAgcmVwb3J0ZXJfYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICB0ZXh0OiB0ZXh0ID8/IG51bGwsXG4gICAgaXNfYXV0b19kZWxldGVkLFxuICAgIGRlbGV0ZV9hdDogaXNfYXV0b19kZWxldGVkID8gZGVsZXRlX2F0IDogbnVsbCxcbiAgfSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIGJ1Z19yZXBvcnQ6IGJ1Z1JlcG9ydCxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IEpTWmlwIGZyb20gXCJqc3ppcFwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBidWdfcmVwb3J0X2lkOiB6LnN0cmluZygpLnV1aWQoKSxcbiAgfSksXG4gIHJhd1Jlc3BvbnNlOiB0cnVlLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgYnVnX3JlcG9ydF9pZCB9ID0gcmVxLnF1ZXJ5XG5cbiAgY29uc3QgYnVnUmVwb3J0ID0gY3R4LmRiLmdldEJ1Z1JlcG9ydEJ5SWQoYnVnX3JlcG9ydF9pZClcbiAgaWYgKCFidWdSZXBvcnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJidWdfcmVwb3J0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJCdWcgcmVwb3J0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoYnVnUmVwb3J0LnJlcG9ydGVyX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJidWdfcmVwb3J0X2ZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoaXMgYnVnIHJlcG9ydFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBidWdSZXBvcnRGaWxlcyA9IGN0eC5kYi5nZXRCdWdSZXBvcnRGaWxlc0J5QnVnUmVwb3J0SWQoYnVnX3JlcG9ydF9pZClcblxuICBjb25zdCB6aXAgPSBuZXcgSlNaaXAoKVxuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBidWdSZXBvcnRGaWxlcykge1xuICAgIGlmIChmaWxlLmlzX3RleHQpIHtcbiAgICAgIHppcC5maWxlKGZpbGUuZmlsZV9wYXRoLCBmaWxlLmNvbnRlbnRfdGV4dCA/PyBcIlwiLCB7IGJpbmFyeTogZmFsc2UgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYnl0ZXMgPSBmaWxlLmNvbnRlbnRfYnl0ZXMgPz8gbmV3IFVpbnQ4QXJyYXkoKVxuICAgICAgemlwLmZpbGUoZmlsZS5maWxlX3BhdGgsIGJ5dGVzLCB7IGJpbmFyeTogdHJ1ZSB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHppcENvbnRlbnQgPSBhd2FpdCB6aXAuZ2VuZXJhdGVBc3luYyh7IHR5cGU6IFwiYXJyYXlidWZmZXJcIiB9KVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UoemlwQ29udGVudCwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vemlwXCIsXG4gICAgICBcIkNvbnRlbnQtRGlzcG9zaXRpb25cIjogYGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiYnVnLXJlcG9ydC0ke2J1Z19yZXBvcnRfaWR9LnppcFwiYCxcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tIFwibm9kZTpidWZmZXJcIlxuaW1wb3J0IHsgYnVnUmVwb3J0RmlsZVJlc3BvbnNlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aEFuZFZhbGlkYXRlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL3V0aWxzL25vcm1hbGl6ZVByb2plY3RGaWxlUGF0aFwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmNvbnN0IHJlcXVlc3RTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGJ1Z19yZXBvcnRfaWQ6IHouc3RyaW5nKCkudXVpZCgpLFxuICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICBjb250ZW50X21pbWV0eXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29udGVudF9iYXNlNjQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN1cGVyUmVmaW5lKChkYXRhLCBjdHgpID0+IHtcbiAgICBpZiAoZGF0YS5jb250ZW50X3RleHQgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmNvbnRlbnRfYmFzZTY0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgIGNvZGU6IHouWm9kSXNzdWVDb2RlLmN1c3RvbSxcbiAgICAgICAgbWVzc2FnZTogXCJQcm92aWRlIGVpdGhlciBjb250ZW50X3RleHQgb3IgY29udGVudF9iYXNlNjQsIG5vdCBib3RoXCIsXG4gICAgICAgIHBhdGg6IFtcImNvbnRlbnRfdGV4dFwiXSxcbiAgICAgIH0pXG4gICAgfVxuICB9KVxuXG5jb25zdCBpbmZlck1pbWV0eXBlID0gKGZpbGVQYXRoOiBzdHJpbmcsIHByb3ZpZGVkPzogc3RyaW5nKSA9PiB7XG4gIGlmIChwcm92aWRlZCkgcmV0dXJuIHByb3ZpZGVkXG5cbiAgY29uc3QgbG93ZXJQYXRoID0gZmlsZVBhdGgudG9Mb3dlckNhc2UoKVxuICBpZiAobG93ZXJQYXRoLmVuZHNXaXRoKFwiLnRzXCIpIHx8IGxvd2VyUGF0aC5lbmRzV2l0aChcIi50c3hcIikpIHtcbiAgICByZXR1cm4gXCJ0ZXh0L3R5cGVzY3JpcHRcIlxuICB9XG4gIGlmIChsb3dlclBhdGguZW5kc1dpdGgoXCIuanNcIikpIHJldHVybiBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIlxuICBpZiAobG93ZXJQYXRoLmVuZHNXaXRoKFwiLmpzb25cIikpIHJldHVybiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICBpZiAobG93ZXJQYXRoLmVuZHNXaXRoKFwiLm1kXCIpKSByZXR1cm4gXCJ0ZXh0L21hcmtkb3duXCJcbiAgaWYgKGxvd2VyUGF0aC5lbmRzV2l0aChcIi5odG1sXCIpKSByZXR1cm4gXCJ0ZXh0L2h0bWxcIlxuICBpZiAobG93ZXJQYXRoLmVuZHNXaXRoKFwiLmNzc1wiKSkgcmV0dXJuIFwidGV4dC9jc3NcIlxuICBpZiAobG93ZXJQYXRoLmVuZHNXaXRoKFwiLnR4dFwiKSkgcmV0dXJuIFwidGV4dC9wbGFpblwiXG4gIHJldHVybiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHJlcXVlc3RTY2hlbWEsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmxpdGVyYWwodHJ1ZSksXG4gICAgYnVnX3JlcG9ydF9maWxlOiBidWdSZXBvcnRGaWxlUmVzcG9uc2VTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBidWdfcmVwb3J0X2lkLFxuICAgIGZpbGVfcGF0aCxcbiAgICBjb250ZW50X21pbWV0eXBlLFxuICAgIGNvbnRlbnRfdGV4dCxcbiAgICBjb250ZW50X2Jhc2U2NCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IGJ1Z1JlcG9ydCA9IGN0eC5kYi5nZXRCdWdSZXBvcnRCeUlkKGJ1Z19yZXBvcnRfaWQpXG4gIGlmICghYnVnUmVwb3J0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYnVnX3JlcG9ydF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQnVnIHJlcG9ydCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKGJ1Z1JlcG9ydC5yZXBvcnRlcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYnVnX3JlcG9ydF9mb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byBtb2RpZnkgdGhpcyBidWcgcmVwb3J0XCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCBub3JtYWxpemVkUGF0aDogc3RyaW5nXG4gIHRyeSB7XG4gICAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGhBbmRWYWxpZGF0ZShmaWxlX3BhdGgpXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9maWxlX3BhdGhcIixcbiAgICAgIG1lc3NhZ2U6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJJbnZhbGlkIGZpbGUgcGF0aFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBtaW1lVHlwZSA9IGluZmVyTWltZXR5cGUobm9ybWFsaXplZFBhdGgsIGNvbnRlbnRfbWltZXR5cGUpXG4gIGNvbnN0IGhhc0Jhc2U2NCA9IGNvbnRlbnRfYmFzZTY0ICE9PSB1bmRlZmluZWRcbiAgY29uc3QgaGFzVGV4dCA9IGNvbnRlbnRfdGV4dCAhPT0gdW5kZWZpbmVkXG4gIGNvbnN0IGlzVGV4dFVwbG9hZCA9IGhhc1RleHQgfHwgIWhhc0Jhc2U2NFxuICBjb25zdCBzdG9yZWRUZXh0ID0gaXNUZXh0VXBsb2FkID8gKGNvbnRlbnRfdGV4dCA/PyBcIlwiKSA6IG51bGxcbiAgY29uc3Qgc3RvcmVkQnl0ZXMgPVxuICAgIGlzVGV4dFVwbG9hZCB8fCAhaGFzQmFzZTY0XG4gICAgICA/IG51bGxcbiAgICAgIDogQnVmZmVyLmZyb20oY29udGVudF9iYXNlNjQgPz8gXCJcIiwgXCJiYXNlNjRcIilcblxuICBjb25zdCBidWdSZXBvcnRGaWxlID0gY3R4LmRiLmFkZEJ1Z1JlcG9ydEZpbGUoe1xuICAgIGJ1Z19yZXBvcnRfaWQsXG4gICAgZmlsZV9wYXRoOiBub3JtYWxpemVkUGF0aCxcbiAgICBjb250ZW50X21pbWV0eXBlOiBtaW1lVHlwZSxcbiAgICBpc190ZXh0OiBpc1RleHRVcGxvYWQsXG4gICAgY29udGVudF90ZXh0OiBzdG9yZWRUZXh0LFxuICAgIGNvbnRlbnRfYnl0ZXM6IHN0b3JlZEJ5dGVzLFxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgYnVnX3JlcG9ydF9maWxlOiB7XG4gICAgICBidWdfcmVwb3J0X2ZpbGVfaWQ6IGJ1Z1JlcG9ydEZpbGUuYnVnX3JlcG9ydF9maWxlX2lkLFxuICAgICAgYnVnX3JlcG9ydF9pZDogYnVnUmVwb3J0RmlsZS5idWdfcmVwb3J0X2lkLFxuICAgICAgZmlsZV9wYXRoOiBidWdSZXBvcnRGaWxlLmZpbGVfcGF0aCxcbiAgICAgIGNvbnRlbnRfbWltZXR5cGU6IGJ1Z1JlcG9ydEZpbGUuY29udGVudF9taW1ldHlwZSxcbiAgICAgIGlzX3RleHQ6IGJ1Z1JlcG9ydEZpbGUuaXNfdGV4dCxcbiAgICAgIGNyZWF0ZWRfYXQ6IGJ1Z1JlcG9ydEZpbGUuY3JlYXRlZF9hdCxcbiAgICB9LFxuICB9KVxufSlcbiIsICJjb25zdCBSRVNUUklDVEVEX0RJUlMgPSBbXCIvbm9kZV9tb2R1bGVzL1wiLCBcIi9kaXN0L1wiLCBcIi8uZ2l0L1wiXVxuXG4vKipcbiAqIEEgbm9ybWFsaXplZCBwcm9qZWN0IHBhdGggYWx3YXlzIHN0YXJ0cyB3aXRoIFwiLi9cIiBhbmQgbmV2ZXIgZW5kcyB3aXRoIGEgc2xhc2guXG4gKiBJdCBoYXMgbm8gYmFja3dhcmRzIHNsYXNoZXMgYW5kIG5vIGRvdWJsZSBzbGFzaGVzLiBJdCBkb2VzIG5vdCBnbyB0byBwYXJlbnRcbiAqIGRpcmVjdG9yaWVzLiBJdCBpcyBub3QgYSBkaXJlY3RvcnkgKG11c3QgaGF2ZSBhIGZpbGUgZXh0ZW5zaW9uKVxuICpcbiAqIEdPT0Q6XG4gKiAgLSBzcmMvaW5kZXgudHNcbiAqICAtIFJFQURNRS5tZFxuICpcbiAqIEJBRDpcbiAqIC0gLi9SRUFETUUubWRcbiAqIC0gLi9zcmMvaW5kZXgudHNcbiAqIC0gc3JjXFxpbmRleC50c1xuICogLSAuLi9SRUFETUUubWRcbiAqIC0gLi9zcmMvXG4gKiAtIC4vc3JjXG4gKlxuICogQWRkaXRpb25hbGx5LCB0aHJvdyBvbiBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBuZXZlciBiZSBpbmNsdWRlZCwgZS5nLlxuICogLSBub2RlX21vZHVsZXNcbiAqIC0gZGlzdFxuICogLSAuZ2l0XG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGhBbmRWYWxpZGF0ZSA9IChyYXdQYXRoOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocmF3UGF0aClcblxuICBpZiAobm9ybWFsaXplZFBhdGguaW5jbHVkZXMoXCIuLi9cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkludmFsaWQgcHJvamVjdCBmaWxlIHBhdGguIFBhcmVudCBkaXJlY3RvcmllcyBhcmUgbm90IGFsbG93ZWQuXCIsXG4gICAgKVxuICB9XG5cbiAgaWYgKFJFU1RSSUNURURfRElSUy5zb21lKChkaXIpID0+IG5vcm1hbGl6ZWRQYXRoLmluY2x1ZGVzKGRpcikpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgcHJvamVjdCBmaWxlIHBhdGguIFJlc3RyaWN0ZWQgZGlyZWN0b3JpZXMgKCR7UkVTVFJJQ1RFRF9ESVJTLm1hcChcbiAgICAgICAgKHJkKSA9PiByZC5zbGljZSgxLCAtMSksXG4gICAgICApLmpvaW4oXCIsIFwiKX0pIGFyZSBub3QgYWxsb3dlZC5gLFxuICAgIClcbiAgfVxuXG4gIGlmICghbm9ybWFsaXplZFBhdGguaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgcHJvamVjdCBmaWxlIHBhdGguIE11c3QgaGF2ZSBhIGZpbGUgZXh0ZW5zaW9uLiBHaXZlbiBcIiR7cmF3UGF0aH1cImAsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoXG59XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGggPSAocmF3UGF0aDogc3RyaW5nKSA9PiB7XG4gIGxldCBub3JtYWxpemVkUGF0aCA9IHJhd1BhdGgudHJpbSgpIC8vIFJlbW92ZSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2VcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9cXC8rL2csIFwiL1wiKSAvLyBSZXBsYWNlIG11bHRpcGxlIGNvbnNlY3V0aXZlIHNsYXNoZXMgd2l0aCBhIHNpbmdsZSBzbGFzaFxuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL15cXC5cXC8vLCBcIlwiKSAvLyBSZW1vdmUgbGVhZGluZyBcIi4vXCJcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9cXC8kLywgXCJcIikgLy8gUmVtb3ZlIHRyYWlsaW5nIHNsYXNoXG4gIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZSgvXFxcXC9nLCBcIi9cIikgLy8gUmVwbGFjZSBiYWNrc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlc1xuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL15cXC8vLCBcIlwiKSAvLyBSZW1vdmUgbGVhZGluZyBcIi9cIlxuXG4gIHJldHVybiBub3JtYWxpemVkUGF0aFxufVxuIiwgImltcG9ydCB7IGRhdGFzaGVldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBjaGlwX25hbWU6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBkYXRhc2hlZXQ6IGRhdGFzaGVldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBjaGlwX25hbWUgfSA9IHJlcS5qc29uQm9keVxuICBjb25zdCBkYXRhc2hlZXQgPSBjdHguZGIuYWRkRGF0YXNoZWV0KHsgY2hpcF9uYW1lIH0pXG4gIHJldHVybiBjdHguanNvbih7IGRhdGFzaGVldCB9KVxufSlcbiIsICJpbXBvcnQgeyBkYXRhc2hlZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBkYXRhc2hlZXRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNoaXBfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLnJlZmluZSgodmFsKSA9PiB2YWwuZGF0YXNoZWV0X2lkIHx8IHZhbC5jaGlwX25hbWUsIHtcbiAgICAgIG1lc3NhZ2U6IFwiZGF0YXNoZWV0X2lkIG9yIGNoaXBfbmFtZSByZXF1aXJlZFwiLFxuICAgIH0pLFxuICBqc29uQm9keTogei5hbnkoKS5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBkYXRhc2hlZXQ6IGRhdGFzaGVldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBkYXRhc2hlZXRfaWQsIGNoaXBfbmFtZSB9ID0gcmVxLnF1ZXJ5XG4gIGxldCBkYXRhc2hlZXRcbiAgaWYgKGRhdGFzaGVldF9pZCkge1xuICAgIGRhdGFzaGVldCA9IGN0eC5kYi5nZXREYXRhc2hlZXRCeUlkKGRhdGFzaGVldF9pZClcbiAgfSBlbHNlIGlmIChjaGlwX25hbWUpIHtcbiAgICBkYXRhc2hlZXQgPSBjdHguZGIuZ2V0RGF0YXNoZWV0QnlDaGlwTmFtZShjaGlwX25hbWUpXG4gIH1cbiAgaWYgKCFkYXRhc2hlZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJkYXRhc2hlZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkRhdGFzaGVldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG4gIHJldHVybiBjdHguanNvbih7IGRhdGFzaGVldCB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIGNoaXBfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3BvcHVsYXI6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBkYXRhc2hlZXRzOiB6LmFycmF5KFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBkYXRhc2hlZXRfaWQ6IHouc3RyaW5nKCkudXVpZCgpLFxuICAgICAgICBjaGlwX25hbWU6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGNoaXBfbmFtZSwgaXNfcG9wdWxhciB9ID0gcmVxLmNvbW1vblBhcmFtc1xuICBjb25zdCBkYXRhc2hlZXRzID0gY3R4LmRiXG4gICAgLmxpc3REYXRhc2hlZXRzKHsgY2hpcF9uYW1lLCBpc19wb3B1bGFyIH0pXG4gICAgLm1hcCgoZHMpID0+ICh7XG4gICAgICBkYXRhc2hlZXRfaWQ6IGRzLmRhdGFzaGVldF9pZCxcbiAgICAgIGNoaXBfbmFtZTogZHMuY2hpcF9uYW1lLFxuICAgIH0pKVxuXG4gIHJldHVybiBjdHguanNvbih7IGRhdGFzaGVldHMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG5cbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcIkFjY291bnQgbm90IGZvdW5kXCIsIHsgc3RhdHVzOiA0MDEgfSlcbiAgfVxuXG4gIC8vIEdldCByZXR1cm5fdG9fcGFnZSBmcm9tIHF1ZXJ5IHBhcmFtc1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpXG4gIGNvbnN0IHJldHVyblRvUGFnZSA9IHVybC5zZWFyY2hQYXJhbXMuZ2V0KFwicmV0dXJuX3RvX3BhZ2VcIikgfHwgXCIvXCJcblxuICAvLyBDaGVjayBpZiB1c2VyIGFscmVhZHkgaGFzIGFuIGFjdGl2ZSBHaXRIdWIgaW5zdGFsbGF0aW9uXG4gIGNvbnN0IGV4aXN0aW5nSW5zdGFsbGF0aW9uID0gY3R4LmRiLmdpdGh1Ykluc3RhbGxhdGlvbnMuZmluZChcbiAgICAoaW5zdGFsbGF0aW9uKSA9PlxuICAgICAgaW5zdGFsbGF0aW9uLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgaW5zdGFsbGF0aW9uLmlzX2FjdGl2ZSxcbiAgKVxuXG4gIGlmIChleGlzdGluZ0luc3RhbGxhdGlvbikge1xuICAgIC8vIElmIGluc3RhbGxhdGlvbiBhbHJlYWR5IGV4aXN0cywgcmVkaXJlY3QgYmFja1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXCJcIiwge1xuICAgICAgc3RhdHVzOiAzMDIsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIExvY2F0aW9uOiByZXR1cm5Ub1BhZ2UsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICAvLyBDcmVhdGUgYSBuZXcgR2l0SHViIGluc3RhbGxhdGlvbiAoc2ltdWxhdGluZyB0aGUgdXNlciBjb21wbGV0aW5nIHRoZSBHaXRIdWIgQXBwIGluc3RhbGxhdGlvbilcbiAgY29uc3QgZ2l0aHViSW5zdGFsbGF0aW9uSWQgPSBgZmFrZV9naF9pbnN0YWxsYXRpb25fJHtEYXRlLm5vdygpfWBcbiAgY29uc3QgbW9ja0luc3RhbGxhdGlvbklkID0gYCR7RGF0ZS5ub3coKX1gIC8vIE1vY2sgR2l0SHViIEFwcCBpbnN0YWxsYXRpb24gSURcblxuICBjb25zdCBuZXdJbnN0YWxsYXRpb24gPSB7XG4gICAgZ2l0aHViX2luc3RhbGxhdGlvbl9pZDogZ2l0aHViSW5zdGFsbGF0aW9uSWQsXG4gICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBpbnN0YWxsYXRpb25faWQ6IG1vY2tJbnN0YWxsYXRpb25JZCxcbiAgICBnaXRodWJfdXNlcm5hbWU6IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfYWN0aXZlOiB0cnVlLFxuICAgIGFjY2Vzc190b2tlbjogYGdoc19tb2NrX3Rva2VuXyR7RGF0ZS5ub3coKX1gLCAvLyBNb2NrIGFjY2VzcyB0b2tlblxuICAgIGFjY2Vzc190b2tlbl9leHBpcmVzX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpICsgMzYwMDAwMCkudG9JU09TdHJpbmcoKSwgLy8gMSBob3VyIGZyb20gbm93XG4gIH1cblxuICBjdHguZGIuZ2l0aHViSW5zdGFsbGF0aW9ucy5wdXNoKG5ld0luc3RhbGxhdGlvbilcblxuICAvLyBSZXR1cm4gSFRNTCBwYWdlIHRoYXQgc2hvd3MgaW5zdGFsbGF0aW9uIHN1Y2Nlc3MgYW5kIHJlZGlyZWN0cyBiYWNrXG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgYFxuICAgIDxodG1sPlxuICAgICAgPGhlYWQ+XG4gICAgICAgIDx0aXRsZT5HaXRIdWIgSW5zdGFsbGF0aW9uIENvbXBsZXRlPC90aXRsZT5cbiAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj1cInJlZnJlc2hcIiBjb250ZW50PVwiMzt1cmw9JHtyZXR1cm5Ub1BhZ2V9XCI+XG4gICAgICA8L2hlYWQ+XG4gICAgICA8Ym9keSBzdHlsZT1cImZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsgcGFkZGluZzogNDBweDsgdGV4dC1hbGlnbjogY2VudGVyO1wiPlxuICAgICAgICA8aDE+XHUyNzA1IEdpdEh1YiBJbnN0YWxsYXRpb24gQ29tcGxldGUhPC9oMT5cbiAgICAgICAgPHA+WW91ciBHaXRIdWIgYWNjb3VudCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29ubmVjdGVkIHRvIHRzY2lyY3VpdC48L3A+XG4gICAgICAgIDxwPllvdSBjYW4gbm93IGFjY2VzcyB5b3VyIHJlcG9zaXRvcmllcyBpbiB0aGUgcGFja2FnZSBzZXR0aW5ncy48L3A+XG4gICAgICAgIDxwPlJlZGlyZWN0aW5nIHlvdSBiYWNrIGluIDMgc2Vjb25kcy4uLjwvcD5cbiAgICAgICAgPGEgaHJlZj1cIiR7cmV0dXJuVG9QYWdlfVwiIHN0eWxlPVwiY29sb3I6ICMwMDY2Y2M7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC13ZWlnaHQ6IGJvbGQ7XCI+Q2xpY2sgaGVyZSBpZiB5b3UncmUgbm90IHJlZGlyZWN0ZWQgYXV0b21hdGljYWxseTwvYT5cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gICAgYCxcbiAgICB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIsXG4gICAgICB9LFxuICAgIH0sXG4gIClcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHJlcG9zOiB6LmFycmF5KFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLFxuICAgICAgICBmdWxsX25hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIHByaXZhdGU6IHouYm9vbGVhbigpLFxuICAgICAgICBvd25lcjogei5vYmplY3Qoe1xuICAgICAgICAgIGxvZ2luOiB6LnN0cmluZygpLFxuICAgICAgICB9KSxcbiAgICAgICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgICAgZGVmYXVsdF9icmFuY2g6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICB9KSxcbn0pKGFzeW5jIChfcmVxLCBjdHgpID0+IHtcbiAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG5cbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDEsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgR2l0SHViIGFjY291bnQgY29ubmVjdGVkXG4gIGlmICghYWNjb3VudC5naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJnaXRodWJfbm90X2Nvbm5lY3RlZFwiLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgXCJHaXRIdWIgYWNjb3VudCBub3QgY29ubmVjdGVkLiBQbGVhc2UgY29ubmVjdCB5b3VyIEdpdEh1YiBhY2NvdW50IGZpcnN0LlwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyIGhhcyBhIEdpdEh1YiBpbnN0YWxsYXRpb25cbiAgY29uc3QgZ2l0aHViSW5zdGFsbGF0aW9uID0gY3R4LmRiLmdpdGh1Ykluc3RhbGxhdGlvbnMuZmluZChcbiAgICAoaW5zdGFsbGF0aW9uKSA9PlxuICAgICAgaW5zdGFsbGF0aW9uLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgaW5zdGFsbGF0aW9uLmlzX2FjdGl2ZSxcbiAgKVxuXG4gIGlmICghZ2l0aHViSW5zdGFsbGF0aW9uKSB7XG4gICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IGlmIG5vIEdpdEh1YiBpbnN0YWxsYXRpb24gZm91bmRcbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgcmVwb3M6IFtdLFxuICAgIH0pXG4gIH1cblxuICAvLyBNb2NrIHJlcG9zaXRvcmllcyBmb3IgZGVtb25zdHJhdGlvblxuICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgZmV0Y2ggZnJvbSBHaXRIdWIgQVBJIHVzaW5nIHRoZSBpbnN0YWxsYXRpb24gYWNjZXNzIHRva2VuXG4gIGNvbnN0IG1vY2tSZXBvcyA9IFtcbiAgICB7XG4gICAgICB1bnNjb3BlZF9uYW1lOiBcIm15LWVsZWN0cm9uaWNzLXByb2plY3RcIixcbiAgICAgIGZ1bGxfbmFtZTogYCR7YWNjb3VudC5naXRodWJfdXNlcm5hbWV9L215LWVsZWN0cm9uaWNzLXByb2plY3RgLFxuICAgICAgb3duZXI6IHtcbiAgICAgICAgbG9naW46IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFyZHVpbm8tYmFzZWQgc2Vuc29yIG1vbml0b3Jpbmcgc3lzdGVtXCIsXG4gICAgICBwcml2YXRlOiBmYWxzZSxcbiAgICAgIGRlZmF1bHRfYnJhbmNoOiBcIm1haW5cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIHVuc2NvcGVkX25hbWU6IFwicGNiLWRlc2lnbnNcIixcbiAgICAgIGZ1bGxfbmFtZTogYCR7YWNjb3VudC5naXRodWJfdXNlcm5hbWV9L3BjYi1kZXNpZ25zYCxcbiAgICAgIG93bmVyOiB7XG4gICAgICAgIGxvZ2luOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogXCJDb2xsZWN0aW9uIG9mIFBDQiBkZXNpZ25zIGZvciB2YXJpb3VzIHByb2plY3RzXCIsXG4gICAgICBwcml2YXRlOiB0cnVlLFxuICAgICAgZGVmYXVsdF9icmFuY2g6IFwibWFpblwiLFxuICAgIH0sXG4gICAge1xuICAgICAgdW5zY29wZWRfbmFtZTogXCJ0c2NpcmN1aXQtZXhhbXBsZXNcIixcbiAgICAgIGZ1bGxfbmFtZTogYCR7YWNjb3VudC5naXRodWJfdXNlcm5hbWV9L3RzY2lyY3VpdC1leGFtcGxlc2AsXG4gICAgICBvd25lcjoge1xuICAgICAgICBsb2dpbjogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IFwiRXhhbXBsZXMgYW5kIHR1dG9yaWFscyBmb3IgdHNjaXJjdWl0XCIsXG4gICAgICBwcml2YXRlOiBmYWxzZSxcbiAgICAgIGRlZmF1bHRfYnJhbmNoOiBcIm1haW5cIixcbiAgICB9LFxuICBdXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICByZXBvczogbW9ja1JlcG9zLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHN1Y2Nlc3M6IHouYm9vbGVhbigpLFxuICAgIG1lc3NhZ2U6IHouc3RyaW5nKCksXG4gICAgcmVwb3NfcmVmcmVzaGVkOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChjdHguYXV0aC5hY2NvdW50X2lkKVxuXG4gIGlmICghYWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAxLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIEdpdEh1YiBpbnN0YWxsYXRpb25cbiAgY29uc3QgZ2l0aHViSW5zdGFsbGF0aW9uID0gY3R4LmRiLmdpdGh1Ykluc3RhbGxhdGlvbnMuZmluZChcbiAgICAoaW5zdGFsbGF0aW9uKSA9PlxuICAgICAgaW5zdGFsbGF0aW9uLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgaW5zdGFsbGF0aW9uLmlzX2FjdGl2ZSxcbiAgKVxuXG4gIGlmICghZ2l0aHViSW5zdGFsbGF0aW9uKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZ2l0aHViX25vdF9jb25uZWN0ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiR2l0SHViIGFjY291bnQgbm90IGNvbm5lY3RlZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgcmVmcmVzaCByZXBvcyBmcm9tIEdpdEh1YiBBUElcbiAgLy8gRm9yIGZha2UgQVBJLCBzaW11bGF0ZSByZWZyZXNoaW5nIGJ5IHVwZGF0aW5nIHRoZSBpbnN0YWxsYXRpb24gdGltZXN0YW1wXG4gIGdpdGh1Ykluc3RhbGxhdGlvbi51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIG1lc3NhZ2U6IFwiR2l0SHViIHJlcG9zaXRvcmllcyByZWZyZXNoZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gICAgcmVwb3NfcmVmcmVzaGVkOiAzLCAvLyBNb2NrIG51bWJlclxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHsgb2s6IHouYm9vbGVhbigpIH0pLFxufSkoYXN5bmMgKHJlcTogYW55LCBjdHg6IGFueSkgPT4ge1xuICByZXR1cm4gY3R4Lmpzb24oeyBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IG1zIGZyb20gXCJtc1wiXG5pbXBvcnQgeyBTaWduSldUIH0gZnJvbSBcImpvc2VcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzZXNzaW9uOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uX2lkOiB6LnN0cmluZygpLFxuICAgICAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgICAgIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG4gICAgICBpc19jbGlfc2Vzc2lvbjogei5ib29sZWFuKCksXG4gICAgICB0b2tlbjogei5zdHJpbmcoKSxcbiAgICB9KSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IGFjY291bnRcbiAgaWYgKFwiYWNjb3VudF9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChyZXEuanNvbkJvZHkuYWNjb3VudF9pZClcbiAgfSBlbHNlIHtcbiAgICBhY2NvdW50ID0gY3R4LmRiLmdldEFjY291bnQocmVxLmpzb25Cb2R5LmdpdGh1Yl91c2VybmFtZSlcbiAgfVxuXG4gIGlmICghYWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG5ld19zZXNzaW9uID0gY3R4LmRiLmNyZWF0ZVNlc3Npb24oe1xuICAgIGV4cGlyZXNfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgKyBtcyhcIjYwIGRheVwiKSkudG9JU09TdHJpbmcoKSxcbiAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgaXNfY2xpX3Nlc3Npb246IGZhbHNlLFxuICB9KVxuXG4gIGNvbnN0IHRva2VuID0gYXdhaXQgbmV3IFNpZ25KV1Qoe1xuICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICBzZXNzaW9uX2lkOiBuZXdfc2Vzc2lvbi5zZXNzaW9uX2lkLFxuICAgIGdpdGh1Yl91c2VybmFtZTogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gIH0pXG4gICAgLnNldFByb3RlY3RlZEhlYWRlcih7IGFsZzogXCJIUzI1NlwiIH0pXG4gICAgLnNldEV4cGlyYXRpb25UaW1lKG5ldyBEYXRlKERhdGUubm93KCkgKyBtcyhcIjYwIGRheVwiKSkudG9JU09TdHJpbmcoKSlcbiAgICAuc2lnbihuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUocHJvY2Vzcy5lbnYuSldUX1NFQ1JFVCB8fCBcIlwiKSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHNlc3Npb246IHtcbiAgICAgIC4uLm5ld19zZXNzaW9uLFxuICAgICAgdG9rZW4sXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyRmlsZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX2ZpbGU6IG9yZGVyRmlsZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmRlcl9maWxlX2lkIH0gPSByZXEucXVlcnlcblxuICBjb25zdCBvcmRlckZpbGUgPSBjdHguZGIuZ2V0T3JkZXJGaWxlQnlJZChvcmRlcl9maWxlX2lkKVxuICBpZiAoIW9yZGVyRmlsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZGVyX2ZpbGVfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfZmlsZTogb3JkZXJGaWxlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJGaWxlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfaWQ6IHouc3RyaW5nKCksXG4gICAgY29udGVudF9iYXNlNjQ6IHouc3RyaW5nKCksXG4gICAgaXNfZ2VyYmVyc196aXA6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgZm9yX3Byb3ZpZGVyOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9maWxlOiBvcmRlckZpbGVTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JkZXJfaWQsIGNvbnRlbnRfYmFzZTY0LCBpc19nZXJiZXJzX3ppcCwgZm9yX3Byb3ZpZGVyIH0gPVxuICAgIHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IG9yZGVyID0gY3R4LmRiLmdldE9yZGVyQnlJZChvcmRlcl9pZClcbiAgaWYgKCFvcmRlcikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZGVyX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmRlciBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbmV3T3JkZXJGaWxlID0ge1xuICAgIG9yZGVyX2lkLFxuICAgIGlzX2dlcmJlcnNfemlwOiBpc19nZXJiZXJzX3ppcCB8fCBmYWxzZSxcbiAgICBjb250ZW50X3R5cGU6IFwiYmFzZTY0XCIsXG4gICAgZm9yX3Byb3ZpZGVyOiBmb3JfcHJvdmlkZXIgfHwgbnVsbCxcbiAgICB1cGxvYWRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGNvbnRlbnRfdGV4dDogQnVmZmVyLmZyb20oY29udGVudF9iYXNlNjQsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKFwidXRmLThcIiksXG4gICAgY29udGVudF9ieXRlczogVWludDhBcnJheS5mcm9tKGF0b2IoY29udGVudF9iYXNlNjQpLCAoYykgPT5cbiAgICAgIGMuY2hhckNvZGVBdCgwKSxcbiAgICApLFxuICB9XG5cbiAgY29uc3Qgb3JkZXJGaWxlID0gY3R4LmRiLmFkZE9yZGVyRmlsZShuZXdPcmRlckZpbGUpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9maWxlOiBvcmRlckZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZV9pZHM6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkIH0gPSByZXEuanNvbkJvZHlcbiAgY29uc3QgdmVuZG9yTmFtZXMgPSBbXCJKTENQQ0JcIiwgXCJNYWNyb0ZhYlwiXVxuXG4gIGxldCBvcmRlclF1b3RlSWRzID0gW11cbiAgZm9yIChjb25zdCB2ZW5kb3JOYW1lIG9mIHZlbmRvck5hbWVzKSB7XG4gICAgY29uc3Qgb3JkZXJRdW90ZUlkID0gY3R4LmRiLmFkZE9yZGVyUXVvdGUoe1xuICAgICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIHZlbmRvcl9uYW1lOiB2ZW5kb3JOYW1lLFxuICAgIH0pXG4gICAgb3JkZXJRdW90ZUlkcy5wdXNoKG9yZGVyUXVvdGVJZClcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfcXVvdGVfaWRzOiBvcmRlclF1b3RlSWRzLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICAgIHZlbmRvcl9uYW1lOiB6LmxpdGVyYWwoXCJqbGNwY2JcIiksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGVycm9yOiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgZXJyb3JfY29kZTogei5zdHJpbmcoKSxcbiAgICAgICAgbWVzc2FnZTogei5zdHJpbmcoKSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQsIHZlbmRvcl9uYW1lIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBjaGVjayBwYWNrYWdlIHJlbGVhc2UgZXhpc3RzXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChwYWNrYWdlX3JlbGVhc2VfaWQpXG4gIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4Lmpzb24oXG4gICAgICB7XG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgeyBzdGF0dXM6IDQwNCB9LFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlRmlsZXMgPVxuICAgIGN0eC5kYi5nZXRQYWNrYWdlRmlsZXNCeVJlbGVhc2VJZChwYWNrYWdlX3JlbGVhc2VfaWQpXG4gIGlmIChwYWNrYWdlUmVsZWFzZUZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjdHguanNvbihcbiAgICAgIHtcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9maWxlc19ub3RfZm91bmRcIixcbiAgICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBmaWxlcyBub3QgZm91bmRcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7IHN0YXR1czogNDA0IH0sXG4gICAgKVxuICB9XG5cbiAgY29uc3Qgb3JkZXJRdW90ZUlkID0gY3R4LmRiLmFkZE9yZGVyUXVvdGUoe1xuICAgIGFjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIHZlbmRvcl9uYW1lLFxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfcXVvdGVfaWQ6IG9yZGVyUXVvdGVJZCxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyUXVvdGVTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfcXVvdGVfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZTogb3JkZXJRdW90ZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmRlcl9xdW90ZV9pZCB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIGNvbnN0IG9yZGVyUXVvdGUgPSBjdHguZGIuZ2V0T3JkZXJRdW90ZUJ5SWQob3JkZXJfcXVvdGVfaWQpXG5cbiAgaWYgKCFvcmRlclF1b3RlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfcXVvdGVfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIHF1b3RlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyX3F1b3RlOiBvcmRlclF1b3RlLFxuICB9KVxufSlcbiIsICJpbXBvcnQge1xuICBKbGNwY2JPcmRlclN0YXRlLFxuICB0eXBlIE9yZGVyLFxuICBvcmRlclNjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLnV1aWQoKS5vcHRpb25hbCgpLFxuICAgICAgY2lyY3VpdF9qc29uOiB6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKGRhdGEpID0+IGRhdGEucGFja2FnZV9yZWxlYXNlX2lkIHx8IGRhdGEuY2lyY3VpdF9qc29uLCB7XG4gICAgICBtZXNzYWdlOiBcIkVpdGhlciBwYWNrYWdlX3JlbGVhc2VfaWQgb3IgY2lyY3VpdF9qc29uIG11c3QgYmUgcHJvdmlkZWRcIixcbiAgICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXI6IG9yZGVyU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGNpcmN1aXRfanNvbiB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgbmV3T3JkZXIgPSB7XG4gICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBpc19ydW5uaW5nOiBmYWxzZSxcbiAgICBpc19zdGFydGVkOiBmYWxzZSxcbiAgICBpc19maW5pc2hlZDogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gICAgaGFzX2Vycm9yOiBmYWxzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc3RhcnRlZF9hdDogbnVsbCxcbiAgICBjb21wbGV0ZWRfYXQ6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uLFxuICB9XG5cbiAgY29uc3Qgb3JkZXIgPSBjdHguZGIuYWRkT3JkZXIobmV3T3JkZXIpXG5cbiAgY29uc3QgbmV3SmxjcGNiT3JkZXJTdGF0ZSA9IHtcbiAgICBvcmRlcl9pZDogb3JkZXIub3JkZXJfaWQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGFyZV9nZXJiZXJzX3VwbG9hZGVkOiBmYWxzZSxcbiAgICBpc19nZXJiZXJfYW5hbHl6ZWQ6IGZhbHNlLFxuICAgIGFyZV9pbml0aWFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IGZhbHNlLFxuICAgIGlzX3BjYl9hZGRlZF90b19jYXJ0OiBmYWxzZSxcbiAgICBpc19ib21fdXBsb2FkZWQ6IGZhbHNlLFxuICAgIGlzX3BucF91cGxvYWRlZDogZmFsc2UsXG4gICAgaXNfYm9tX3BucF9hbmFseXplZDogZmFsc2UsXG4gICAgaXNfYm9tX3BhcnNpbmdfY29tcGxldGU6IGZhbHNlLFxuICAgIGFyZV9jb21wb25lbnRzX2F2YWlsYWJsZTogZmFsc2UsXG4gICAgaXNfcGF0Y2hfbWFwX2dlbmVyYXRlZDogZmFsc2UsXG4gICAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IGZhbHNlLFxuICAgIGlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICBhcmVfZmlsZXNfZG93bmxvYWRlZDogZmFsc2UsXG4gICAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiBmYWxzZSxcbiAgICBhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZDogZmFsc2UsXG4gICAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IGZhbHNlLFxuICAgIGlzX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICAgIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDogZmFsc2UsXG4gICAgY3VycmVudF9zdGVwOiBudWxsLFxuICB9XG5cbiAgY3R4LmRiLmFkZEpsY3BjYk9yZGVyU3RhdGUobmV3SmxjcGNiT3JkZXJTdGF0ZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyLFxuICB9KVxufSlcbiIsICJpbXBvcnQge1xuICBlcnJvclNjaGVtYSxcbiAgamxjcGNiT3JkZXJTdGF0ZVNjaGVtYSxcbiAgb3JkZXJTY2hlbWEsXG59IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclN0ZXBzIGFzIHNpbXVsYXRlU2NlbmFyaW9zIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL3V0aWxzL29yZGVyLXN0ZXBzXCJcblxuY29uc3QgZGVmYXVsdE9yZGVyU3RhdGUgPSB7XG4gIGFyZV9nZXJiZXJzX3VwbG9hZGVkOiBmYWxzZSxcbiAgaXNfZ2VyYmVyX2FuYWx5emVkOiBmYWxzZSxcbiAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDogZmFsc2UsXG4gIGlzX3BjYl9hZGRlZF90b19jYXJ0OiBmYWxzZSxcbiAgaXNfYm9tX3VwbG9hZGVkOiBmYWxzZSxcbiAgaXNfcG5wX3VwbG9hZGVkOiBmYWxzZSxcbiAgaXNfYm9tX3BucF9hbmFseXplZDogZmFsc2UsXG4gIGlzX2JvbV9wYXJzaW5nX2NvbXBsZXRlOiBmYWxzZSxcbiAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNfcGF0Y2hfbWFwX2dlbmVyYXRlZDogZmFsc2UsXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV9jcmVhdGVkOiBmYWxzZSxcbiAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IGZhbHNlLFxuICBhcmVfZmlsZXNfZG93bmxvYWRlZDogZmFsc2UsXG4gIGFyZV9wcm9kdWN0X2NhdGVnb3JpZXNfZmV0Y2hlZDogZmFsc2UsXG4gIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiBmYWxzZSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IGZhbHNlLFxuICBpc19hZGRlZF90b19jYXJ0OiBmYWxzZSxcbiAgdXBsb2FkZWRfZ2VyYmVyX21ldGFkYXRhOiBudWxsLFxuICBnZXJiZXJfYW5hbHlzaXM6IG51bGwsXG4gIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDogZmFsc2UsXG4gIGN1cnJlbnRfc3RlcDogbnVsbCBhcyBudWxsIHwgKHR5cGVvZiBzaW11bGF0ZVNjZW5hcmlvcylbbnVtYmVyXSxcbn1cblxuY29uc3QgZXJyb3JNYXAgPSB7XG4gIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiR0VSQkVSX0dFTkVSQVRJT05fRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZXJiZXIgZ2VuZXJhdGlvbiBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkdFUkJFUl9VUExPQURfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZXJiZXIgdXBsb2FkIGZhaWxlZFwiLFxuICB9LFxuICBpc19nZXJiZXJfYW5hbHl6ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkFOQUxZWkVfR0VSQkVSX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQW5hbHl6ZSBnZXJiZXIgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2JvbV91cGxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiQk9NX1VQTE9BRF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkJvbSB1cGxvYWQgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX3BucF91cGxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiUE5QX1VQTE9BRF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIlBucCB1cGxvYWQgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2JvbV9wbnBfYW5hbHl6ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkFOQUxZWkVfQk9NX0FORF9QTlBfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJBbmFseXplIGJvbSBhbmQgcG5wIGZhaWxlZFwiLFxuICB9LFxuICBpc19ib21fcGFyc2luZ19jb21wbGV0ZToge1xuICAgIGVycm9yX2NvZGU6IFwiQk9NX1BBUlNJTkdfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJCb20gcGFyc2luZyBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiB7XG4gICAgZXJyb3JfY29kZTogXCJDT01QT05FTlRTX0FWQUlMQUJJTElUWV9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkNvbXBvbmVudHMgYXZhaWxhYmlsaXR5IGZhaWxlZFwiLFxuICB9LFxuICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJHRU5FUkFURV9QQVRDSF9NQVBfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZW5lcmF0ZSBwYXRjaCBtYXAgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV9jcmVhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJDUkVBVElPTl9KU09OX01FUkdFX0ZJTEVfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJDcmVhdGlvbiBqc29uIG1lcmdlIGZpbGUgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJHRU5FUkFURV9ERk1fUkVTVUxUX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiR2VuZXJhdGUgZGZtIHJlc3VsdCBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2ZpbGVzX2Rvd25sb2FkZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkRPV05MT0FEX0ZJTEVTX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiRG93bmxvYWQgZmlsZXMgZmFpbGVkXCIsXG4gIH0sXG4gIGFyZV9wcm9kdWN0X2NhdGVnb3JpZXNfZmV0Y2hlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiRkVUQ0hfUFJPRFVDVF9DQVRFR09SSUVTX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiRmV0Y2ggcHJvZHVjdCBjYXRlZ29yaWVzIGZhaWxlZFwiLFxuICB9LFxuICBhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiRklOQUxfQ09TVF9DQUxDVUxBVElPTl9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkZpbmFsIGNvc3QgY2FsY3VsYXRpb24gZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV91cGRhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJVUERBVEVfSlNPTl9NRVJHRV9GSUxFX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiVXBkYXRlIGpzb24gbWVyZ2UgZmlsZSBmYWlsZWRcIixcbiAgfSxcbiAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkFERF9QQ0JfVE9fQ0FSVF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkFkZCBwY2IgdG8gY2FydCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfYWRkZWRfdG9fY2FydDoge1xuICAgIGVycm9yX2NvZGU6IFwiQUREX1RPX0NBUlRfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJBZGQgdG8gY2FydCBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiSU5JVElBTF9DT1NUX0NBTENVTEFUSU9OX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiSW5pdGlhbCBjb3N0IGNhbGN1bGF0aW9uIGZhaWxlZFwiLFxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgICBfc2ltdWxhdGVfc2NlbmFyaW86IHouZW51bShzaW11bGF0ZVNjZW5hcmlvcykub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyOiBvcmRlclNjaGVtYSxcbiAgICBvcmRlclN0YXRlOiBqbGNwY2JPcmRlclN0YXRlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZGVyX2lkLCBfc2ltdWxhdGVfc2NlbmFyaW8gfSA9IHJlcS5xdWVyeVxuXG4gIGNvbnN0IG9yZGVyID0gY3R4LmRiLmdldE9yZGVyQnlJZChvcmRlcl9pZClcbiAgaWYgKCFvcmRlcikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZGVyX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmRlciBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgdXBkYXRlZE9yZGVyU3RhdGUgPSB7XG4gICAgLi4uZGVmYXVsdE9yZGVyU3RhdGUsXG4gICAgb3JkZXJfaWQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9XG5cbiAgaWYgKF9zaW11bGF0ZV9zY2VuYXJpbykge1xuICAgIGNvbnN0IGVycm9yID0gZXJyb3JNYXBbX3NpbXVsYXRlX3NjZW5hcmlvXVxuICAgIGlmIChlcnJvcikge1xuICAgICAgb3JkZXIuZXJyb3IgPSBlcnJvclNjaGVtYS5wYXJzZShlcnJvcilcbiAgICAgIG9yZGVyLmhhc19lcnJvciA9IHRydWVcbiAgICAgIGN0eC5kYi51cGRhdGVPcmRlcihvcmRlcl9pZCwgeyBlcnJvcjogb3JkZXIuZXJyb3IsIGhhc19lcnJvcjogdHJ1ZSB9KVxuXG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBzaW11bGF0ZVNjZW5hcmlvcy5pbmRleE9mKF9zaW11bGF0ZV9zY2VuYXJpbylcbiAgICAgIHNpbXVsYXRlU2NlbmFyaW9zLnNsaWNlKDAsIGN1cnJlbnRJbmRleCkuZm9yRWFjaCgoc2NlbmFyaW8pID0+IHtcbiAgICAgICAgdXBkYXRlZE9yZGVyU3RhdGVbc2NlbmFyaW9dID0gdHJ1ZVxuICAgICAgfSlcbiAgICAgIHVwZGF0ZWRPcmRlclN0YXRlLmN1cnJlbnRfc3RlcCA9IHNpbXVsYXRlU2NlbmFyaW9zW2N1cnJlbnRJbmRleF1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZXhpc3RpbmdTdGF0ZSA9IGN0eC5kYi5nZXRKbGNwY2JPcmRlclN0YXRlc0J5T3JkZXJJZChvcmRlcl9pZClcbiAgICBpZiAoZXhpc3RpbmdTdGF0ZSkge1xuICAgICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgICAgb3JkZXIsXG4gICAgICAgIG9yZGVyU3RhdGU6IGV4aXN0aW5nU3RhdGUsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGN0eC5kYi51cGRhdGVKbGNwY2JPcmRlclN0YXRlKG9yZGVyX2lkLCB1cGRhdGVkT3JkZXJTdGF0ZSlcblxuICBjb25zdCBvcmRlclN0YXRlID0gY3R4LmRiLmdldEpsY3BjYk9yZGVyU3RhdGVzQnlPcmRlcklkKG9yZGVyX2lkKSFcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyLFxuICAgIG9yZGVyU3RhdGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyczogei5hcnJheShvcmRlclNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJzOiBjdHguZGIub3JkZXJzLmZpbHRlcigobykgPT4gby5hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIG9yZ19pZDogei5zdHJpbmcoKSxcbiAgICBhY2NvdW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdHNjaXJjdWl0X2hhbmRsZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe30pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JnX2lkLCBhY2NvdW50X2lkLCB0c2NpcmN1aXRfaGFuZGxlIH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgY29uc3Qgb3JnID0gY3R4LmRiLmdldE9yZyh7IG9yZ19pZCB9LCBjdHguYXV0aClcblxuICBpZiAoIW9yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZ19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JnYW5pemF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIW9yZy5jYW5fbWFuYWdlX29yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9hdXRob3JpemVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGlzIG9yZ2FuaXphdGlvblwiLFxuICAgIH0pXG4gIH1cblxuICBsZXQgYWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKChhY2MpID0+IGFjYy5hY2NvdW50X2lkID09PSBhY2NvdW50X2lkKVxuICBpZiAoIWFjY291bnQpIHtcbiAgICBhY2NvdW50ID0gY3R4LmRiLmFjY291bnRzLmZpbmQoXG4gICAgICAoYWNjKSA9PiBhY2MudHNjaXJjdWl0X2hhbmRsZSA9PT0gdHNjaXJjdWl0X2hhbmRsZSxcbiAgICApXG4gIH1cblxuICBpZiAoIWFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjdHguZGIuYWRkT3JnYW5pemF0aW9uQWNjb3VudCh7XG4gICAgb3JnX2lkLFxuICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgfSlcblxuICByZXR1cm4gY3R4Lmpzb24oe30pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBwdWJsaWNNYXBPcmcgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtb3JnXCJcbmltcG9ydCB7XG4gIHB1YmxpY09yZ1NjaGVtYSxcbiAgdHNjaXJjdWl0SGFuZGxlU2NoZW1hLFxufSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBjb21tb25QYXJhbXM6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGRpc3BsYXlfbmFtZTogei5zdHJpbmcoKS5taW4oMykubWF4KDQwKS5vcHRpb25hbCgpLFxuICAgICAgdHNjaXJjdWl0X2hhbmRsZTogdHNjaXJjdWl0SGFuZGxlU2NoZW1hLm1pbigzKS5vcHRpb25hbCgpLFxuICAgICAgbmFtZTogdHNjaXJjdWl0SGFuZGxlU2NoZW1hLm1pbigzKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLnJlZmluZSgoZGF0YSkgPT4gZGF0YS50c2NpcmN1aXRfaGFuZGxlIHx8IGRhdGEubmFtZSwge1xuICAgICAgbWVzc2FnZTogXCJFaXRoZXIgdHNjaXJjdWl0X2hhbmRsZSBvciBuYW1lIGlzIHJlcXVpcmVkXCIsXG4gICAgfSksXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmc6IHB1YmxpY09yZ1NjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBkaXNwbGF5X25hbWUsIHRzY2lyY3VpdF9oYW5kbGUsIG5hbWUgfSA9IHJlcS5jb21tb25QYXJhbXNcbiAgY29uc3QgaGFuZGxlID0gdHNjaXJjdWl0X2hhbmRsZSB8fCBuYW1lXG5cbiAgY29uc3QgZXhpc3RpbmcgPSBjdHguZGIuZ2V0T3JnKHsgdHNjaXJjdWl0X2hhbmRsZTogaGFuZGxlIH0pXG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JnX2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICBtZXNzYWdlOiBcIkFuIG9yZ2FuaXphdGlvbiB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0c1wiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBuZXdPcmcgPSB7XG4gICAgb3duZXJfYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBvcmdfZGlzcGxheV9uYW1lOiBkaXNwbGF5X25hbWUsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKSxcbiAgICBjYW5fbWFuYWdlX29yZzogdHJ1ZSxcbiAgICB0c2NpcmN1aXRfaGFuZGxlOiBoYW5kbGUsXG4gIH1cblxuICBjb25zdCBvcmcgPSBjdHguZGIuYWRkT3JnYW5pemF0aW9uKG5ld09yZylcblxuICBjdHguZGIuYWRkT3JnYW5pemF0aW9uQWNjb3VudCh7XG4gICAgb3JnX2lkOiBvcmcub3JnX2lkLFxuICAgIGFjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgaXNfb3duZXI6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZnVsbE9yZyA9IGN0eC5kYi5nZXRPcmcoeyBvcmdfaWQ6IG9yZy5vcmdfaWQgfSwgY3R4LmF1dGgpXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JnOiBwdWJsaWNNYXBPcmcoZnVsbE9yZyEpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgKiBhcyBaVCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBjb25zdCBwdWJsaWNNYXBPcmcgPSAoXG4gIGludGVybmFsX29yZzogWlQuT3JnYW5pemF0aW9uICYge1xuICAgIG1lbWJlcl9jb3VudDogbnVtYmVyXG4gICAgcGFja2FnZV9jb3VudDogbnVtYmVyXG4gICAgY2FuX21hbmFnZV9vcmc6IGJvb2xlYW5cbiAgfSxcbik6IHouaW5mZXI8dHlwZW9mIFpULnB1YmxpY09yZ1NjaGVtYT4gPT4ge1xuICBjb25zdCB7XG4gICAgY2FuX21hbmFnZV9vcmcsXG4gICAgZ2l0aHViX2hhbmRsZSxcbiAgICBtZW1iZXJfY291bnQsXG4gICAgcGFja2FnZV9jb3VudCxcbiAgICBjcmVhdGVkX2F0LFxuICAgIGlzX3BlcnNvbmFsX29yZyxcbiAgICBvcmdfZGlzcGxheV9uYW1lLFxuICAgIHRzY2lyY3VpdF9oYW5kbGUsXG4gICAgYXZhdGFyX3VybCxcbiAgICAuLi5vcmdcbiAgfSA9IGludGVybmFsX29yZ1xuICByZXR1cm4ge1xuICAgIG9yZ19pZDogb3JnLm9yZ19pZCxcbiAgICBkaXNwbGF5X25hbWU6IG9yZ19kaXNwbGF5X25hbWUgPz8gdHNjaXJjdWl0X2hhbmRsZSA/PyB1bmRlZmluZWQsXG4gICAgb3duZXJfYWNjb3VudF9pZDogb3JnLm93bmVyX2FjY291bnRfaWQsXG4gICAgbmFtZTogdHNjaXJjdWl0X2hhbmRsZSxcbiAgICBhdmF0YXJfdXJsOiBhdmF0YXJfdXJsID8/IG51bGwsXG4gICAgbWVtYmVyX2NvdW50OiBOdW1iZXIobWVtYmVyX2NvdW50KSB8fCAwLFxuICAgIHBhY2thZ2VfY291bnQ6IE51bWJlcihwYWNrYWdlX2NvdW50KSB8fCAwLFxuICAgIGlzX3BlcnNvbmFsX29yZzogQm9vbGVhbihpc19wZXJzb25hbF9vcmcpLFxuICAgIGNyZWF0ZWRfYXQ6IFN0cmluZyhjcmVhdGVkX2F0KSxcbiAgICBnaXRodWJfaGFuZGxlLFxuICAgIHRzY2lyY3VpdF9oYW5kbGUsXG4gICAgLi4uKGNhbl9tYW5hZ2Vfb3JnID8geyB1c2VyX3Blcm1pc3Npb25zOiB7IGNhbl9tYW5hZ2Vfb3JnOiB0cnVlIH0gfSA6IHt9KSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCIsIFwiREVMRVRFXCJdLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmdfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZ19pZCB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIGNvbnN0IG9yZyA9IGN0eC5kYi5nZXRPcmcoeyBvcmdfaWQgfSwgY3R4LmF1dGgpXG5cbiAgaWYgKCFvcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmdfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZ2FuaXphdGlvbiBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFvcmcuY2FuX21hbmFnZV9vcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJub3RfYXV0aG9yaXplZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhpcyBvcmdhbml6YXRpb25cIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKG9yZy5pc19wZXJzb25hbF9vcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJjYW5ub3RfZGVsZXRlX3BlcnNvbmFsX29yZ1wiLFxuICAgICAgbWVzc2FnZTogXCJQZXJzb25hbCBvcmdhbml6YXRpb25zIGNhbm5vdCBiZSBkZWxldGVkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VDb3VudCA9IGN0eC5kYi5wYWNrYWdlcy5maWx0ZXIoXG4gICAgKHBrZykgPT4gcGtnLm93bmVyX29yZ19pZCA9PT0gb3JnX2lkLFxuICApLmxlbmd0aFxuXG4gIGlmIChwYWNrYWdlQ291bnQgPiAwKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JnX2hhc19wYWNrYWdlc1wiLFxuICAgICAgbWVzc2FnZTogXCJDYW5ub3QgZGVsZXRlIG9yZ2FuaXphdGlvbiB3aXRoIGV4aXN0aW5nIHBhY2thZ2VzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGRlbGV0ZWQgPSBjdHguZGIuZGVsZXRlT3JnYW5pemF0aW9uKG9yZ19pZClcblxuICBpZiAoIWRlbGV0ZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJkZWxldGVfZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byBkZWxldGUgb3JnYW5pemF0aW9uXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQge1xuICBvcmdBY2NvdW50U2NoZW1hLFxuICB1c2VyUGVybWlzc2lvbnNTY2hlbWEsXG59IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JnX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmdfbWVtYmVyOiBvcmdBY2NvdW50U2NoZW1hLm1lcmdlKFxuICAgICAgei5vYmplY3QoeyBvcmdfbWVtYmVyX3Blcm1pc3Npb25zOiB1c2VyUGVybWlzc2lvbnNTY2hlbWEubnVsbGFibGUoKSB9KSxcbiAgICApLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZ19pZCwgYWNjb3VudF9pZCB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIGNvbnN0IG9yZyA9IGN0eC5kYi5nZXRPcmcoXG4gICAge1xuICAgICAgb3JnX2lkLFxuICAgIH0sXG4gICAgY3R4LmF1dGgsXG4gIClcblxuICBpZiAoIW9yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZ19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JnYW5pemF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBtZW1iZXJPcmdBY2NvdW50ID0gY3R4LmRiLmdldE9yZ2FuaXphdGlvbkFjY291bnQoe1xuICAgIG9yZ19pZDogb3JnLm9yZ19pZCxcbiAgICBhY2NvdW50X2lkOiBhY2NvdW50X2lkLFxuICB9KVxuXG4gIGNvbnN0IG1lbWJlck9yZyA9IGN0eC5kYi5nZXRPcmcoXG4gICAge1xuICAgICAgb3JnX2lkLFxuICAgIH0sXG4gICAge1xuICAgICAgYWNjb3VudF9pZDogYWNjb3VudF9pZCEsXG4gICAgfSxcbiAgKVxuXG4gIGlmICghbWVtYmVyT3JnQWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm1lbWJlcl9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiTWVtYmVyIG5vdCBmb3VuZCBpbiBvcmdhbml6YXRpb25cIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmdfbWVtYmVyOiB7XG4gICAgICAuLi5tZW1iZXJPcmdBY2NvdW50LFxuICAgICAgb3JnX21lbWJlcl9wZXJtaXNzaW9uczogbWVtYmVyT3JnLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBwdWJsaWNNYXBPcmcgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtb3JnXCJcbmltcG9ydCB7IHB1YmxpY09yZ1NjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGNvbW1vblBhcmFtczogelxuICAgIC5vYmplY3QoeyBvcmdfaWQ6IHouc3RyaW5nKCkgfSlcbiAgICAub3Ioei5vYmplY3QoeyBnaXRodWJfaGFuZGxlOiB6LnN0cmluZygpIH0pKVxuICAgIC5vcih6Lm9iamVjdCh7IHRzY2lyY3VpdF9oYW5kbGU6IHouc3RyaW5nKCkgfSkpLFxuICBhdXRoOiBcIm9wdGlvbmFsX3Nlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JnOiBwdWJsaWNPcmdTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHBhcmFtcyA9IHJlcS5jb21tb25QYXJhbXMgYXMge1xuICAgIG9yZ19pZD86IHN0cmluZ1xuICAgIGdpdGh1Yl9oYW5kbGU/OiBzdHJpbmdcbiAgICB0c2NpcmN1aXRfaGFuZGxlPzogc3RyaW5nXG4gIH1cblxuICBjb25zdCBvcmcgPSBjdHguZGIuZ2V0T3JnKFxuICAgIHtcbiAgICAgIG9yZ19pZDogcGFyYW1zLm9yZ19pZCxcbiAgICAgIGdpdGh1Yl9oYW5kbGU6IHBhcmFtcy5naXRodWJfaGFuZGxlLFxuICAgICAgdHNjaXJjdWl0X2hhbmRsZTogcGFyYW1zLnRzY2lyY3VpdF9oYW5kbGUsXG4gICAgfSxcbiAgICBjdHguYXV0aCxcbiAgKVxuXG4gIGlmICghb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JnX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmdhbml6YXRpb24gbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuICByZXR1cm4gY3R4Lmpzb24oeyBvcmc6IHB1YmxpY01hcE9yZyhvcmcpIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBpbnZpdGF0aW9uX3Rva2VuOiB6LnN0cmluZygpLFxuICB9KSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZ19hY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICAgIG9yZzogei5vYmplY3Qoe1xuICAgICAgb3JnX2lkOiB6LnN0cmluZygpLFxuICAgICAgb3JnX25hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgIG9yZ19kaXNwbGF5X25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB9KSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBpbnZpdGF0aW9uX3Rva2VuIH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgLy8gRmluZCB0aGUgaW52aXRhdGlvblxuICBjb25zdCBpbnZpdGF0aW9uID0gY3R4LmRiLmdldE9yZ0ludml0YXRpb25CeVRva2VuKGludml0YXRpb25fdG9rZW4pXG5cbiAgaWYgKCFpbnZpdGF0aW9uKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52aXRhdGlvbl9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiSW52YWxpZCBpbnZpdGF0aW9uIGxpbmtcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgaW52aXRhdGlvbiBpcyByZXZva2VkXG4gIGlmIChpbnZpdGF0aW9uLmlzX3Jldm9rZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZpdGF0aW9uX3Jldm9rZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiVGhpcyBpbnZpdGF0aW9uIHdhcyBjYW5jZWxsZWRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgaW52aXRhdGlvbiBpcyBhbHJlYWR5IGFjY2VwdGVkXG4gIGlmIChpbnZpdGF0aW9uLmlzX2FjY2VwdGVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52aXRhdGlvbl9hbHJlYWR5X2FjY2VwdGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSd2ZSBhbHJlYWR5IGpvaW5lZCB0aGlzIG9yZ2FuaXphdGlvblwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBpbnZpdGF0aW9uIGlzIGV4cGlyZWRcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuICBpZiAobmV3IERhdGUoaW52aXRhdGlvbi5leHBpcmVzX2F0KSA8IG5vdykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludml0YXRpb25fZXhwaXJlZFwiLFxuICAgICAgbWVzc2FnZTogYFRoaXMgaW52aXRhdGlvbiBleHBpcmVkIG9uICR7bmV3IERhdGUoaW52aXRhdGlvbi5leHBpcmVzX2F0KS50b0xvY2FsZURhdGVTdHJpbmcoKX1gLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgY3VycmVudCB1c2VyJ3MgYWNjb3VudFxuICBjb25zdCBjdXJyZW50QWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKFxuICAgIChhY2MpID0+IGFjYy5hY2NvdW50X2lkID09PSBjdHguYXV0aCEuYWNjb3VudF9pZCxcbiAgKVxuXG4gIGlmICghY3VycmVudEFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3VyIGFjY291bnQgd2FzIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyJ3MgZW1haWwgbWF0Y2hlcyBpbnZpdGF0aW9uIGVtYWlsXG4gIGlmIChcbiAgICBpbnZpdGF0aW9uLmludml0ZWVfZW1haWwgJiZcbiAgICBjdXJyZW50QWNjb3VudC5lbWFpbCAhPT0gaW52aXRhdGlvbi5pbnZpdGVlX2VtYWlsXG4gICkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImVtYWlsX21pc21hdGNoXCIsXG4gICAgICBtZXNzYWdlOiBgVGhpcyBpbnZpdGUgaXMgZm9yICR7aW52aXRhdGlvbi5pbnZpdGVlX2VtYWlsfS4gUGxlYXNlIGxvZyBpbiB3aXRoIHRoYXQgZW1haWwuYCxcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdXNlciBpcyBhbHJlYWR5IGEgbWVtYmVyXG4gIGNvbnN0IGV4aXN0aW5nTWVtYmVyID0gY3R4LmRiLmdldE9yZ2FuaXphdGlvbkFjY291bnQoe1xuICAgIG9yZ19pZDogaW52aXRhdGlvbi5vcmdfaWQsXG4gICAgYWNjb3VudF9pZDogY3VycmVudEFjY291bnQuYWNjb3VudF9pZCxcbiAgfSlcblxuICBpZiAoZXhpc3RpbmdNZW1iZXIpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhbHJlYWR5X21lbWJlclwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UncmUgYWxyZWFkeSBhIG1lbWJlciBvZiB0aGlzIG9yZ2FuaXphdGlvblwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgb3JnYW5pemF0aW9uIGRldGFpbHNcbiAgY29uc3Qgb3JnID0gY3R4LmRiLm9yZ2FuaXphdGlvbnMuZmluZCgobykgPT4gby5vcmdfaWQgPT09IGludml0YXRpb24ub3JnX2lkKVxuICBpZiAoIW9yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZ19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JnYW5pemF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBBZGQgdXNlciB0byBvcmdhbml6YXRpb25cbiAgY29uc3Qgb3JnQWNjb3VudCA9IGN0eC5kYi5hZGRPcmdhbml6YXRpb25BY2NvdW50KHtcbiAgICBvcmdfaWQ6IGludml0YXRpb24ub3JnX2lkLFxuICAgIGFjY291bnRfaWQ6IGN1cnJlbnRBY2NvdW50LmFjY291bnRfaWQsXG4gICAgaXNfb3duZXI6IGZhbHNlLFxuICB9KVxuXG4gIC8vIE1hcmsgaW52aXRhdGlvbiBhcyBhY2NlcHRlZFxuICBjdHguZGIudXBkYXRlT3JnSW52aXRhdGlvbihpbnZpdGF0aW9uLm9yZ19pbnZpdGF0aW9uX2lkLCB7XG4gICAgaXNfcGVuZGluZzogZmFsc2UsXG4gICAgaXNfYWNjZXB0ZWQ6IHRydWUsXG4gICAgYWNjZXB0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBhY2NlcHRlZF9ieV9hY2NvdW50X2lkOiBjdXJyZW50QWNjb3VudC5hY2NvdW50X2lkLFxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JnX2FjY291bnRfaWQ6IG9yZ0FjY291bnQub3JnX2FjY291bnRfaWQsXG4gICAgb3JnOiB7XG4gICAgICBvcmdfaWQ6IG9yZy5vcmdfaWQsXG4gICAgICBvcmdfbmFtZTogb3JnLnRzY2lyY3VpdF9oYW5kbGUsXG4gICAgICBvcmdfZGlzcGxheV9uYW1lOiBvcmcub3JnX2Rpc3BsYXlfbmFtZSxcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JnX2lkOiB6LnN0cmluZygpLFxuICAgIGludml0ZWVfZW1haWw6IHouc3RyaW5nKCkuZW1haWwoKSxcbiAgfSksXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmdfaW52aXRhdGlvbl9pZDogei5zdHJpbmcoKSxcbiAgICBpbnZpdGF0aW9uX3Rva2VuOiB6LnN0cmluZygpLFxuICAgIGludml0ZWVfZW1haWw6IHouc3RyaW5nKCksXG4gICAgZXhwaXJlc19hdDogei5zdHJpbmcoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmdfaWQsIGludml0ZWVfZW1haWwgfSA9IHJlcS5jb21tb25QYXJhbXNcblxuICAvLyBDaGVjayBpZiBvcmcgZXhpc3RzIGFuZCB1c2VyIGhhcyBwZXJtaXNzaW9uXG4gIGNvbnN0IG9yZyA9IGN0eC5kYi5nZXRPcmcoeyBvcmdfaWQgfSwgY3R4LmF1dGgpXG5cbiAgaWYgKCFvcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmdfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZ2FuaXphdGlvbiBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFvcmcuY2FuX21hbmFnZV9vcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJub3RfYXV0aG9yaXplZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhpcyBvcmdhbml6YXRpb25cIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgZm9yIGR1cGxpY2F0ZSBwZW5kaW5nIGludml0YXRpb25cbiAgY29uc3QgZXhpc3RpbmdJbnZpdGF0aW9ucyA9IGN0eC5kYi5saXN0T3JnSW52aXRhdGlvbnMob3JnX2lkKVxuICBjb25zdCBkdXBsaWNhdGVQZW5kaW5nID0gZXhpc3RpbmdJbnZpdGF0aW9ucy5maW5kKFxuICAgIChpbnYpID0+XG4gICAgICBpbnYuaW52aXRlZV9lbWFpbCA9PT0gaW52aXRlZV9lbWFpbCAmJlxuICAgICAgaW52LmlzX3BlbmRpbmcgJiZcbiAgICAgICFpbnYuaXNfcmV2b2tlZCAmJlxuICAgICAgbmV3IERhdGUoaW52LmV4cGlyZXNfYXQpID4gbmV3IERhdGUoKSxcbiAgKVxuXG4gIGlmIChkdXBsaWNhdGVQZW5kaW5nKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZHVwbGljYXRlX3BlbmRpbmdfaW52aXRhdGlvblwiLFxuICAgICAgbWVzc2FnZTogXCJBIHBlbmRpbmcgaW52aXRhdGlvbiBmb3IgdGhpcyBlbWFpbCBhbHJlYWR5IGV4aXN0c1wiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyIGlzIGFscmVhZHkgYSBtZW1iZXJcbiAgY29uc3QgaW52aXRlZUFjY291bnQgPSBjdHguZGIuYWNjb3VudHMuZmluZChcbiAgICAoYWNjKSA9PiBhY2MuZW1haWwgPT09IGludml0ZWVfZW1haWwsXG4gIClcbiAgaWYgKGludml0ZWVBY2NvdW50KSB7XG4gICAgY29uc3QgZXhpc3RpbmdNZW1iZXIgPSBjdHguZGIuZ2V0T3JnYW5pemF0aW9uQWNjb3VudCh7XG4gICAgICBvcmdfaWQsXG4gICAgICBhY2NvdW50X2lkOiBpbnZpdGVlQWNjb3VudC5hY2NvdW50X2lkLFxuICAgIH0pXG4gICAgaWYgKGV4aXN0aW5nTWVtYmVyKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcImFscmVhZHlfbWVtYmVyXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiVGhpcyB1c2VyIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgdGhlIG9yZ2FuaXphdGlvblwiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvLyBHZW5lcmF0ZSBzZWN1cmUgdG9rZW5cbiAgY29uc3QgaW52aXRhdGlvbl90b2tlbiA9IHJhbmRvbUJ5dGVzKDMyKS50b1N0cmluZyhcImhleFwiKVxuXG4gIC8vIENyZWF0ZSBpbnZpdGF0aW9uXG4gIGNvbnN0IGludml0YXRpb24gPSBjdHguZGIuYWRkT3JnSW52aXRhdGlvbih7XG4gICAgb3JnX2lkLFxuICAgIGludml0ZWVfZW1haWwsXG4gICAgaW52aXRlcl9hY2NvdW50X2lkOiBjdHguYXV0aCEuYWNjb3VudF9pZCxcbiAgICBpbnZpdGF0aW9uX3Rva2VuLFxuICB9KVxuXG4gIC8vIExvZyBlbWFpbCBzZW5kaW5nIChmYWtlIEFQSSBkb2Vzbid0IGFjdHVhbGx5IHNlbmQgZW1haWxzKVxuICBjb25zdCBvcmlnaW4gPSByZXEuaGVhZGVycy5nZXQoXCJvcmlnaW5cIikgfHwgXCJodHRwOi8vbG9jYWxob3N0OjUxNzNcIlxuICBjb25zdCBpbnZpdGVVcmwgPSBgJHtvcmlnaW59L29yZ3MvaW52aXRlP3Rva2VuPSR7aW52aXRhdGlvbl90b2tlbn1gXG4gIGNvbnNvbGUubG9nKGBbRkFLRSBFTUFJTF0gU2VuZGluZyBpbnZpdGF0aW9uIHRvICR7aW52aXRlZV9lbWFpbH1gKVxuICBjb25zb2xlLmxvZyhcbiAgICBgW0ZBS0UgRU1BSUxdIE9yZ2FuaXphdGlvbjogJHtvcmcudHNjaXJjdWl0X2hhbmRsZSB8fCBvcmcub3JnX2lkfWAsXG4gIClcbiAgY29uc29sZS5sb2coYFtGQUtFIEVNQUlMXSBJbnZpdGF0aW9uIFVSTDogJHtpbnZpdGVVcmx9YClcbiAgY29uc29sZS5sb2coYFtGQUtFIEVNQUlMXSBFeHBpcmVzOiAke2ludml0YXRpb24uZXhwaXJlc19hdH1gKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JnX2ludml0YXRpb25faWQ6IGludml0YXRpb24ub3JnX2ludml0YXRpb25faWQsXG4gICAgaW52aXRhdGlvbl90b2tlbjogaW52aXRhdGlvbi5pbnZpdGF0aW9uX3Rva2VuLFxuICAgIGludml0ZWVfZW1haWw6IGludml0ZWVfZW1haWwsXG4gICAgZXhwaXJlc19hdDogaW52aXRhdGlvbi5leHBpcmVzX2F0LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICB0b2tlbjogei5zdHJpbmcoKSxcbiAgfSksXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBpbnZpdGF0aW9uOiB6Lm9iamVjdCh7XG4gICAgICBvcmdfaW52aXRhdGlvbl9pZDogei5zdHJpbmcoKSxcbiAgICAgIGludml0ZWVfZW1haWw6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgIGlzX3BlbmRpbmc6IHouYm9vbGVhbigpLFxuICAgICAgaXNfYWNjZXB0ZWQ6IHouYm9vbGVhbigpLFxuICAgICAgaXNfcmV2b2tlZDogei5ib29sZWFuKCksXG4gICAgICBpc19leHBpcmVkOiB6LmJvb2xlYW4oKSxcbiAgICAgIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gICAgICBleHBpcmVzX2F0OiB6LnN0cmluZygpLFxuICAgICAgb3JnOiB6Lm9iamVjdCh7XG4gICAgICAgIG9yZ19pZDogei5zdHJpbmcoKSxcbiAgICAgICAgb3JnX25hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgICAgb3JnX2Rpc3BsYXlfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgfSksXG4gICAgICBpbnZpdGVyOiB6Lm9iamVjdCh7XG4gICAgICAgIGdpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgICAgICB0c2NpcmN1aXRfaGFuZGxlOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyB0b2tlbiB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIGNvbnN0IGludml0YXRpb24gPSBjdHguZGIuZ2V0T3JnSW52aXRhdGlvbkJ5VG9rZW4odG9rZW4pXG5cbiAgaWYgKCFpbnZpdGF0aW9uKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52aXRhdGlvbl9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiSW52aXRhdGlvbiBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IG9yZ2FuaXphdGlvbiBkZXRhaWxzXG4gIGNvbnN0IG9yZyA9IGN0eC5kYi5vcmdhbml6YXRpb25zLmZpbmQoKG8pID0+IG8ub3JnX2lkID09PSBpbnZpdGF0aW9uLm9yZ19pZClcbiAgaWYgKCFvcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmdfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZ2FuaXphdGlvbiBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IGludml0ZXIgZGV0YWlsc1xuICBjb25zdCBpbnZpdGVyID0gY3R4LmRiLmFjY291bnRzLmZpbmQoXG4gICAgKGFjYykgPT4gYWNjLmFjY291bnRfaWQgPT09IGludml0YXRpb24uaW52aXRlcl9hY2NvdW50X2lkLFxuICApXG5cbiAgLy8gQ29tcHV0ZSBpc19leHBpcmVkIGR5bmFtaWNhbGx5XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcbiAgY29uc3QgaXNfZXhwaXJlZCA9XG4gICAgaW52aXRhdGlvbi5pc19wZW5kaW5nICYmXG4gICAgIWludml0YXRpb24uaXNfcmV2b2tlZCAmJlxuICAgIG5ldyBEYXRlKGludml0YXRpb24uZXhwaXJlc19hdCkgPCBub3dcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIGludml0YXRpb246IHtcbiAgICAgIG9yZ19pbnZpdGF0aW9uX2lkOiBpbnZpdGF0aW9uLm9yZ19pbnZpdGF0aW9uX2lkLFxuICAgICAgaW52aXRlZV9lbWFpbDogaW52aXRhdGlvbi5pbnZpdGVlX2VtYWlsLFxuICAgICAgaXNfcGVuZGluZzogaW52aXRhdGlvbi5pc19wZW5kaW5nLFxuICAgICAgaXNfYWNjZXB0ZWQ6IGludml0YXRpb24uaXNfYWNjZXB0ZWQsXG4gICAgICBpc19yZXZva2VkOiBpbnZpdGF0aW9uLmlzX3Jldm9rZWQsXG4gICAgICBpc19leHBpcmVkLFxuICAgICAgY3JlYXRlZF9hdDogaW52aXRhdGlvbi5jcmVhdGVkX2F0LFxuICAgICAgZXhwaXJlc19hdDogaW52aXRhdGlvbi5leHBpcmVzX2F0LFxuICAgICAgb3JnOiB7XG4gICAgICAgIG9yZ19pZDogb3JnLm9yZ19pZCxcbiAgICAgICAgb3JnX25hbWU6IG9yZy50c2NpcmN1aXRfaGFuZGxlLFxuICAgICAgICBvcmdfZGlzcGxheV9uYW1lOiBvcmcub3JnX2Rpc3BsYXlfbmFtZSxcbiAgICAgIH0sXG4gICAgICBpbnZpdGVyOiB7XG4gICAgICAgIGdpdGh1Yl91c2VybmFtZTogaW52aXRlcj8uZ2l0aHViX3VzZXJuYW1lIHx8IG51bGwsXG4gICAgICAgIHRzY2lyY3VpdF9oYW5kbGU6IGludml0ZXI/LnRzY2lyY3VpdF9oYW5kbGUgfHwgbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JnX2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGludml0YXRpb25zOiB6LmFycmF5KFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBvcmdfaW52aXRhdGlvbl9pZDogei5zdHJpbmcoKSxcbiAgICAgICAgaW52aXRlZV9lbWFpbDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgICAgICBpc19wZW5kaW5nOiB6LmJvb2xlYW4oKSxcbiAgICAgICAgaXNfYWNjZXB0ZWQ6IHouYm9vbGVhbigpLFxuICAgICAgICBpc19leHBpcmVkOiB6LmJvb2xlYW4oKSxcbiAgICAgICAgaXNfcmV2b2tlZDogei5ib29sZWFuKCksXG4gICAgICAgIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gICAgICAgIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG4gICAgICAgIGFjY2VwdGVkX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgICAgIGludml0ZXI6IHoub2JqZWN0KHtcbiAgICAgICAgICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICAgICAgICAgIGdpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgICAgICAgIHRzY2lyY3VpdF9oYW5kbGU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICApLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZ19pZCB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIC8vIENoZWNrIGlmIG9yZyBleGlzdHMgYW5kIHVzZXIgaGFzIHBlcm1pc3Npb25cbiAgY29uc3Qgb3JnID0gY3R4LmRiLmdldE9yZyh7IG9yZ19pZCB9LCBjdHguYXV0aClcblxuICBpZiAoIW9yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZ19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JnYW5pemF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIW9yZy5jYW5fbWFuYWdlX29yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9hdXRob3JpemVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGlzIG9yZ2FuaXphdGlvblwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgYWxsIGludml0YXRpb25zIGZvciB0aGlzIG9yZ1xuICBjb25zdCBpbnZpdGF0aW9ucyA9IGN0eC5kYi5saXN0T3JnSW52aXRhdGlvbnMob3JnX2lkKVxuXG4gIC8vIENvbXB1dGUgaXNfZXhwaXJlZCBmb3IgZWFjaCBpbnZpdGF0aW9uXG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcbiAgY29uc3QgaW52aXRhdGlvbnNXaXRoRXhwaXJ5ID0gaW52aXRhdGlvbnMubWFwKChpbnYpID0+IHtcbiAgICBjb25zdCBpc19leHBpcmVkID0gbmV3IERhdGUoaW52LmV4cGlyZXNfYXQpIDwgbm93ICYmIGludi5pc19wZW5kaW5nXG5cbiAgICAvLyBHZXQgaW52aXRlciBkZXRhaWxzXG4gICAgY29uc3QgaW52aXRlciA9IGN0eC5kYi5hY2NvdW50cy5maW5kKFxuICAgICAgKGFjYykgPT4gYWNjLmFjY291bnRfaWQgPT09IGludi5pbnZpdGVyX2FjY291bnRfaWQsXG4gICAgKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9yZ19pbnZpdGF0aW9uX2lkOiBpbnYub3JnX2ludml0YXRpb25faWQsXG4gICAgICBpbnZpdGVlX2VtYWlsOiBpbnYuaW52aXRlZV9lbWFpbCxcbiAgICAgIGlzX3BlbmRpbmc6IGludi5pc19wZW5kaW5nLFxuICAgICAgaXNfYWNjZXB0ZWQ6IGludi5pc19hY2NlcHRlZCxcbiAgICAgIGlzX2V4cGlyZWQsXG4gICAgICBpc19yZXZva2VkOiBpbnYuaXNfcmV2b2tlZCxcbiAgICAgIGNyZWF0ZWRfYXQ6IGludi5jcmVhdGVkX2F0LFxuICAgICAgZXhwaXJlc19hdDogaW52LmV4cGlyZXNfYXQsXG4gICAgICBhY2NlcHRlZF9hdDogaW52LmFjY2VwdGVkX2F0LFxuICAgICAgaW52aXRlcjoge1xuICAgICAgICBhY2NvdW50X2lkOiBpbnYuaW52aXRlcl9hY2NvdW50X2lkLFxuICAgICAgICBnaXRodWJfdXNlcm5hbWU6IGludml0ZXI/LmdpdGh1Yl91c2VybmFtZSB8fCBudWxsLFxuICAgICAgICB0c2NpcmN1aXRfaGFuZGxlOiBpbnZpdGVyPy50c2NpcmN1aXRfaGFuZGxlIHx8IG51bGwsXG4gICAgICB9LFxuICAgIH1cbiAgfSlcblxuICAvLyBTb3J0IGJ5IGNyZWF0ZWRfYXQgREVTQyAobmV3ZXN0IGZpcnN0KVxuICBpbnZpdGF0aW9uc1dpdGhFeHBpcnkuc29ydCgoYSwgYikgPT4ge1xuICAgIHJldHVybiBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZF9hdCkuZ2V0VGltZSgpXG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBpbnZpdGF0aW9uczogaW52aXRhdGlvbnNXaXRoRXhwaXJ5LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiREVMRVRFXCIsIFwiUE9TVFwiXSxcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JnX2ludml0YXRpb25faWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZ19pbnZpdGF0aW9uX2lkIH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgLy8gRmluZCB0aGUgaW52aXRhdGlvblxuICBjb25zdCBpbnZpdGF0aW9uID0gY3R4LmRiLm9yZ0ludml0YXRpb25zLmZpbmQoXG4gICAgKGludikgPT4gaW52Lm9yZ19pbnZpdGF0aW9uX2lkID09PSBvcmdfaW52aXRhdGlvbl9pZCxcbiAgKVxuXG4gIGlmICghaW52aXRhdGlvbikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludml0YXRpb25fbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkludml0YXRpb24gbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIG9yZyBleGlzdHMgYW5kIHVzZXIgaGFzIHBlcm1pc3Npb25cbiAgY29uc3Qgb3JnID0gY3R4LmRiLmdldE9yZyh7IG9yZ19pZDogaW52aXRhdGlvbi5vcmdfaWQgfSwgY3R4LmF1dGgpXG5cbiAgaWYgKCFvcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmdfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZ2FuaXphdGlvbiBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFvcmcuY2FuX21hbmFnZV9vcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJub3RfYXV0aG9yaXplZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhpcyBvcmdhbml6YXRpb25cIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgaW52aXRhdGlvbiBpcyBhbHJlYWR5IGFjY2VwdGVkXG4gIGlmIChpbnZpdGF0aW9uLmlzX2FjY2VwdGVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52aXRhdGlvbl9hbHJlYWR5X2FjY2VwdGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkNhbm5vdCByZXZva2UgYW4gaW52aXRhdGlvbiB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gYWNjZXB0ZWRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gUmV2b2tlIHRoZSBpbnZpdGF0aW9uXG4gIGN0eC5kYi51cGRhdGVPcmdJbnZpdGF0aW9uKG9yZ19pbnZpdGF0aW9uX2lkLCB7XG4gICAgaXNfcmV2b2tlZDogdHJ1ZSxcbiAgICBpc19wZW5kaW5nOiBmYWxzZSxcbiAgfSlcblxuICByZXR1cm4gY3R4Lmpzb24oeyBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHtcbiAgYWNjb3VudFNjaGVtYSxcbiAgdXNlclBlcm1pc3Npb25zU2NoZW1hLFxufSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmdfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBhdXRoOiBcIm9wdGlvbmFsX3Nlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JnX21lbWJlcnM6IHouYXJyYXkoXG4gICAgICBhY2NvdW50U2NoZW1hLm9taXQoeyBzaGlwcGluZ0luZm86IHRydWUgfSkuZXh0ZW5kKHtcbiAgICAgICAgam9pbmVkX2F0OiB6LnN0cmluZygpLFxuICAgICAgICBvcmdfbWVtYmVyX3Blcm1pc3Npb25zOiB1c2VyUGVybWlzc2lvbnNTY2hlbWEsXG4gICAgICB9KSxcbiAgICApLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSByZXEuY29tbW9uUGFyYW1zIGFzIHsgb3JnX2lkPzogc3RyaW5nIH1cblxuICBjb25zdCBvcmcgPSBjdHguZGIuZ2V0T3JnKFxuICAgIHtcbiAgICAgIG9yZ19pZDogcGFyYW1zLm9yZ19pZCxcbiAgICB9LFxuICAgIGN0eC5hdXRoLFxuICApXG5cbiAgaWYgKCFvcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmdfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZ2FuaXphdGlvbiBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgY3VycmVudEFjY291bnRJZCA9IGN0eC5hdXRoPy5hY2NvdW50X2lkXG4gIGNvbnN0IGlzQ3VycmVudFVzZXJNZW1iZXIgPVxuICAgIGN1cnJlbnRBY2NvdW50SWQgJiZcbiAgICAoY3VycmVudEFjY291bnRJZCA9PT0gb3JnLm93bmVyX2FjY291bnRfaWQgfHxcbiAgICAgIGN0eC5kYi5vcmdBY2NvdW50cy5zb21lKFxuICAgICAgICAobSkgPT4gbS5vcmdfaWQgPT09IG9yZy5vcmdfaWQgJiYgbS5hY2NvdW50X2lkID09PSBjdXJyZW50QWNjb3VudElkLFxuICAgICAgKSlcblxuICBjb25zdCBtZW1iZXJzID0gY3R4LmRiLm9yZ0FjY291bnRzXG4gICAgLm1hcCgobSkgPT4ge1xuICAgICAgaWYgKG0ub3JnX2lkICE9PSBvcmcub3JnX2lkKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgICBjb25zdCBhY2NvdW50ID0gY3R4LmRiLmdldEFjY291bnQobS5hY2NvdW50X2lkKVxuICAgICAgaWYgKCFhY2NvdW50KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgICBjb25zdCBtZW1iZXJPcmcgPSBjdHguZGIuZ2V0T3JnKFxuICAgICAgICB7XG4gICAgICAgICAgb3JnX2lkOiBvcmcub3JnX2lkLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICAgICAgICB9LFxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5hY2NvdW50LFxuICAgICAgICB1c2VyX3Blcm1pc3Npb25zOiBtZW1iZXJPcmcsXG4gICAgICAgIGpvaW5lZF9hdDogbS5jcmVhdGVkX2F0LFxuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbHRlcihcbiAgICAgIChtZW1iZXIpOiBtZW1iZXIgaXMgTm9uTnVsbGFibGU8dHlwZW9mIG1lbWJlcj4gPT4gbWVtYmVyICE9PSB1bmRlZmluZWQsXG4gICAgKVxuICBjb25zdCBoYXNPd25lciA9IG1lbWJlcnMuc29tZSgobSkgPT4gbT8uYWNjb3VudF9pZCA9PT0gb3JnLm93bmVyX2FjY291bnRfaWQpXG4gIGxldCBmdWxsTWVtYmVycyA9IG1lbWJlcnNcblxuICBpZiAoIWhhc093bmVyKSB7XG4gICAgY29uc3Qgb3duZXIgPSBjdHguZGIuYWNjb3VudHMuZmluZChcbiAgICAgIChhY2MpID0+IGFjYy5hY2NvdW50X2lkID09PSBvcmcub3duZXJfYWNjb3VudF9pZCxcbiAgICApXG4gICAgaWYgKG93bmVyKSB7XG4gICAgICBjb25zdCBtZW1iZXJPcmcgPSBjdHguZGIuZ2V0T3JnKFxuICAgICAgICB7XG4gICAgICAgICAgb3JnX2lkOiBvcmcub3JnX2lkLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYWNjb3VudF9pZDogb3duZXIuYWNjb3VudF9pZCxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICAgIGZ1bGxNZW1iZXJzID0gW1xuICAgICAgICAuLi5tZW1iZXJzLFxuICAgICAgICB7XG4gICAgICAgICAgLi4ub3duZXIsXG4gICAgICAgICAgdXNlcl9wZXJtaXNzaW9uczogbWVtYmVyT3JnLFxuICAgICAgICAgIGpvaW5lZF9hdDogb3JnLmNyZWF0ZWRfYXQsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfVxuICB9XG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JnX21lbWJlcnM6IGZ1bGxNZW1iZXJzLm1hcCgobSkgPT4gKHtcbiAgICAgIC4uLm0sXG4gICAgICBlbWFpbDogaXNDdXJyZW50VXNlck1lbWJlciA/IG0uZW1haWwgOiB1bmRlZmluZWQsXG4gICAgICBvcmdfbWVtYmVyX3Blcm1pc3Npb25zOiBtLnVzZXJfcGVybWlzc2lvbnMgPz8ge1xuICAgICAgICBjYW5fbWFuYWdlX29yZzogZmFsc2UsXG4gICAgICAgIGNhbl9tYW5hZ2VfcGFja2FnZTogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgcHVibGljT3JnU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcE9yZyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1vcmdcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIGFjY291bnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB0c2NpcmN1aXRfaGFuZGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgb3Jnczogei5hcnJheShwdWJsaWNPcmdTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGFjY291bnRfaWQsIHRzY2lyY3VpdF9oYW5kbGUgfSA9IHJlcS5jb21tb25QYXJhbXNcbiAgaWYgKCFjdHguYXV0aCAmJiAhYWNjb3VudF9pZCAmJiAhdHNjaXJjdWl0X2hhbmRsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfcmVxdWVzdFwiLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgXCJZb3UgbXVzdCBwcm92aWRlIGVpdGhlciBhY2NvdW50X2lkIG9yIHRzY2lyY3VpdF9oYW5kbGUgd2hlbiBub3QgYXV0aGVudGljYXRlZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBvcmdzID0gY3R4LmRiLmdldE9yZ3MoXG4gICAge1xuICAgICAgYWNjb3VudF9pZDogYWNjb3VudF9pZCxcbiAgICAgIHRzY2lyY3VpdF9oYW5kbGUsXG4gICAgICAuLi4oIWFjY291bnRfaWQgJiYgIXRzY2lyY3VpdF9oYW5kbGVcbiAgICAgICAgPyB7IG93bmVyX2FjY291bnRfaWQ6IGN0eC5hdXRoPy5hY2NvdW50X2lkIH1cbiAgICAgICAgOiB7fSksXG4gICAgfSxcbiAgICB7XG4gICAgICBhY2NvdW50X2lkOiBjdHguYXV0aD8uYWNjb3VudF9pZCxcbiAgICB9LFxuICApXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgb3Jnczogb3Jncy5tYXAoKG9yZykgPT4gcHVibGljTWFwT3JnKG9yZykpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JnX2lkOiB6LnN0cmluZygpLFxuICAgIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7fSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmdfaWQsIGFjY291bnRfaWQgfSA9IHJlcS5jb21tb25QYXJhbXNcblxuICBjb25zdCBvcmcgPSBjdHguZGIuZ2V0T3JnKHsgb3JnX2lkIH0sIGN0eC5hdXRoKVxuXG4gIGlmICghb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JnX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmdhbml6YXRpb24gbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmICghb3JnLmNhbl9tYW5hZ2Vfb3JnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm90X2F1dGhvcml6ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gbWFuYWdlIHRoaXMgb3JnYW5pemF0aW9uXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGFjY291bnQgPSBjdHguZGIuYWNjb3VudHMuZmluZCgoYWNjKSA9PiBhY2MuYWNjb3VudF9pZCA9PT0gYWNjb3VudF9pZClcblxuICBpZiAoIWFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjdHguZGIucmVtb3ZlT3JnYW5pemF0aW9uQWNjb3VudCh7XG4gICAgb3JnX2lkLFxuICAgIGFjY291bnRfaWQsXG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHt9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgdXNlclBlcm1pc3Npb25zU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiLCBcIlBVVFwiXSxcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JnX2lkOiB6LnN0cmluZygpLFxuICAgIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gICAgb3JnX21lbWJlcl9wZXJtaXNzaW9uczogdXNlclBlcm1pc3Npb25zU2NoZW1hLFxuICB9KSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe30pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JnX2lkLCBhY2NvdW50X2lkLCBvcmdfbWVtYmVyX3Blcm1pc3Npb25zIH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgY29uc3Qgb3JnID0gY3R4LmRiLmdldE9yZyh7IG9yZ19pZCB9LCBjdHguYXV0aClcblxuICBpZiAoIW9yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZ19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JnYW5pemF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIW9yZy5jYW5fbWFuYWdlX29yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9hdXRob3JpemVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGlzIG9yZ2FuaXphdGlvblwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImNhbm5vdF91cGRhdGVfc2VsZlwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgY2Fubm90IHVwZGF0ZSB5b3VyIG93biBwZXJtaXNzaW9uc1wiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBleGlzdGluZ01lbWJlciA9IGN0eC5kYi5nZXRPcmdhbml6YXRpb25BY2NvdW50KHtcbiAgICBvcmdfaWQsXG4gICAgYWNjb3VudF9pZCxcbiAgfSlcblxuICBpZiAoIWV4aXN0aW5nTWVtYmVyKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWVtYmVyX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJNZW1iZXIgbm90IGZvdW5kIGluIHRoaXMgb3JnYW5pemF0aW9uXCIsXG4gICAgfSlcbiAgfVxuXG4gIGN0eC5kYi51cGRhdGVPcmdhbml6YXRpb25BY2NvdW50KFxuICAgIHsgb3JnX2lkLCBhY2NvdW50X2lkIH0sXG4gICAgb3JnX21lbWJlcl9wZXJtaXNzaW9ucyxcbiAgKVxuXG4gIHJldHVybiBjdHguanNvbih7fSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7XG4gIHB1YmxpY09yZ1NjaGVtYSxcbiAgdHNjaXJjdWl0SGFuZGxlU2NoZW1hLFxufSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBwdWJsaWNNYXBPcmcgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtb3JnXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIiwgXCJQQVRDSFwiXSxcbiAgY29tbW9uUGFyYW1zOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBvcmdfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAuYW5kKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBkaXNwbGF5X25hbWU6IHouc3RyaW5nKCkubWF4KDUwKS5vcHRpb25hbCgpLFxuICAgICAgICB0c2NpcmN1aXRfaGFuZGxlOiB0c2NpcmN1aXRIYW5kbGVTY2hlbWEub3B0aW9uYWwoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmc6IHB1YmxpY09yZ1NjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmdfaWQsIGRpc3BsYXlfbmFtZSwgdHNjaXJjdWl0X2hhbmRsZSB9ID0gcmVxLmNvbW1vblBhcmFtcyBhcyB7XG4gICAgb3JnX2lkOiBzdHJpbmdcbiAgICBkaXNwbGF5X25hbWU/OiBzdHJpbmdcbiAgICB0c2NpcmN1aXRfaGFuZGxlPzogc3RyaW5nIHwgbnVsbFxuICB9XG5cbiAgY29uc3Qgb3JnID0gY3R4LmRiLmdldE9yZyh7IG9yZ19pZCB9LCBjdHguYXV0aClcblxuICBpZiAoIW9yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZ19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JnYW5pemF0aW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIW9yZy5jYW5fbWFuYWdlX29yZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9hdXRob3JpemVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGlzIG9yZ2FuaXphdGlvblwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBObyBjaGFuZ2VzIHByb3ZpZGVkXG4gIGlmIChkaXNwbGF5X25hbWUgPT09IHVuZGVmaW5lZCAmJiB0c2NpcmN1aXRfaGFuZGxlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gY3R4Lmpzb24oeyBvcmc6IHB1YmxpY01hcE9yZyhvcmcpIH0pXG4gIH1cblxuICBpZiAodHNjaXJjdWl0X2hhbmRsZSAmJiB0c2NpcmN1aXRfaGFuZGxlICE9PSBvcmcudHNjaXJjdWl0X2hhbmRsZSkge1xuICAgIGNvbnN0IGR1cGxpY2F0ZSA9IGN0eC5kYi5nZXRPcmcoeyB0c2NpcmN1aXRfaGFuZGxlIH0pXG5cbiAgICBpZiAoZHVwbGljYXRlICYmIGR1cGxpY2F0ZS5vcmdfaWQgIT09IG9yZ19pZCkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJvcmdfdHNjaXJjdWl0X2hhbmRsZV9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgICBtZXNzYWdlOiBcIkFuIG9yZ2FuaXphdGlvbiB3aXRoIHRoaXMgdHNjaXJjdWl0X2hhbmRsZSBhbHJlYWR5IGV4aXN0c1wiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cbiAgY29uc3QgdXBkYXRlczoge1xuICAgIG9yZ19kaXNwbGF5X25hbWU/OiBzdHJpbmdcbiAgICB0c2NpcmN1aXRfaGFuZGxlPzogc3RyaW5nIHwgbnVsbFxuICB9ID0ge31cblxuICBpZiAodHNjaXJjdWl0X2hhbmRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdXBkYXRlcy50c2NpcmN1aXRfaGFuZGxlID0gdHNjaXJjdWl0X2hhbmRsZVxuICB9XG5cbiAgaWYgKGRpc3BsYXlfbmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgdHJpbW1lZERpc3BsYXlOYW1lID0gZGlzcGxheV9uYW1lLnRyaW0oKVxuICAgIGNvbnN0IGZhbGxiYWNrRGlzcGxheU5hbWUgPSBvcmcudHNjaXJjdWl0X2hhbmRsZSA/PyB1bmRlZmluZWRcbiAgICB1cGRhdGVzLm9yZ19kaXNwbGF5X25hbWUgPVxuICAgICAgdHJpbW1lZERpc3BsYXlOYW1lLmxlbmd0aCA+IDAgPyB0cmltbWVkRGlzcGxheU5hbWUgOiBmYWxsYmFja0Rpc3BsYXlOYW1lXG4gIH1cblxuICBjb25zdCB1cGRhdGVkID0gY3R4LmRiLnVwZGF0ZU9yZ2FuaXphdGlvbihvcmdfaWQsIHVwZGF0ZXMpXG5cbiAgaWYgKCF1cGRhdGVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwidXBkYXRlX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gdXBkYXRlIG9yZ2FuaXphdGlvblwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB1cGRhdGVkT3JnV2l0aFBlcm1pc3Npb25zID0gY3R4LmRiLmdldE9yZyh7IG9yZ19pZCB9LCBjdHguYXV0aClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZzogcHVibGljTWFwT3JnKHVwZGF0ZWRPcmdXaXRoUGVybWlzc2lvbnMhKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHB1YmxpY09yZ1NjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHB1YmxpY01hcE9yZyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1vcmdcIlxuXG5jb25zdCBNQVhfQVZBVEFSX0JZVEVTID0gNSAqIDEwMjQgKiAxMDI0IC8vIDVNQlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZzogcHVibGljT3JnU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBmb3JtRGF0YSA9IGF3YWl0IHJlcS5mb3JtRGF0YSgpLmNhdGNoKCgpID0+IG51bGwpXG5cbiAgaWYgKCFmb3JtRGF0YSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfZm9ybV9kYXRhXCIsXG4gICAgICBtZXNzYWdlOiBcIkV4cGVjdGVkIG11bHRpcGFydCBmb3JtIGRhdGFcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3Qgb3JnSWRWYWx1ZSA9IGZvcm1EYXRhLmdldChcIm9yZ19pZFwiKVxuICBjb25zdCBhdmF0YXJGaWxlID0gZm9ybURhdGEuZ2V0KFwiYXZhdGFyXCIpXG5cbiAgaWYgKCFvcmdJZFZhbHVlIHx8IHR5cGVvZiBvcmdJZFZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcmdfaWRcIixcbiAgICAgIG1lc3NhZ2U6IFwib3JnX2lkIGlzIHJlcXVpcmVkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG9yZyA9IGN0eC5kYi5nZXRPcmcoeyBvcmdfaWQ6IG9yZ0lkVmFsdWUgfSwgY3R4LmF1dGgpXG5cbiAgaWYgKCFvcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJvcmdfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZ2FuaXphdGlvbiBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFvcmcuY2FuX21hbmFnZV9vcmcpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJub3RfYXV0aG9yaXplZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhpcyBvcmdhbml6YXRpb25cIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCEoYXZhdGFyRmlsZSBpbnN0YW5jZW9mIEZpbGUpKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19hdmF0YXJcIixcbiAgICAgIG1lc3NhZ2U6IFwiQW4gYXZhdGFyIGZpbGUgaXMgcmVxdWlyZWRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbWltZVR5cGUgPSAoYXZhdGFyRmlsZS50eXBlICYmIGF2YXRhckZpbGUudHlwZS50cmltKCkpIHx8IFwiaW1hZ2UvcG5nXCJcblxuICBpZiAoIW1pbWVUeXBlLnN0YXJ0c1dpdGgoXCJpbWFnZS9cIikpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX2F2YXRhcl90eXBlXCIsXG4gICAgICBtZXNzYWdlOiBcIkF2YXRhciBtdXN0IGJlIGFuIGltYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGF2YXRhckJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGF3YWl0IGF2YXRhckZpbGUuYXJyYXlCdWZmZXIoKSlcblxuICBpZiAoYXZhdGFyQnVmZmVyLmJ5dGVMZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJlbXB0eV9hdmF0YXJcIixcbiAgICAgIG1lc3NhZ2U6IFwiQXZhdGFyIGZpbGUgaXMgZW1wdHlcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKGF2YXRhckJ1ZmZlci5ieXRlTGVuZ3RoID4gTUFYX0FWQVRBUl9CWVRFUykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDEzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImF2YXRhcl90b29fbGFyZ2VcIixcbiAgICAgIG1lc3NhZ2U6IFwiQXZhdGFyIGZpbGUgaXMgdG9vIGxhcmdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGJhc2U2NCA9IGF2YXRhckJ1ZmZlci50b1N0cmluZyhcImJhc2U2NFwiKVxuICBjb25zdCBkYXRhVXJsID0gYGRhdGE6JHttaW1lVHlwZX07YmFzZTY0LCR7YmFzZTY0fWBcblxuICBjb25zdCB1cGRhdGVkID0gY3R4LmRiLnVwZGF0ZU9yZ2FuaXphdGlvbihvcmdJZFZhbHVlLCB7XG4gICAgYXZhdGFyX3VybDogZGF0YVVybCxcbiAgfSlcblxuICBpZiAoIXVwZGF0ZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ1cGRhdGVfZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byB1cGRhdGUgb3JnYW5pemF0aW9uXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRPcmcgPSBjdHguZGIuZ2V0T3JnKHsgb3JnX2lkOiBvcmdJZFZhbHVlIH0sIGN0eC5hdXRoKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JnOiBwdWJsaWNNYXBPcmcodXBkYXRlZE9yZyEpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZUJ1aWxkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtYnVpbGRcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX2J1aWxkX2lkOiB6LnN0cmluZygpLFxuICAgIGluY2x1ZGVfbG9nczogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfYnVpbGQ6IHouYW55KCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9idWlsZF9pZCwgaW5jbHVkZV9sb2dzIH0gPSByZXEucXVlcnlcblxuICBpZiAoIXBhY2thZ2VfYnVpbGRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX3JlcXVlc3RcIixcbiAgICAgIG1lc3NhZ2U6IFwicGFja2FnZV9idWlsZF9pZCBpcyByZXF1aXJlZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwYWNrYWdlQnVpbGQgPSBjdHguZGIucGFja2FnZUJ1aWxkcy5maW5kKFxuICAgIChidWlsZCkgPT4gYnVpbGQucGFja2FnZV9idWlsZF9pZCA9PT0gcGFja2FnZV9idWlsZF9pZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZUJ1aWxkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9idWlsZF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBidWlsZCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VCdWlsZC5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfaWQsXG4gIClcbiAgaWYgKCFwa2cpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAocGtnLmNyZWF0b3JfYWNjb3VudF9pZCAhPT0gY3R4LmF1dGguYWNjb3VudF9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInVuYXV0aG9yaXplZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIGFjY2VzcyB0aGlzIHBhY2thZ2UgYnVpbGRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcHVibGljQnVpbGQgPSBwdWJsaWNNYXBQYWNrYWdlQnVpbGQocGFja2FnZUJ1aWxkLCB7XG4gICAgaW5jbHVkZV9sb2dzLFxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgcGFja2FnZV9idWlsZDogcHVibGljQnVpbGQsXG4gIH0pXG59KVxuIiwgImltcG9ydCAqIGFzIFpUIGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGNvbnN0IHB1YmxpY01hcFBhY2thZ2VCdWlsZCA9IChcbiAgaW50ZXJuYWxQYWNrYWdlQnVpbGQ6IFpULlBhY2thZ2VCdWlsZCAmIHtcbiAgICB1c2VyX2NvZGVfam9iX2Vycm9yPzogYW55IHwgbnVsbFxuICAgIHVzZXJfY29kZV9qb2JfY29tcGxldGVkX2F0Pzogc3RyaW5nIHwgbnVsbFxuICAgIHVzZXJfY29kZV9qb2JfY29tcGxldGVkX2xvZ3M/OiBhbnkgfCBudWxsXG4gICAgdXNlcl9jb2RlX2pvYl9sb2dfc3RyZWFtX3VybD86IHN0cmluZyB8IG51bGxcbiAgICB1c2VyX2NvZGVfam9iX3N0YXJ0ZWRfYXQ/OiBzdHJpbmcgfCBudWxsXG4gIH0sXG4gIG9wdGlvbnM6IHtcbiAgICBpbmNsdWRlX2xvZ3M/OiBib29sZWFuXG4gIH0gPSB7XG4gICAgaW5jbHVkZV9sb2dzOiBmYWxzZSxcbiAgfSxcbik6IFpULlBhY2thZ2VCdWlsZCA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAuLi5pbnRlcm5hbFBhY2thZ2VCdWlsZCxcbiAgICBjcmVhdGVkX2F0OiBpbnRlcm5hbFBhY2thZ2VCdWlsZC5jcmVhdGVkX2F0LFxuICAgIHRyYW5zcGlsYXRpb25fc3RhcnRlZF9hdDogaW50ZXJuYWxQYWNrYWdlQnVpbGQudHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0LFxuICAgIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiBpbnRlcm5hbFBhY2thZ2VCdWlsZC50cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdCxcbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzXG4gICAgICA/IGludGVybmFsUGFja2FnZUJ1aWxkLnRyYW5zcGlsYXRpb25fbG9nc1xuICAgICAgOiBudWxsLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IGludGVybmFsUGFja2FnZUJ1aWxkLnRyYW5zcGlsYXRpb25fZXJyb3IsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQ6XG4gICAgICBpbnRlcm5hbFBhY2thZ2VCdWlsZC5jaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfY29tcGxldGVkX2F0OlxuICAgICAgaW50ZXJuYWxQYWNrYWdlQnVpbGQuY2lyY3VpdF9qc29uX2J1aWxkX2NvbXBsZXRlZF9hdCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfbG9nczogb3B0aW9ucy5pbmNsdWRlX2xvZ3NcbiAgICAgID8gaW50ZXJuYWxQYWNrYWdlQnVpbGQuY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3NcbiAgICAgIDogbnVsbCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3I6IGludGVybmFsUGFja2FnZUJ1aWxkLmNpcmN1aXRfanNvbl9idWlsZF9lcnJvcixcbiAgICBpbWFnZV9nZW5lcmF0aW9uX2luX3Byb2dyZXNzOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlQnVpbGQuaW1hZ2VfZ2VuZXJhdGlvbl9pbl9wcm9ncmVzcyxcbiAgICBpbWFnZV9nZW5lcmF0aW9uX3N0YXJ0ZWRfYXQ6XG4gICAgICBpbnRlcm5hbFBhY2thZ2VCdWlsZC5pbWFnZV9nZW5lcmF0aW9uX3N0YXJ0ZWRfYXQsXG4gICAgaW1hZ2VfZ2VuZXJhdGlvbl9jb21wbGV0ZWRfYXQ6XG4gICAgICBpbnRlcm5hbFBhY2thZ2VCdWlsZC5pbWFnZV9nZW5lcmF0aW9uX2NvbXBsZXRlZF9hdCxcbiAgICBpbWFnZV9nZW5lcmF0aW9uX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzXG4gICAgICA/IGludGVybmFsUGFja2FnZUJ1aWxkLmltYWdlX2dlbmVyYXRpb25fbG9nc1xuICAgICAgOiBudWxsLFxuICAgIGltYWdlX2dlbmVyYXRpb25fZXJyb3I6IGludGVybmFsUGFja2FnZUJ1aWxkLmltYWdlX2dlbmVyYXRpb25fZXJyb3IsXG4gICAgYnVpbGRfc3RhcnRlZF9hdDogaW50ZXJuYWxQYWNrYWdlQnVpbGQuYnVpbGRfc3RhcnRlZF9hdCxcbiAgICBidWlsZF9jb21wbGV0ZWRfYXQ6IGludGVybmFsUGFja2FnZUJ1aWxkLmJ1aWxkX2NvbXBsZXRlZF9hdCxcbiAgICBidWlsZF9lcnJvcjogaW50ZXJuYWxQYWNrYWdlQnVpbGQuYnVpbGRfZXJyb3IsXG4gICAgYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OlxuICAgICAgaW50ZXJuYWxQYWNrYWdlQnVpbGQuYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0LFxuICAgIHByZXZpZXdfdXJsOiBpbnRlcm5hbFBhY2thZ2VCdWlsZC5wcmV2aWV3X3VybCxcbiAgICBidWlsZF9sb2dzOiBvcHRpb25zLmluY2x1ZGVfbG9ncyA/IGludGVybmFsUGFja2FnZUJ1aWxkLmJ1aWxkX2xvZ3MgOiBudWxsLFxuICAgIHVzZXJfY29kZV9zdGFydGVkX2F0OiBpbnRlcm5hbFBhY2thZ2VCdWlsZC51c2VyX2NvZGVfam9iX3N0YXJ0ZWRfYXQgPz8gbnVsbCxcbiAgICB1c2VyX2NvZGVfY29tcGxldGVkX2F0OlxuICAgICAgaW50ZXJuYWxQYWNrYWdlQnVpbGQudXNlcl9jb2RlX2pvYl9jb21wbGV0ZWRfYXQgPz8gbnVsbCxcbiAgICB1c2VyX2NvZGVfZXJyb3I6IGludGVybmFsUGFja2FnZUJ1aWxkLnVzZXJfY29kZV9qb2JfZXJyb3IgPz8gbnVsbCxcbiAgICB1c2VyX2NvZGVfYnVpbGRfbG9nczogb3B0aW9ucy5pbmNsdWRlX2xvZ3NcbiAgICAgID8gaW50ZXJuYWxQYWNrYWdlQnVpbGQudXNlcl9jb2RlX2pvYl9jb21wbGV0ZWRfbG9nc1xuICAgICAgOiBudWxsLFxuICAgIHVzZXJfY29kZV9sb2dfc3RyZWFtX3VybDpcbiAgICAgIGludGVybmFsUGFja2FnZUJ1aWxkLnVzZXJfY29kZV9qb2JfbG9nX3N0cmVhbV91cmwgPz8gbnVsbCxcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZUJ1aWxkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtYnVpbGRcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX2J1aWxkczogei5hcnJheSh6LmFueSgpKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkLCBwYWNrYWdlX3JlbGVhc2VfaWQgfSA9IHJlcS5xdWVyeVxuICBpZiAoIXBhY2thZ2VfaWQgJiYgIXBhY2thZ2VfcmVsZWFzZV9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfcmVxdWVzdFwiLFxuICAgICAgbWVzc2FnZTogXCJFaXRoZXIgcGFja2FnZV9pZCBvciBwYWNrYWdlX3JlbGVhc2VfaWQgbXVzdCBiZSBwcm92aWRlZFwiLFxuICAgIH0pXG4gIH1cblxuICBsZXQgdGFyZ2V0UGFja2FnZUlkID0gcGFja2FnZV9pZFxuXG4gIGlmIChwYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuICAgIHRhcmdldFBhY2thZ2VJZCA9IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfaWRcbiAgfVxuXG4gIGlmICh0YXJnZXRQYWNrYWdlSWQpIHtcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5wYWNrYWdlX2lkID09PSB0YXJnZXRQYWNrYWdlSWQpXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHBrZy5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwidW5hdXRob3JpemVkXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBhY2Nlc3MgdGhpcyBwYWNrYWdlXCIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGxldCBidWlsZHMgPSBjdHguZGIucGFja2FnZUJ1aWxkc1xuXG4gIGlmIChwYWNrYWdlX2lkKSB7XG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2VzID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maWx0ZXIoXG4gICAgICAoeCkgPT4geC5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkLFxuICAgIClcbiAgICBpZiAocGFja2FnZVJlbGVhc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlSWRzID0gcGFja2FnZVJlbGVhc2VzXG4gICAgICAuZmlsdGVyKChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZClcbiAgICAgIC5tYXAoKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQpXG5cbiAgICBidWlsZHMgPSBidWlsZHMuZmlsdGVyKChidWlsZCkgPT5cbiAgICAgIHBhY2thZ2VSZWxlYXNlSWRzLmluY2x1ZGVzKGJ1aWxkLnBhY2thZ2VfcmVsZWFzZV9pZCksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBhY2thZ2VfcmVsZWFzZV9pZCkge1xuICAgIGJ1aWxkcyA9IGJ1aWxkcy5maWx0ZXIoXG4gICAgICAoYnVpbGQpID0+IGJ1aWxkLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcbiAgfVxuXG4gIGJ1aWxkcyA9IGJ1aWxkcy5zb3J0KFxuICAgIChhLCBiKSA9PlxuICAgICAgbmV3IERhdGUoYi5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSxcbiAgKVxuXG4gIGNvbnN0IHB1YmxpY0J1aWxkcyA9IGJ1aWxkcy5tYXAoKGJ1aWxkKSA9PlxuICAgIHB1YmxpY01hcFBhY2thZ2VCdWlsZChidWlsZCwge1xuICAgICAgaW5jbHVkZV9sb2dzOiBmYWxzZSxcbiAgICB9KSxcbiAgKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgcGFja2FnZV9idWlsZHM6IHB1YmxpY0J1aWxkcyxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgUGFja2FnZSwgUGFja2FnZVJlbGVhc2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBjb25zdCBmaW5kUGFja2FnZVJlbGVhc2VJZCA9IGFzeW5jIChcbiAgcGFyYW1zOlxuICAgIHwgc3RyaW5nXG4gICAgfCB7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogc3RyaW5nXG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHBhY2thZ2VfbmFtZTogc3RyaW5nXG4gICAgICAgIHVzZV9sYXRlc3RfdmVyc2lvbjogdHJ1ZVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiBzdHJpbmdcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkPzogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24/OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgIH0sXG4gIGN0eDogeyBkYjogYW55IH0sXG4pOiBQcm9taXNlPHN0cmluZyB8IG51bGw+ID0+IHtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gZmluZFBhY2thZ2VSZWxlYXNlSWRGcm9tUGFja2FnZU5hbWVXaXRoVmVyc2lvbihwYXJhbXMsIGN0eC5kYilcbiAgfVxuXG4gIGlmIChcbiAgICBcInBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIiBpbiBwYXJhbXMgJiZcbiAgICBwYXJhbXMucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblxuICApIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24gfSA9IHBhcmFtc1xuXG4gICAgaWYgKHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uZW5kc1dpdGgoXCJAbGF0ZXN0XCIpKSB7XG4gICAgICBjb25zdCBbcGFja2FnZU5hbWVdID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilcbiAgICAgIHJldHVybiBmaW5kUGFja2FnZVJlbGVhc2VJZChcbiAgICAgICAge1xuICAgICAgICAgIHBhY2thZ2VfbmFtZTogcGFja2FnZU5hbWUhLFxuICAgICAgICAgIHVzZV9sYXRlc3RfdmVyc2lvbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY3R4LFxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gZmluZFBhY2thZ2VSZWxlYXNlSWRGcm9tUGFja2FnZU5hbWVXaXRoVmVyc2lvbihcbiAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24hLFxuICAgICAgY3R4LmRiLFxuICAgIClcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfcmVsZWFzZV9pZFwiIGluIHBhcmFtcyAmJiBwYXJhbXMucGFja2FnZV9yZWxlYXNlX2lkKSB7XG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHI6IFBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhcmFtcy5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBwYXJhbXMucGFja2FnZV9yZWxlYXNlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX25hbWVcIiBpbiBwYXJhbXMpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZSwgdXNlX2xhdGVzdF92ZXJzaW9uIH0gPSBwYXJhbXNcblxuICAgIGlmICghdXNlX2xhdGVzdF92ZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VfbGF0ZXN0X3ZlcnNpb24gbXVzdCBiZSB0cnVlXCIpXG4gICAgfVxuXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocDogUGFja2FnZSkgPT4gcC5uYW1lID09PSBwYWNrYWdlX25hbWUucmVwbGFjZSgvXkAvLCBcIlwiKSxcbiAgICApXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHI6IFBhY2thZ2VSZWxlYXNlKSA9PiBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci5pc19sYXRlc3QsXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgZmluZFBhY2thZ2VSZWxlYXNlSWRGcm9tUGFja2FnZU5hbWVXaXRoVmVyc2lvbiA9IChcbiAgcGFja2FnZU5hbWVXaXRoVmVyc2lvbjogc3RyaW5nLFxuICBkYjogYW55LFxuKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGlmICghcGFja2FnZU5hbWVXaXRoVmVyc2lvbikgcmV0dXJuIG51bGxcblxuICBjb25zdCBbcGFja2FnZU5hbWUsIHZlcnNpb25dID0gcGFja2FnZU5hbWVXaXRoVmVyc2lvblxuICAgIC5yZXBsYWNlKC9eQC8sIFwiXCIpXG4gICAgLnNwbGl0KFwiQFwiKVxuXG4gIGNvbnN0IHBrZyA9IGRiLnBhY2thZ2VzLmZpbmQoKHA6IFBhY2thZ2UpID0+IHAubmFtZSA9PT0gcGFja2FnZU5hbWUpXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGxldCBwYWNrYWdlUmVsZWFzZVxuXG4gIGlmICghdmVyc2lvbiB8fCB2ZXJzaW9uID09PSBcImxhdGVzdFwiKSB7XG4gICAgcGFja2FnZVJlbGVhc2UgPSBkYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgcGFja2FnZVJlbGVhc2UgPSBkYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgKVxuICB9XG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG59XG4iLCAiaW1wb3J0ICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZmluZFBhY2thZ2VSZWxlYXNlSWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfcmVsZWFzZS9maW5kLXBhY2thZ2UtcmVsZWFzZS1pZFwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICAgIGNvbnRlbnRfbWltZXR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF9iYXNlNjQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbnBtX3BhY2tfb3V0cHV0OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQpIHJldHVybiB0cnVlXG4gICAgICBpZiAodi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gdHJ1ZVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgXCJNdXN0IHNwZWNpZnkgZWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkICYmIHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiQ2Fubm90IHNwZWNpZnkgYm90aCBwYWNrYWdlX3JlbGVhc2VfaWQgYW5kIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5jb250ZW50X2Jhc2U2NCAmJiB2LmNvbnRlbnRfdGV4dCkgcmV0dXJuIGZhbHNlXG4gICAgICBpZiAoIXYuY29udGVudF9iYXNlNjQgJiYgdi5jb250ZW50X3RleHQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiRWl0aGVyIGNvbnRlbnRfYmFzZTY0IG9yIGNvbnRlbnRfdGV4dCBpcyByZXF1aXJlZFwiKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VfZmlsZTogenQucGFja2FnZUZpbGVTY2hlbWEsXG4gIH0pLFxufSBhcyBjb25zdFxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHJvdXRlU3BlYykoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWxlX3BhdGgsXG4gICAgY29udGVudF9taW1ldHlwZTogcHJvdmlkZWRDb250ZW50TWltZXR5cGUsXG4gICAgY29udGVudF9iYXNlNjQsXG4gICAgY29udGVudF90ZXh0LFxuICAgIGlzX3JlbGVhc2VfdGFyYmFsbCxcbiAgICBucG1fcGFja19vdXRwdXQsXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBpZiAoaXNfcmVsZWFzZV90YXJiYWxsICYmICFucG1fcGFja19vdXRwdXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtaXNzaW5nX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwibnBtX3BhY2tfb3V0cHV0IGlzIHJlcXVpcmVkIGZvciByZWxlYXNlIHRhcmJhbGxzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmICghaXNfcmVsZWFzZV90YXJiYWxsICYmIG5wbV9wYWNrX291dHB1dCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfb3B0aW9uc1wiLFxuICAgICAgbWVzc2FnZTogXCJucG1fcGFja19vdXRwdXQgaXMgb25seSB2YWxpZCBmb3IgcmVsZWFzZSB0YXJiYWxsc1wiLFxuICAgIH0pXG4gIH1cblxuICBsZXQgcGFja2FnZVJlbGVhc2VJZCA9IHJlcS5qc29uQm9keS5wYWNrYWdlX3JlbGVhc2VfaWRcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQgJiYgcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHtcbiAgICBjb25zdCBmb3VuZFBhY2thZ2VSZWxlYXNlSWQgPSBhd2FpdCBmaW5kUGFja2FnZVJlbGVhc2VJZChcbiAgICAgIHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24gfSxcbiAgICAgIGN0eCxcbiAgICApXG4gICAgaWYgKGZvdW5kUGFja2FnZVJlbGVhc2VJZCkge1xuICAgICAgcGFja2FnZVJlbGVhc2VJZCA9IGZvdW5kUGFja2FnZVJlbGVhc2VJZFxuICAgIH1cbiAgfVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBWZXJpZnkgdGhlIHBhY2thZ2UgcmVsZWFzZSBleGlzdHNcbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgcGFja2FnZSB0byBjaGVjayBwZXJtaXNzaW9uc1xuICBjb25zdCBleGlzdGluZ1BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKCFleGlzdGluZ1BhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGNyZWF0ZS91cGRhdGUgdGhlIGZpbGVcbiAgaWYgKGV4aXN0aW5nUGFja2FnZS5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBtb2RpZnkgZmlsZXMgaW4gdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGZpbGUgZXhpc3RzXG4gIGNvbnN0IGV4aXNpdGluZ0ZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKHBmKSA9PlxuICAgICAgcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkICYmIHBmLmZpbGVfcGF0aCA9PT0gZmlsZV9wYXRoLFxuICApXG5cbiAgLy8gRGV0ZXJtaW5lIGNvbnRlbnQgbWltZXR5cGVcbiAgY29uc3QgY29udGVudE1pbWV0eXBlID1cbiAgICBwcm92aWRlZENvbnRlbnRNaW1ldHlwZSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIudHNcIikgfHwgZmlsZV9wYXRoLmVuZHNXaXRoKFwiLnRzeFwiKVxuICAgICAgPyBcInRleHQvdHlwZXNjcmlwdFwiXG4gICAgICA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5qc1wiKSA/IFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmpzb25cIikgPyBcImFwcGxpY2F0aW9uL2pzb25cIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5tZFwiKSA/IFwidGV4dC9tYXJrZG93blwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmh0bWxcIikgPyBcInRleHQvaHRtbFwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmNzc1wiKSA/IFwidGV4dC9jc3NcIiA6IG51bGwpIHx8XG4gICAgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIlxuXG4gIGlmIChleGlzaXRpbmdGaWxlKSB7XG4gICAgY29uc3QgcGFja2FnZV9maWxlID0gY3R4LmRiLnVwZGF0ZVBhY2thZ2VGaWxlKFxuICAgICAgZXhpc2l0aW5nRmlsZS5wYWNrYWdlX2ZpbGVfaWQsXG4gICAgICB7XG4gICAgICAgIGNvbnRlbnRfdGV4dDpcbiAgICAgICAgICBjb250ZW50X3RleHQgPz9cbiAgICAgICAgICAoY29udGVudF9iYXNlNjRcbiAgICAgICAgICAgID8gQnVmZmVyLmZyb20oY29udGVudF9iYXNlNjQsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKClcbiAgICAgICAgICAgIDogbnVsbCksXG4gICAgICAgIGNvbnRlbnRfbWltZXR5cGU6IGNvbnRlbnRNaW1ldHlwZSxcbiAgICAgICAgaXNfcmVsZWFzZV90YXJiYWxsOiBpc19yZWxlYXNlX3RhcmJhbGwgfHwgZmFsc2UsXG4gICAgICAgIG5wbV9wYWNrX291dHB1dDogbnBtX3BhY2tfb3V0cHV0IHx8IG51bGwsXG4gICAgICB9LFxuICAgIClcblxuICAgIC8vIFVwZGF0ZSBmc19zaGEgZm9yIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBjdHguZGIudXBkYXRlUGFja2FnZVJlbGVhc2VGc1NoYShwYWNrYWdlUmVsZWFzZUlkKVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9maWxlLFxuICAgIH0pXG4gIH1cblxuICBpZiAoXG4gICAgIXJlcS5qc29uQm9keS5wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAhcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cbiAgKVxuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm1pc3Npbmdfb3B0aW9uc1wiLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgXCJNdXN0IHNwZWNpZnkgZWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIsXG4gICAgfSlcbiAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIGZpbGVcbiAgY29uc3QgbmV3UGFja2FnZUZpbGUgPSB7XG4gICAgcGFja2FnZV9maWxlX2lkOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZCxcbiAgICBmaWxlX3BhdGgsXG4gICAgY29udGVudF90ZXh0OlxuICAgICAgY29udGVudF90ZXh0ID8/XG4gICAgICAoY29udGVudF9iYXNlNjRcbiAgICAgICAgPyBCdWZmZXIuZnJvbShjb250ZW50X2Jhc2U2NCwgXCJiYXNlNjRcIikudG9TdHJpbmcoKVxuICAgICAgICA6IG51bGwpLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IGNvbnRlbnRNaW1ldHlwZSxcbiAgICBpc19kaXJlY3Rvcnk6IGZhbHNlLFxuICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogaXNfcmVsZWFzZV90YXJiYWxsIHx8IGZhbHNlLFxuICAgIG5wbV9wYWNrX291dHB1dDogbnBtX3BhY2tfb3V0cHV0IHx8IG51bGwsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9XG5cbiAgLy8gQWRkIHRvIHRoZSB0ZXN0IGRhdGFiYXNlXG4gIGN0eC5kYi5hZGRQYWNrYWdlRmlsZShuZXdQYWNrYWdlRmlsZSlcblxuICAvLyBVcGRhdGUgZnNfc2hhIGZvciB0aGUgcGFja2FnZSByZWxlYXNlXG4gIGN0eC5kYi51cGRhdGVQYWNrYWdlUmVsZWFzZUZzU2hhKHBhY2thZ2VSZWxlYXNlSWQpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX2ZpbGU6IG5ld1BhY2thZ2VGaWxlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgKiBhcyB6dCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgaXNfcmVsZWFzZV90YXJiYWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgICAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb250ZW50X2Jhc2U2NDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBucG1fcGFja19vdXRwdXQ6IHouYW55KCkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnBhY2thZ2VfcmVsZWFzZV9pZCkgcmV0dXJuIHRydWVcbiAgICAgIGlmICh2LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBcIk11c3Qgc3BlY2lmeSBlaXRoZXIgcGFja2FnZV9yZWxlYXNlX2lkIG9yIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQgJiYgdi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJDYW5ub3Qgc3BlY2lmeSBib3RoIHBhY2thZ2VfcmVsZWFzZV9pZCBhbmQgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiKVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LmNvbnRlbnRfYmFzZTY0ICYmIHYuY29udGVudF90ZXh0KSByZXR1cm4gZmFsc2VcbiAgICAgIGlmICghdi5jb250ZW50X2Jhc2U2NCAmJiAhdi5jb250ZW50X3RleHQpIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcIkVpdGhlciBjb250ZW50X2Jhc2U2NCBvciBjb250ZW50X3RleHQgaXMgcmVxdWlyZWRcIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX2ZpbGU6IHp0LnBhY2thZ2VGaWxlU2NoZW1hLFxuICB9KSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IHByb3ZpZGVkQ29udGVudE1pbWV0eXBlLFxuICAgIGNvbnRlbnRfYmFzZTY0LFxuICAgIGNvbnRlbnRfdGV4dCxcbiAgICBpc19yZWxlYXNlX3RhcmJhbGwsXG4gICAgbnBtX3BhY2tfb3V0cHV0LFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgaWYgKGlzX3JlbGVhc2VfdGFyYmFsbCAmJiAhbnBtX3BhY2tfb3V0cHV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcIm5wbV9wYWNrX291dHB1dCBpcyByZXF1aXJlZCBmb3IgcmVsZWFzZSB0YXJiYWxsc1wiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIWlzX3JlbGVhc2VfdGFyYmFsbCAmJiBucG1fcGFja19vdXRwdXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwibnBtX3BhY2tfb3V0cHV0IGlzIG9ubHkgdmFsaWQgZm9yIHJlbGVhc2UgdGFyYmFsbHNcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlSWQgPSByZXEuanNvbkJvZHkucGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkICYmIHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSB7XG4gICAgY29uc3QgZm91bmRQYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQoXG4gICAgICByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgICAgIGN0eCxcbiAgICApXG4gICAgaWYgKGZvdW5kUGFja2FnZVJlbGVhc2VJZCkge1xuICAgICAgcGFja2FnZVJlbGVhc2VJZCA9IGZvdW5kUGFja2FnZVJlbGVhc2VJZFxuICAgIH1cbiAgfVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBWZXJpZnkgdGhlIHBhY2thZ2UgcmVsZWFzZSBleGlzdHNcbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIERldGVybWluZSBjb250ZW50IG1pbWV0eXBlXG4gIGNvbnN0IGNvbnRlbnRNaW1ldHlwZSA9XG4gICAgcHJvdmlkZWRDb250ZW50TWltZXR5cGUgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLnRzXCIpIHx8IGZpbGVfcGF0aC5lbmRzV2l0aChcIi50c3hcIilcbiAgICAgID8gXCJ0ZXh0L3R5cGVzY3JpcHRcIlxuICAgICAgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuanNcIikgPyBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5qc29uXCIpID8gXCJhcHBsaWNhdGlvbi9qc29uXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIubWRcIikgPyBcInRleHQvbWFya2Rvd25cIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5odG1sXCIpID8gXCJ0ZXh0L2h0bWxcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5jc3NcIikgPyBcInRleHQvY3NzXCIgOiBudWxsKSB8fFxuICAgIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcblxuICAvLyBDcmVhdGUgdGhlIHBhY2thZ2UgZmlsZVxuICBjb25zdCBuZXdQYWNrYWdlRmlsZSA9IHtcbiAgICBwYWNrYWdlX2ZpbGVfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkLFxuICAgIGZpbGVfcGF0aCxcbiAgICBjb250ZW50X3RleHQ6XG4gICAgICBjb250ZW50X3RleHQgfHxcbiAgICAgIChjb250ZW50X2Jhc2U2NFxuICAgICAgICA/IEJ1ZmZlci5mcm9tKGNvbnRlbnRfYmFzZTY0LCBcImJhc2U2NFwiKS50b1N0cmluZygpXG4gICAgICAgIDogbnVsbCksXG4gICAgY29udGVudF9taW1ldHlwZTogY29udGVudE1pbWV0eXBlLFxuICAgIGlzX2RpcmVjdG9yeTogZmFsc2UsXG4gICAgaXNfcmVsZWFzZV90YXJiYWxsOiBpc19yZWxlYXNlX3RhcmJhbGwgfHwgZmFsc2UsXG4gICAgbnBtX3BhY2tfb3V0cHV0OiBucG1fcGFja19vdXRwdXQgfHwgbnVsbCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH1cblxuICAvLyBBZGQgdG8gdGhlIHRlc3QgZGF0YWJhc2VcbiAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKG5ld1BhY2thZ2VGaWxlKVxuXG4gIC8vIFVwZGF0ZSBmc19zaGEgZm9yIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgY3R4LmRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlRnNTaGEocGFja2FnZVJlbGVhc2VJZClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZTogbmV3UGFja2FnZUZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQpIHJldHVybiB0cnVlXG4gICAgICBpZiAodi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gdHJ1ZVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgXCJNdXN0IHNwZWNpZnkgZWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkICYmIHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiQ2Fubm90IHNwZWNpZnkgYm90aCBwYWNrYWdlX3JlbGVhc2VfaWQgYW5kIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBmaWxlX3BhdGggfSA9IHJlcS5qc29uQm9keVxuXG4gIGxldCBwYWNrYWdlUmVsZWFzZUlkID0gcmVxLmpzb25Cb2R5LnBhY2thZ2VfcmVsZWFzZV9pZFxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCAmJiByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikge1xuICAgIGNvbnN0IGZvdW5kUGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgICBjdHgsXG4gICAgKVxuICAgIGlmIChmb3VuZFBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlSWQgPSBmb3VuZFBhY2thZ2VSZWxlYXNlSWRcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2UgdG8gY2hlY2sgcGVybWlzc2lvbnNcbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgcGFja2FnZSB0byBjaGVjayBwZXJtaXNzaW9uc1xuICBjb25zdCBleGlzdGluZ3BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKCFleGlzdGluZ3BhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGUgZmlsZVxuICBpZiAoZXhpc3RpbmdwYWNrYWdlLmNyZWF0b3JfYWNjb3VudF9pZCAhPT0gY3R4LmF1dGguYWNjb3VudF9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBmaWxlcyBpbiB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gRmluZCB0aGUgZmlsZVxuICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT5cbiAgICAgIGYuZmlsZV9wYXRoID09PSBmaWxlX3BhdGggJiYgZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZmlsZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBEZWxldGUgdGhlIGZpbGUgdXNpbmcgZGVsZXRlUGFja2FnZUZpbGUgbWV0aG9kXG4gIGNvbnN0IGRlbGV0ZWQgPSBjdHguZGIuZGVsZXRlUGFja2FnZUZpbGUocGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkKVxuXG4gIGlmICghZGVsZXRlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZpbGVfZGVsZXRpb25fZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byBkZWxldGUgcGFja2FnZSBmaWxlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFVwZGF0ZSBmc19zaGEgZm9yIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgY3R4LmRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlRnNTaGEocGFja2FnZVJlbGVhc2VJZClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBOb3RGb3VuZEVycm9yIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQgKiBhcyBaVCBmcm9tIFwiLi4vZGIvc2NoZW1hXCJcbmltcG9ydCB7IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9ub3JtYWxpemVQcm9qZWN0RmlsZVBhdGhcIlxuZXhwb3J0IGNvbnN0IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IgPSBhc3luYyAoXG4gIGRlc2NyaXB0b3I6XG4gICAgfCB7IHBhY2thZ2VfZmlsZV9pZDogc3RyaW5nIH1cbiAgICB8IHsgcGFja2FnZV9yZWxlYXNlX2lkOiBzdHJpbmc7IGZpbGVfcGF0aDogc3RyaW5nIH1cbiAgICB8IHsgcGFja2FnZV9pZDogc3RyaW5nOyB2ZXJzaW9uPzogc3RyaW5nOyBmaWxlX3BhdGg6IHN0cmluZyB9XG4gICAgfCB7IHBhY2thZ2VfbmFtZTogc3RyaW5nOyB2ZXJzaW9uPzogc3RyaW5nOyBmaWxlX3BhdGg6IHN0cmluZyB9XG4gICAgfCB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHN0cmluZzsgZmlsZV9wYXRoOiBzdHJpbmcgfSxcbiAgY3R4OiB7IGRiOiBhbnkgfSxcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGlmIChcInBhY2thZ2VfZmlsZV9pZFwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+IHBmLnBhY2thZ2VfZmlsZV9pZCA9PT0gZGVzY3JpcHRvci5wYWNrYWdlX2ZpbGVfaWQsXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2NyaXB0b3IucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX3JlbGVhc2VfaWRcIiBpbiBkZXNjcmlwdG9yKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQsIGZpbGVfcGF0aCB9ID0gZGVzY3JpcHRvclxuICAgIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT5cbiAgICAgICAgcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKHBmLmZpbGVfcGF0aCkgPT09XG4gICAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKGZpbGVfcGF0aCksXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhY2thZ2VGaWxlLnBhY2thZ2VfZmlsZV9pZFxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9pZFwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfaWQsIHZlcnNpb24sIGZpbGVfcGF0aCB9ID0gZGVzY3JpcHRvclxuXG4gICAgLy8gVmVyaWZ5IHBhY2thZ2UgZXhpc3RzXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocDogWlQuUGFja2FnZSkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkLFxuICAgIClcbiAgICBpZiAoIXBrZykge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGxldCBwYWNrYWdlUmVsZWFzZVxuICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PiBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBmaWxlXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX25hbWVcIiBpbiBkZXNjcmlwdG9yKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX25hbWUsIHZlcnNpb24sIGZpbGVfcGF0aCB9ID0gZGVzY3JpcHRvclxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZSBmaXJzdFxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwOiBaVC5QYWNrYWdlKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VfbmFtZSlcbiAgICBpZiAoIXBrZykge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFBhY2thZ2Ugbm90IGZvdW5kOiAke3BhY2thZ2VfbmFtZX1gKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGxldCBwYWNrYWdlUmVsZWFzZVxuICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci52ZXJzaW9uID09PSB2ZXJzaW9uLFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci5pc19sYXRlc3QsXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgZmlsZVxuICAgIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT5cbiAgICAgICAgcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKHBmLmZpbGVfcGF0aCkgPT09XG4gICAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKGZpbGVfcGF0aCksXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhY2thZ2VGaWxlLnBhY2thZ2VfZmlsZV9pZFxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sIGZpbGVfcGF0aCB9ID0gZGVzY3JpcHRvclxuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilbMF1cbiAgICBjb25zdCB2ZXJzaW9uID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilbMV1cblxuICAgIC8vIEZpbmQgdGhlIHBhY2thZ2VcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocDogWlQuUGFja2FnZSkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgICBpZiAoIXBrZykge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFBhY2thZ2Ugbm90IGZvdW5kOiAke3BhY2thZ2VOYW1lfWApXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgbGV0IHBhY2thZ2VSZWxlYXNlXG4gICAgaWYgKCF2ZXJzaW9uIHx8IHZlcnNpb24gPT09IFwibGF0ZXN0XCIpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcbiAgICAgICAgYFBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmQgZm9yIHZlcnNpb246ICR7dmVyc2lvbiB8fCBcImxhdGVzdFwifWAsXG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgZmlsZVxuICAgIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT5cbiAgICAgICAgcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKHBmLmZpbGVfcGF0aCkgPT09XG4gICAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKGZpbGVfcGF0aCksXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFBhY2thZ2UgZmlsZSBub3QgZm91bmQ6ICR7ZmlsZV9wYXRofWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhY2thZ2VGaWxlLnBhY2thZ2VfZmlsZV9pZFxuICB9XG5cbiAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJJbnZhbGlkIHBhY2thZ2UgZmlsZSBkZXNjcmlwdG9yXCIpXG59XG4iLCAiaW1wb3J0IHsgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvciB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9maWxlL2dldC1wYWNrYWdlLWZpbGUtaWQtZnJvbS1maWxlLWRlc2NyaXB0b3JcIlxuaW1wb3J0IHsgZmluZFBhY2thZ2VSZWxlYXNlSWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfcmVsZWFzZS9maW5kLXBhY2thZ2UtcmVsZWFzZS1pZFwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKSxcbiAgICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgfSksXG4gICAgKSxcbiAganNvblJlc3BvbnNlOiB6LmFueSgpLCAvLyBVc2luZyBhbnkgYmVjYXVzZSB3ZSdyZSByZXR1cm5pbmcgYmluYXJ5IGRhdGFcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQgcGFja2FnZUZpbGVJZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGNvbnN0IHBhcmFtcyA9IHJlcS5xdWVyeVxuXG4gIGlmIChcInBhY2thZ2VfZmlsZV9pZFwiIGluIHBhcmFtcykge1xuICAgIHBhY2thZ2VGaWxlSWQgPSBwYXJhbXMucGFja2FnZV9maWxlX2lkXG4gIH0gZWxzZSBpZiAoXCJwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIgaW4gcGFyYW1zKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLCBmaWxlX3BhdGggfSA9IHBhcmFtc1xuXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgICAgIGN0eCxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwibm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcGFja2FnZUZpbGVJZCA9IGF3YWl0IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IoXG4gICAgICAgIHtcbiAgICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgICAgICAgZmlsZV9wYXRoOiBmaWxlX3BhdGgsXG4gICAgICAgIH0sXG4gICAgICAgIGN0eCxcbiAgICAgIClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGlmICghcGFja2FnZUZpbGVJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImJhZF9yZXF1ZXN0XCIsXG4gICAgICBtZXNzYWdlOiBcIkNvdWxkIG5vdCBkZXRlcm1pbmUgcGFja2FnZV9maWxlX2lkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChwZikgPT4gcGYucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgXCJDb250ZW50LVR5cGVcIjpcbiAgICAgIHBhY2thZ2VGaWxlLmNvbnRlbnRfbWltZXR5cGUgfHxcbiAgICAgIChwYWNrYWdlRmlsZS5jb250ZW50X3RleHRcbiAgICAgICAgPyBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIlxuICAgICAgICA6IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIpLFxuICAgIFwiQ29udGVudC1EaXNwb3NpdGlvblwiOiBgYXR0YWNobWVudDsgZmlsZW5hbWU9XCIke3BhY2thZ2VGaWxlLmZpbGVfcGF0aC5zcGxpdChcIi9cIikucG9wKCl9XCJgLFxuICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT04NjQwMCwgc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZT02MDQ4MDBcIixcbiAgICBFeHBpcmVzOiBuZXcgRGF0ZShEYXRlLm5vdygpICsgODY0MDAwMDApLnRvVVRDU3RyaW5nKCksXG4gIH1cblxuICAvLyBSZXR1cm4gdGV4dCBjb250ZW50IGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGJpbmFyeSBjb250ZW50XG4gIGlmIChwYWNrYWdlRmlsZS5jb250ZW50X3RleHQpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHBhY2thZ2VGaWxlLmNvbnRlbnRfdGV4dCwgeyBoZWFkZXJzIH0pXG4gIH1cblxuICAvLyBDb252ZXJ0IEJ1ZmZlciB0byBVaW50OEFycmF5IGZvciBSZXNwb25zZSBjb21wYXRpYmlsaXR5XG4gIGNvbnN0IHVpbnQ4QXJyYXkgPSBwYWNrYWdlRmlsZS5jb250ZW50X2J5dGVzXG4gICAgPyBuZXcgVWludDhBcnJheShwYWNrYWdlRmlsZS5jb250ZW50X2J5dGVzKVxuICAgIDogbmV3IFVpbnQ4QXJyYXkoKVxuICByZXR1cm4gbmV3IFJlc3BvbnNlKHVpbnQ4QXJyYXksIHsgaGVhZGVycyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCAqIGFzIFpUIGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfZmlsZS9nZXQtcGFja2FnZS1maWxlLWlkLWZyb20tZmlsZS1kZXNjcmlwdG9yXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgICAgICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKSxcbiAgICAgICAgdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICAgIHBhY2thZ2VfZmlsZTogWlQucGFja2FnZUZpbGVTY2hlbWEub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5vcihaVC5lcnJvclJlc3BvbnNlU2NoZW1hKSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBwYWNrYWdlRmlsZUlkID0gYXdhaXQgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvcihyZXEucXVlcnksIGN0eClcblxuICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PiBwZi5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9maWxlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9maWxlOiB7XG4gICAgICAuLi5wYWNrYWdlRmlsZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IHBhY2thZ2VGaWxlLmNyZWF0ZWRfYXQudG9TdHJpbmcoKSxcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCAqIGFzIFpUIGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IGZpbmRQYWNrYWdlUmVsZWFzZUlkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWRcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKSxcbiAgICAgICAgdXNlX2xhdGVzdF92ZXJzaW9uOiB6LnByZXByb2Nlc3MoXG4gICAgICAgICAgKHZhbCkgPT4gKHZhbCA9PT0gXCJ0cnVlXCIgPyB0cnVlIDogdmFsKSxcbiAgICAgICAgICB6LmxpdGVyYWwodHJ1ZSksXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICApXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLFxuICAgICAgfSksXG4gICAgKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VfZmlsZXM6IHouYXJyYXkoWlQucGFja2FnZUZpbGVTY2hlbWEpLFxuICB9KSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBwYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQocmVxLnF1ZXJ5LCBjdHgpXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIE9taXQgdGhlIGNvbnRlbnRfdGV4dCBmaWVsZFxuICBjb25zdCBwYWNrYWdlRmlsZXMgPSBjdHguZGIucGFja2FnZUZpbGVzXG4gICAgLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQpXG4gICAgLm1hcCgoeyBjb250ZW50X3RleHQsIC4uLmZpbGUgfSkgPT4gKHtcbiAgICAgIC4uLmZpbGUsXG4gICAgfSkpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX2ZpbGVzOiBwYWNrYWdlRmlsZXMsXG4gIH0pXG59KVxuIiwgImltcG9ydCAqIGFzIFpUIGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB0eXBlIHsgRGJDbGllbnQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL2RiLWNsaWVudFwiXG5cbmV4cG9ydCBjb25zdCBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSA9IChcbiAgaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlOiBaVC5QYWNrYWdlUmVsZWFzZSxcbiAgb3B0aW9uczoge1xuICAgIGluY2x1ZGVfbG9ncz86IGJvb2xlYW5cbiAgICBpbmNsdWRlX2FpX3Jldmlldz86IGJvb2xlYW5cbiAgICBkYj86IERiQ2xpZW50XG4gIH0gPSB7XG4gICAgaW5jbHVkZV9sb2dzOiBmYWxzZSxcbiAgICBpbmNsdWRlX2FpX3JldmlldzogZmFsc2UsXG4gIH0sXG4pOiBaVC5QYWNrYWdlUmVsZWFzZSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAuLi5pbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UsXG4gICAgY3JlYXRlZF9hdDogaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmNyZWF0ZWRfYXQsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDpcbiAgICAgIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5jaXJjdWl0X2pzb25fYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0LFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmNpcmN1aXRfanNvbl9idWlsZF9lcnJvcixcbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzXG4gICAgICA/IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS50cmFuc3BpbGF0aW9uX2xvZ3NcbiAgICAgIDogW10sXG4gICAgdXNlcl9jb2RlX2J1aWxkX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzXG4gICAgICA/IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS51c2VyX2NvZGVfYnVpbGRfbG9nc1xuICAgICAgOiBudWxsLFxuICAgIHVzZXJfY29kZV9sb2dfc3RyZWFtX3VybDogb3B0aW9ucy5pbmNsdWRlX2xvZ3NcbiAgICAgID8gaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLnVzZXJfY29kZV9sb2dfc3RyZWFtX3VybFxuICAgICAgOiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBvcHRpb25zLmluY2x1ZGVfbG9nc1xuICAgICAgPyBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3NcbiAgICAgIDogW10sXG4gICAgaW1hZ2VfZ2VuZXJhdGlvbl9sb2dzOiBvcHRpb25zLmluY2x1ZGVfbG9nc1xuICAgICAgPyBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuaW1hZ2VfZ2VuZXJhdGlvbl9sb2dzXG4gICAgICA6IG51bGwsXG4gICAgaW1hZ2VfZ2VuZXJhdGlvbl9pbl9wcm9ncmVzczpcbiAgICAgIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5pbWFnZV9nZW5lcmF0aW9uX2luX3Byb2dyZXNzLFxuICAgIGltYWdlX2dlbmVyYXRpb25fc3RhcnRlZF9hdDpcbiAgICAgIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5pbWFnZV9nZW5lcmF0aW9uX3N0YXJ0ZWRfYXQgPz8gbnVsbCxcbiAgICBpbWFnZV9nZW5lcmF0aW9uX2NvbXBsZXRlZF9hdDpcbiAgICAgIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5pbWFnZV9nZW5lcmF0aW9uX2NvbXBsZXRlZF9hdCA/PyBudWxsLFxuICAgIGltYWdlX2dlbmVyYXRpb25faXNfc3RhbGU6XG4gICAgICBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuaW1hZ2VfZ2VuZXJhdGlvbl9pc19zdGFsZSxcbiAgICBpbWFnZV9nZW5lcmF0aW9uX2Vycm9yOlxuICAgICAgaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmltYWdlX2dlbmVyYXRpb25fZXJyb3IgPz8gbnVsbCxcbiAgICBpbWFnZV9nZW5lcmF0aW9uX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDpcbiAgICAgIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5pbWFnZV9nZW5lcmF0aW9uX2Vycm9yX2xhc3RfdXBkYXRlZF9hdCA/PyBudWxsLFxuICAgIGltYWdlX2dlbmVyYXRpb25fZGlzcGxheV9zdGF0dXM6XG4gICAgICBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuaW1hZ2VfZ2VuZXJhdGlvbl9kaXNwbGF5X3N0YXR1cyxcbiAgICBpc19wcl9wcmV2aWV3OiBCb29sZWFuKGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5pc19wcl9wcmV2aWV3KSxcbiAgICBnaXRodWJfcHJfbnVtYmVyOiBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuZ2l0aHViX3ByX251bWJlcixcbiAgICBicmFuY2hfbmFtZTogaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmJyYW5jaF9uYW1lLFxuICAgIGNvbW1pdF9tZXNzYWdlOiBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuY29tbWl0X21lc3NhZ2UgPz8gbnVsbCxcbiAgICBjb21taXRfYXV0aG9yOiBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuY29tbWl0X2F1dGhvciA/PyBudWxsLFxuICAgIHBjYl9wcmV2aWV3X2ltYWdlX3VybDpcbiAgICAgIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5wY2JfcHJldmlld19pbWFnZV91cmwgPz8gbnVsbCxcbiAgICBzY2hfcHJldmlld19pbWFnZV91cmw6XG4gICAgICBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2Uuc2NoX3ByZXZpZXdfaW1hZ2VfdXJsID8/IG51bGwsXG4gICAgY2FkX3ByZXZpZXdfaW1hZ2VfdXJsOlxuICAgICAgaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmNhZF9wcmV2aWV3X2ltYWdlX3VybCA/PyBudWxsLFxuICB9XG5cbiAgaWYgKG9wdGlvbnMuaW5jbHVkZV9haV9yZXZpZXcgJiYgb3B0aW9ucy5kYikge1xuICAgIGNvbnN0IHJldmlld3MgPSBvcHRpb25zLmRiXG4gICAgICAubGlzdEFpUmV2aWV3cygpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAocikgPT5cbiAgICAgICAgICByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIClcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgICAgKVxuXG4gICAgaWYgKHJldmlld3MubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbGF0ZXN0ID0gcmV2aWV3c1swXVxuICAgICAgcmVzdWx0LmFpX3Jldmlld190ZXh0ID0gbGF0ZXN0LmFpX3Jldmlld190ZXh0ID8/IG51bGxcbiAgICAgIHJlc3VsdC5haV9yZXZpZXdfc3RhcnRlZF9hdCA9IGxhdGVzdC5zdGFydF9wcm9jZXNzaW5nX2F0ID8/IG51bGxcbiAgICAgIHJlc3VsdC5haV9yZXZpZXdfY29tcGxldGVkX2F0ID0gbGF0ZXN0LmZpbmlzaGVkX3Byb2Nlc3NpbmdfYXQgPz8gbnVsbFxuICAgICAgcmVzdWx0LmFpX3Jldmlld19lcnJvciA9IGxhdGVzdC5wcm9jZXNzaW5nX2Vycm9yID8/IG51bGxcbiAgICB9XG4gIH1cblxuICAvLyBPbmx5IGluY2x1ZGUgQUkgcmV2aWV3IGZpZWxkcyB3aGVuIGluY2x1ZGVfYWlfcmV2aWV3IGlzIHRydWVcbiAgaWYgKCFvcHRpb25zLmluY2x1ZGVfYWlfcmV2aWV3KSB7XG4gICAgZGVsZXRlIHJlc3VsdC5haV9yZXZpZXdfdGV4dFxuICAgIGRlbGV0ZSByZXN1bHQuYWlfcmV2aWV3X3N0YXJ0ZWRfYXRcbiAgICBkZWxldGUgcmVzdWx0LmFpX3Jldmlld19jb21wbGV0ZWRfYXRcbiAgICBkZWxldGUgcmVzdWx0LmFpX3Jldmlld19lcnJvclxuICAgIGRlbGV0ZSByZXN1bHQuYWlfcmV2aWV3X2xvZ3NcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiIsICJpbXBvcnQgeyBwYWNrYWdlUmVsZWFzZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLXJlbGVhc2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgY29tbWl0X3NoYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHBhY2thZ2VSZWxlYXNlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQge1xuICAgIHBhY2thZ2VfaWQsXG4gICAgcGFja2FnZV9uYW1lLFxuICAgIGlzX2xhdGVzdCA9IHRydWUsXG4gICAgdmVyc2lvbixcbiAgICBjb21taXRfc2hhLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiAmJiAhcGFja2FnZV9pZCkge1xuICAgIGNvbnN0IFtwYWNrYWdlTmFtZSwgcGFyc2VkVmVyc2lvbl0gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kOiAke3BhY2thZ2VOYW1lfWAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHBhY2thZ2VfaWQgPSBwa2cucGFja2FnZV9pZFxuICAgIHZlcnNpb24gPSBwYXJzZWRWZXJzaW9uXG4gIH1cblxuICBpZiAoIXBhY2thZ2VfaWQgJiYgcGFja2FnZV9uYW1lKSB7XG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuICAgIGlmICghcGtnKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IGBQYWNrYWdlIG5vdCBmb3VuZDogJHtwYWNrYWdlX25hbWV9YCxcbiAgICAgIH0pXG4gICAgfVxuICAgIHBhY2thZ2VfaWQgPSBwa2cucGFja2FnZV9pZFxuICB9XG5cbiAgaWYgKCFwYWNrYWdlX2lkIHx8ICF2ZXJzaW9uKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcInBhY2thZ2VfaWQgb3IgcGFja2FnZV9uYW1lIGFuZCB2ZXJzaW9uIGFyZSByZXF1aXJlZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB2ZXJzaW9uIGFscmVhZHkgZXhpc3RzXG4gIGNvbnN0IGV4aXN0aW5nUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgKVxuXG4gIGlmIChleGlzdGluZ1JlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ2ZXJzaW9uX2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICBtZXNzYWdlOiBgVmVyc2lvbiAke3ZlcnNpb259IGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIHBhY2thZ2VgLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgcHJldmlvdXMgbGF0ZXN0IGlmIG5lZWRlZFxuICBpZiAoaXNfbGF0ZXN0KSB7XG4gICAgY3R4LmRiLnBhY2thZ2VSZWxlYXNlc1xuICAgICAgLmZpbHRlcigocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0KVxuICAgICAgLmZvckVhY2goKHByKSA9PiAocHIuaXNfbGF0ZXN0ID0gZmFsc2UpKVxuICB9XG5cbiAgY29uc3QgbmV3UGFja2FnZVJlbGVhc2UgPSBjdHguZGIuYWRkUGFja2FnZVJlbGVhc2Uoe1xuICAgIHBhY2thZ2VfaWQsXG4gICAgaXNfbGF0ZXN0LFxuICAgIHZlcnNpb24sXG4gICAgaXNfbG9ja2VkOiBmYWxzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgY29tbWl0X3NoYTogY29tbWl0X3NoYSA/PyBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogbnVsbCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OiBudWxsLFxuICAgIC8vIFNldHRpbmcgdGhlIHRyYW5zcGlsZWQgYXMgdHJ1ZSBvbiBjcmVhdGlvblxuICAgIGhhc190cmFuc3BpbGVkOiB0cnVlLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IG51bGwsXG4gIH0pXG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3MgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCBpZiB0aGlzIGlzIHRoZSBsYXRlc3QgcmVsZWFzZVxuICBpZiAoaXNfbGF0ZXN0KSB7XG4gICAgY3R4LmRiLnVwZGF0ZVBhY2thZ2UocGFja2FnZV9pZCwge1xuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgbGF0ZXN0X3ZlcnNpb246IHZlcnNpb24sXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShuZXdQYWNrYWdlUmVsZWFzZSwgeyBkYjogY3R4LmRiIH0pLFxuICB9KVxufSlcbiIsICJpbXBvcnQgKiBhcyB6dCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLXJlbGVhc2VcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgaW5jbHVkZV9sb2dzOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGluY2x1ZGVfYWlfcmV2aWV3OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICB9KSxcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX2xhdGVzdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHp0LnBhY2thZ2VSZWxlYXNlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgcGFja2FnZV9uYW1lLFxuICAgIHBhY2thZ2VfaWQsXG4gICAgaXNfbGF0ZXN0LFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgLy8gSGFuZGxlIHBhY2thZ2VfbmFtZSB3aXRoIGlzX2xhdGVzdFxuICBpZiAocGFja2FnZV9uYW1lICYmIGlzX2xhdGVzdCA9PT0gdHJ1ZSkge1xuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IHBhY2thZ2VfbmFtZSlcblxuICAgIGlmICghcGtnKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gU29ydCByZWxlYXNlcyBieSB2ZXJzaW9uIHRvIGZpbmQgdGhlIGxhdGVzdCBvbmVcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZXMgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4LnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZF9hdCkuZ2V0VGltZSgpXG4gICAgICAgIClcbiAgICAgIH0pXG5cbiAgICBpZiAocGFja2FnZVJlbGVhc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiTm8gcmVsZWFzZXMgZm91bmQgZm9yIHRoaXMgcGFja2FnZVwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBwYWNrYWdlX3JlbGVhc2U6IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlKHBhY2thZ2VSZWxlYXNlc1swXSwge1xuICAgICAgICBpbmNsdWRlX2FpX3JldmlldzogcmVxLmNvbW1vblBhcmFtcz8uaW5jbHVkZV9haV9yZXZpZXcsXG4gICAgICAgIGRiOiBjdHguZGIsXG4gICAgICB9KSxcbiAgICB9KVxuICB9XG5cbiAgLy8gSGFuZGxlIHBhY2thZ2VfaWQgd2l0aCBpc19sYXRlc3RcbiAgaWYgKHBhY2thZ2VfaWQgJiYgaXNfbGF0ZXN0ID09PSB0cnVlKSB7XG4gICAgLy8gU29ydCByZWxlYXNlcyBieSB2ZXJzaW9uIHRvIGZpbmQgdGhlIGxhdGVzdCBvbmVcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZXMgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4LnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQpXG4gICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKClcbiAgICAgICAgKVxuICAgICAgfSlcblxuICAgIGlmIChwYWNrYWdlUmVsZWFzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJObyByZWxlYXNlcyBmb3VuZCBmb3IgdGhpcyBwYWNrYWdlXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZTogcHVibGljTWFwUGFja2FnZVJlbGVhc2UocGFja2FnZVJlbGVhc2VzWzBdLCB7XG4gICAgICAgIGluY2x1ZGVfYWlfcmV2aWV3OiByZXEuY29tbW9uUGFyYW1zPy5pbmNsdWRlX2FpX3JldmlldyxcbiAgICAgICAgZGI6IGN0eC5kYixcbiAgICAgIH0pLFxuICAgIH0pXG4gIH1cblxuICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiAmJiAhcGFja2FnZV9yZWxlYXNlX2lkKSB7XG4gICAgY29uc3QgW3BhY2thZ2VOYW1lLCBwYXJzZWRWZXJzaW9uXSA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHgpID0+IHgubmFtZSA9PT0gcGFja2FnZU5hbWUpXG4gICAgY29uc3QgcGtnUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHgudmVyc2lvbiA9PSBwYXJzZWRWZXJzaW9uICYmIHgucGFja2FnZV9pZCA9PSBwa2c/LnBhY2thZ2VfaWRcbiAgICB9KVxuXG4gICAgaWYgKCFwa2dSZWxlYXNlKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZTogcHVibGljTWFwUGFja2FnZVJlbGVhc2UocGtnUmVsZWFzZSwge1xuICAgICAgICBpbmNsdWRlX2FpX3JldmlldzogcmVxLmNvbW1vblBhcmFtcz8uaW5jbHVkZV9haV9yZXZpZXcsXG4gICAgICAgIGRiOiBjdHguZGIsXG4gICAgICB9KSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZm91bmRSZWxlYXNlID1cbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQgJiYgY3R4LmRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChwYWNrYWdlX3JlbGVhc2VfaWQpXG5cbiAgaWYgKCFmb3VuZFJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlKGZvdW5kUmVsZWFzZSwge1xuICAgICAgaW5jbHVkZV9sb2dzOiByZXEuY29tbW9uUGFyYW1zPy5pbmNsdWRlX2xvZ3MsXG4gICAgICBpbmNsdWRlX2FpX3JldmlldzogcmVxLmNvbW1vblBhcmFtcz8uaW5jbHVkZV9haV9yZXZpZXcsXG4gICAgICBkYjogY3R4LmRiLFxuICAgIH0pLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBwYWNrYWdlUmVsZWFzZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLXJlbGVhc2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIGluY2x1ZGVfYWlfcmV2aWV3OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICB9KSxcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgICAgdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29tbWl0X3NoYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLnJlZmluZSgoeyBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUgfSkgPT4ge1xuICAgICAgaWYgKHBhY2thZ2VfaWQgJiYgcGFja2FnZV9uYW1lKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcInBhY2thZ2VfaWQgYW5kIHBhY2thZ2VfbmFtZSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlXCIpXG4gICAgLnJlZmluZSgoeyBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUgfSkgPT4ge1xuICAgICAgaWYgKCFwYWNrYWdlX2lkICYmICFwYWNrYWdlX25hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwicGFja2FnZV9pZCBvciBwYWNrYWdlX25hbWUgaXMgcmVxdWlyZWRcIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX3JlbGVhc2VzOiB6LmFycmF5KHBhY2thZ2VSZWxlYXNlU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUsIGlzX2xhdGVzdCwgdmVyc2lvbiwgY29tbWl0X3NoYSB9ID1cbiAgICByZXEuanNvbkJvZHlcblxuICBpZiAoIXBhY2thZ2VfaWQgJiYgIXBhY2thZ2VfbmFtZSAmJiAhaXNfbGF0ZXN0ICYmICF2ZXJzaW9uICYmICFjb21taXRfc2hhKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9xdWVyeVwiLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgXCJBdCBsZWFzdCBvbmUgb2YgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lLCBpc19sYXRlc3QsIHZlcnNpb24gb3IgY29tbWl0X3NoYSBpcyByZXF1aXJlZFwiLFxuICAgIH0pXG4gIH1cblxuICBsZXQgcmVsZWFzZXMgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzXG5cbiAgLy8gQXBwbHkgZmlsdGVyc1xuICBpZiAocGFja2FnZV9pZCkge1xuICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZClcbiAgfVxuXG4gIGlmIChwYWNrYWdlX25hbWUpIHtcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSBwYWNrYWdlX25hbWUpXG4gICAgaWYgKHBrZykge1xuICAgICAgcmVsZWFzZXMgPSByZWxlYXNlcy5maWx0ZXIoKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZClcbiAgICB9IGVsc2Uge1xuICAgICAgcmVsZWFzZXMgPSBbXVxuICAgIH1cbiAgfVxuXG4gIGlmIChpc19sYXRlc3QgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIuaXNfbGF0ZXN0ID09PSBpc19sYXRlc3QpXG4gIH1cblxuICBpZiAodmVyc2lvbikge1xuICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIudmVyc2lvbiA9PT0gdmVyc2lvbilcbiAgfVxuXG4gIGlmIChjb21taXRfc2hhKSB7XG4gICAgcmVsZWFzZXMgPSByZWxlYXNlcy5maWx0ZXIoKHByKSA9PiBwci5jb21taXRfc2hhID09PSBjb21taXRfc2hhKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX3JlbGVhc2VzOiByZWxlYXNlcy5tYXAoKHByKSA9PlxuICAgICAgcHVibGljTWFwUGFja2FnZVJlbGVhc2UocHIsIHtcbiAgICAgICAgaW5jbHVkZV9haV9yZXZpZXc6IHJlcS5jb21tb25QYXJhbXM/LmluY2x1ZGVfYWlfcmV2aWV3LFxuICAgICAgICBkYjogY3R4LmRiLFxuICAgICAgfSksXG4gICAgKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCBEZWJ1ZyBmcm9tIFwiZGVidWdcIlxuXG5jb25zdCBkZWJ1ZyA9IERlYnVnKFwiZmFrZS1zbmlwcGV0cy1hcGk6cmVidWlsZC1wYWNrYWdlXCIpXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gICAgcmVidWlsZF90cmFuc3BpbGF0aW9uOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICAgIHJlYnVpbGRfY2lyY3VpdF9qc29uOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfcmVsZWFzZV9pZCwgcmVidWlsZF90cmFuc3BpbGF0aW9uLCByZWJ1aWxkX2NpcmN1aXRfanNvbiB9ID1cbiAgICByZXEuanNvbkJvZHlcblxuICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZSBpbmZvIGZvciBsb2dnaW5nXG4gIGNvbnN0IHJlbGVhc2UgPSBjdHguZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKHBhY2thZ2VfcmVsZWFzZV9pZClcblxuICBpZiAoIXJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcGFja2FnZUluZm8gPSBjdHguZGIuZ2V0UGFja2FnZUJ5SWQocmVsZWFzZS5wYWNrYWdlX2lkKVxuXG4gIGlmICghcGFja2FnZUluZm8pIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAocGFja2FnZUluZm8ub3duZXJfb3JnX2lkICE9PSBjdHguYXV0aC5wZXJzb25hbF9vcmdfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gcmVidWlsZCB0aGlzIHBhY2thZ2UgcmVsZWFzZVwiLFxuICAgIH0pXG4gIH1cblxuICBkZWJ1ZyhcbiAgICBgUmVidWlsZGluZyBwYWNrYWdlIHJlbGVhc2UgJHtwYWNrYWdlX3JlbGVhc2VfaWR9IGZvciAke3BhY2thZ2VJbmZvLm5hbWV9QCR7cmVsZWFzZS52ZXJzaW9ufWAsXG4gIClcblxuICAvLyBUcmlnZ2VyIHRyYW5zcGlsYXRpb24gaWYgcmVxdWVzdGVkXG4gIGlmIChyZWJ1aWxkX3RyYW5zcGlsYXRpb24pIHtcbiAgICBkZWJ1ZyhcIlJlc2V0dGluZyB0cmFuc3BpbGF0aW9uIHN0YXRlXCIpXG4gIH1cblxuICAvLyBTZXQgY2lyY3VpdCBKU09OIGJ1aWxkIHN0YXRlIHRvIHBlbmRpbmcgZm9yIHdvcmtlciBwaWNrdXAgaWYgcmVxdWVzdGVkXG4gIGlmIChyZWJ1aWxkX2NpcmN1aXRfanNvbikge1xuICAgIGRlYnVnKFwiUmVzZXR0aW5nIGNpcmN1aXQgSlNPTiBidWlsZCBzdGF0ZVwiKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19sb2NrZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGxpY2Vuc2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBmc19zaGE6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICByZWFkeV90b19idWlsZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBhaV9yZXZpZXdfcmVxdWVzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgaXNfbG9ja2VkLFxuICAgIGlzX2xhdGVzdCxcbiAgICBsaWNlbnNlLFxuICAgIGZzX3NoYSxcbiAgICByZWFkeV90b19idWlsZCxcbiAgICBhaV9yZXZpZXdfcmVxdWVzdGVkLFxuICB9ID0gcmVxLmpzb25Cb2R5XG4gIGxldCByZWxlYXNlSWQgPSBwYWNrYWdlX3JlbGVhc2VfaWRcblxuICAvLyBIYW5kbGUgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiBsb29rdXBcbiAgaWYgKCFyZWxlYXNlSWQgJiYgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikge1xuICAgIGNvbnN0IFtwYWNrYWdlTmFtZSwgdmVyc2lvbl0gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuICAgIGlmIChwa2cpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICAgIClcbiAgICAgIGlmIChyZWxlYXNlKSB7XG4gICAgICAgIHJlbGVhc2VJZCA9IHJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFyZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZGVsdGEgPSB7XG4gICAgaXNfbG9ja2VkLFxuICAgIGlzX2xhdGVzdCxcbiAgICBsaWNlbnNlLFxuICAgIGZzX3NoYSxcbiAgICByZWFkeV90b19idWlsZCxcbiAgICBhaV9yZXZpZXdfcmVxdWVzdGVkLFxuICB9XG4gIGlmIChcbiAgICBPYmplY3Qua2V5cyhkZWx0YSkuZmlsdGVyKFxuICAgICAgKGspID0+IGRlbHRhW2sgYXMga2V5b2YgdHlwZW9mIGRlbHRhXSAhPT0gdW5kZWZpbmVkLFxuICAgICkubGVuZ3RoID09PSAwXG4gICkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vX2ZpZWxkc19wcm92aWRlZFwiLFxuICAgICAgbWVzc2FnZTogXCJObyBmaWVsZHMgcHJvdmlkZWQgdG8gdXBkYXRlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHJlbGVhc2VJZCxcbiAgKVxuICBpZiAoIXJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ3JlYXRlIHVwZGF0ZWQgcmVsZWFzZSBvYmplY3RcbiAgY29uc3QgdXBkYXRlZFJlbGVhc2UgPSB7XG4gICAgLi4ucmVsZWFzZSxcbiAgICAuLi4oaXNfbG9ja2VkICE9PSB1bmRlZmluZWQgJiYgeyBpc19sb2NrZWQgfSksXG4gICAgLi4uKGlzX2xhdGVzdCAhPT0gdW5kZWZpbmVkICYmIHsgaXNfbGF0ZXN0IH0pLFxuICAgIC4uLihsaWNlbnNlICE9PSB1bmRlZmluZWQgJiYgeyBsaWNlbnNlIH0pLFxuICAgIC4uLihmc19zaGEgIT09IHVuZGVmaW5lZCAmJiB7IGZzX3NoYSB9KSxcbiAgICAuLi4ocmVhZHlfdG9fYnVpbGQgIT09IHVuZGVmaW5lZCAmJiB7IHJlYWR5X3RvX2J1aWxkIH0pLFxuICAgIC4uLihhaV9yZXZpZXdfcmVxdWVzdGVkICE9PSB1bmRlZmluZWQgJiYgeyBhaV9yZXZpZXdfcmVxdWVzdGVkIH0pLFxuICAgIC4uLihhaV9yZXZpZXdfcmVxdWVzdGVkID09PSB0cnVlICYmIHtcbiAgICAgIGFpX3Jldmlld190ZXh0OiBcIlBsYWNlaG9sZGVyIEFJIFJldmlldyBUZXh0XCIsXG4gICAgfSksXG4gIH1cblxuICAvLyBIYW5kbGUgaXNfbGF0ZXN0IHVwZGF0ZXMgYXRvbWljYWxseVxuICBpZiAoaXNfbGF0ZXN0ICE9PSB1bmRlZmluZWQgJiYgaXNfbGF0ZXN0KSB7XG4gICAgLy8gR2V0IGFsbCByZWxlYXNlcyBmb3IgdGhpcyBwYWNrYWdlIHRoYXQgYXJlIGN1cnJlbnRseSBtYXJrZWQgYXMgbGF0ZXN0XG4gICAgY29uc3Qgb3RoZXJMYXRlc3RSZWxlYXNlcyA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmlsdGVyKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX2lkID09PSByZWxlYXNlLnBhY2thZ2VfaWQgJiZcbiAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkICE9PSByZWxlYXNlSWQgJiZcbiAgICAgICAgcHIuaXNfbGF0ZXN0LFxuICAgIClcblxuICAgIC8vIFVwZGF0ZSBhbGwgcmVsZWFzZXMgaW4gYSBzaW5nbGUgb3BlcmF0aW9uXG4gICAgZm9yIChjb25zdCBsYXRlc3RSZWxlYXNlIG9mIG90aGVyTGF0ZXN0UmVsZWFzZXMpIHtcbiAgICAgIGN0eC5kYi51cGRhdGVQYWNrYWdlUmVsZWFzZSh7XG4gICAgICAgIC4uLmxhdGVzdFJlbGVhc2UsXG4gICAgICAgIGlzX2xhdGVzdDogZmFsc2UsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIFVwZGF0ZSB0aGUgdGFyZ2V0IHJlbGVhc2VcbiAgY3R4LmRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlKHVwZGF0ZWRSZWxlYXNlKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3Ioei5vYmplY3QoeyBuYW1lOiB6LnN0cmluZygpIH0pKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQgcGFja2FnZUlkOiBzdHJpbmdcblxuICAvLyBHZXQgcGFja2FnZSBJRCBlaXRoZXIgZGlyZWN0bHkgb3IgYnkgbmFtZVxuICBpZiAoXCJwYWNrYWdlX2lkXCIgaW4gcmVxLmpzb25Cb2R5KSB7XG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIHBhY2thZ2VJZCA9IGJvZHkucGFja2FnZV9pZFxuICB9IGVsc2Uge1xuICAgIC8vIElmIG5hbWUgaXMgcHJvdmlkZWQsIGxvb2sgdXAgdGhlIHBhY2thZ2VfaWRcbiAgICBjb25zdCBib2R5ID0gcmVxLmpzb25Cb2R5XG4gICAgY29uc3QgcGFja2FnZURhdGEgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gYm9keS5uYW1lKVxuXG4gICAgaWYgKCFwYWNrYWdlRGF0YSkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHBhY2thZ2VJZCA9IHBhY2thZ2VEYXRhLnBhY2thZ2VfaWRcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHBhY2thZ2UgZXhpc3RzIChleHRyYSBjaGVjayBmb3IgSUQtYmFzZWQgbG9va3VwKVxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpXG5cbiAgaWYgKCFwa2cpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBhbHJlYWR5IHN0YXJyZWRcbiAgY29uc3QgZXhpc3RpbmcgPSBjdHguZGIuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgKGFwKSA9PlxuICAgICAgYXAuYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQsXG4gIClcblxuICBpZiAoZXhpc3Rpbmc/LmlzX3N0YXJyZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhbHJlYWR5X3N0YXJyZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgYWxyZWFkeSBzdGFycmVkIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBzdGFyIGNvdW50XG4gIHBrZy5zdGFyX2NvdW50ID0gKHBrZy5zdGFyX2NvdW50IHx8IDApICsgMVxuXG4gIGlmIChleGlzdGluZykge1xuICAgIC8vIElmIHJlY29yZCBleGlzdHMgYnV0IGlzX3N0YXJyZWQgaXMgZmFsc2UsIHVwZGF0ZSB0byBpc19zdGFycmVkPXRydWVcbiAgICBleGlzdGluZy5pc19zdGFycmVkID0gdHJ1ZVxuICAgIGV4aXN0aW5nLnVwZGF0ZWRfYXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgfSBlbHNlIHtcbiAgICAvLyBBZGQgc3RhciBieSBjcmVhdGluZyBhIG5ldyBhY2NvdW50X3BhY2thZ2UgcmVjb3JkXG4gICAgY29uc3QgbmV3VGltZXN0YW1wID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgY29uc3QgbmV3QWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke0RhdGUubm93KCl9YCxcbiAgICAgIGFjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICBwYWNrYWdlX2lkOiBwYWNrYWdlSWQsXG4gICAgICBpc19zdGFycmVkOiB0cnVlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3VGltZXN0YW1wLFxuICAgICAgdXBkYXRlZF9hdDogbmV3VGltZXN0YW1wLFxuICAgIH1cbiAgICBjdHguZGIuYWRkQWNjb3VudFBhY2thZ2UobmV3QWNjb3VudFBhY2thZ2UpXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgdHlwZSAqIGFzIHp0IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGNvbnN0IHB1YmxpY01hcFBhY2thZ2UgPSAoaW50ZXJuYWxQYWNrYWdlOiB7XG4gIHBhY2thZ2VfaWQ6IHN0cmluZ1xuICBjcmVhdG9yX2FjY291bnRfaWQ6IHN0cmluZ1xuICBvd25lcl9vcmdfaWQ6IHN0cmluZ1xuICBvd25lcl9naXRodWJfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogYm9vbGVhblxuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbFxuICBsYXRlc3RfdmVyc2lvbj86IHN0cmluZyB8IG51bGxcbiAgbGF0ZXN0X2xpY2Vuc2U/OiBzdHJpbmcgfCBudWxsXG4gIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ/OiBzdHJpbmcgfCBudWxsXG4gIHN0YXJfY291bnQ/OiBudW1iZXIgfCBudWxsXG4gIG5hbWU6IHN0cmluZ1xuICB3ZWJzaXRlOiBzdHJpbmcgfCBudWxsXG4gIHVuc2NvcGVkX25hbWU6IHN0cmluZ1xuICB1cGRhdGVkX2F0OiBzdHJpbmdcbiAgY3JlYXRlZF9hdDogc3RyaW5nXG4gIGFpX2Rlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsXG4gIGFpX3VzYWdlX2luc3RydWN0aW9uczogc3RyaW5nIHwgbnVsbFxuICBpc19zbmlwcGV0OiBib29sZWFuXG4gIGlzX2JvYXJkOiBib29sZWFuXG4gIGlzX3BhY2thZ2U6IGJvb2xlYW5cbiAgaXNfbW9kZWw6IGJvb2xlYW5cbiAgaXNfZm9vdHByaW50OiBib29sZWFuXG4gIGlzX3ByaXZhdGU6IGJvb2xlYW4gfCBudWxsXG4gIGlzX3VubGlzdGVkOiBib29sZWFuIHwgbnVsbFxuICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2ZzX3NoYTogc3RyaW5nIHwgbnVsbFxuICBnaXRodWJfcmVwb19mdWxsX25hbWU/OiBzdHJpbmcgfCBudWxsXG4gIGFsbG93X3ByX3ByZXZpZXdzPzogYm9vbGVhblxuICBsYXRlc3RfcGNiX3ByZXZpZXdfaW1hZ2VfdXJsPzogc3RyaW5nIHwgbnVsbFxuICBsYXRlc3Rfc2NoX3ByZXZpZXdfaW1hZ2VfdXJsPzogc3RyaW5nIHwgbnVsbFxuICBsYXRlc3RfY2FkX3ByZXZpZXdfaW1hZ2VfdXJsPzogc3RyaW5nIHwgbnVsbFxuICBvcmdfb3duZXJfdHNjaXJjdWl0X2hhbmRsZT86IHN0cmluZyB8IG51bGxcbn0pOiB6dC5QYWNrYWdlID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5pbnRlcm5hbFBhY2thZ2UsXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDpcbiAgICAgIGludGVybmFsUGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID8/IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IGludGVybmFsUGFja2FnZS5sYXRlc3RfdmVyc2lvbiA/PyBudWxsLFxuICAgIGxpY2Vuc2U6IGludGVybmFsUGFja2FnZS5sYXRlc3RfbGljZW5zZSA/PyBudWxsLFxuICAgIHdlYnNpdGU6IGludGVybmFsUGFja2FnZS53ZWJzaXRlID8/IG51bGwsXG4gICAgc3Rhcl9jb3VudDogaW50ZXJuYWxQYWNrYWdlLnN0YXJfY291bnQgPz8gMCxcbiAgICBjcmVhdGVkX2F0OiBpbnRlcm5hbFBhY2thZ2UuY3JlYXRlZF9hdCxcbiAgICB1cGRhdGVkX2F0OiBpbnRlcm5hbFBhY2thZ2UudXBkYXRlZF9hdCxcbiAgICBnaXRodWJfcmVwb19mdWxsX25hbWU6IGludGVybmFsUGFja2FnZS5naXRodWJfcmVwb19mdWxsX25hbWUgPz8gbnVsbCxcbiAgICBpc19wcml2YXRlOiBpbnRlcm5hbFBhY2thZ2UuaXNfcHJpdmF0ZSA/PyBmYWxzZSxcbiAgICBpc19wdWJsaWM6IGludGVybmFsUGFja2FnZS5pc19wcml2YXRlID09PSB0cnVlID8gZmFsc2UgOiB0cnVlLFxuICAgIGlzX3VubGlzdGVkOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlLmlzX3ByaXZhdGUgPT09IHRydWVcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogKGludGVybmFsUGFja2FnZS5pc191bmxpc3RlZCA/PyBmYWxzZSksXG4gICAgYWxsb3dfcHJfcHJldmlld3M6IEJvb2xlYW4oaW50ZXJuYWxQYWNrYWdlLmFsbG93X3ByX3ByZXZpZXdzKSxcbiAgICBsYXRlc3RfcGNiX3ByZXZpZXdfaW1hZ2VfdXJsOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlLmxhdGVzdF9wY2JfcHJldmlld19pbWFnZV91cmwgPz8gbnVsbCxcbiAgICBsYXRlc3Rfc2NoX3ByZXZpZXdfaW1hZ2VfdXJsOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlLmxhdGVzdF9zY2hfcHJldmlld19pbWFnZV91cmwgPz8gbnVsbCxcbiAgICBsYXRlc3RfY2FkX3ByZXZpZXdfaW1hZ2VfdXJsOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlLmxhdGVzdF9jYWRfcHJldmlld19pbWFnZV91cmwgPz8gbnVsbCxcbiAgICBvcmdfb3duZXJfdHNjaXJjdWl0X2hhbmRsZTpcbiAgICAgIGludGVybmFsUGFja2FnZS5vcmdfb3duZXJfdHNjaXJjdWl0X2hhbmRsZSA/PyBudWxsLFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgbmFtZTogelxuICAgICAgLnN0cmluZygpXG4gICAgICAucmVnZXgoXG4gICAgICAgIC9eW0BhLXpBLVowLTktX1xcL10rJC8sXG4gICAgICAgIFwiUGFja2FnZSBuYW1lIGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycywgbnVtYmVycywgaHlwaGVucywgdW5kZXJzY29yZXMsIGFuZCBmb3J3YXJkIHNsYXNoZXNcIixcbiAgICAgIClcbiAgICAgIC50cmFuc2Zvcm0oKG5hbWUpID0+IG5hbWUucmVwbGFjZSgvXkAvLCBcIlwiKSlcbiAgICAgIC5vcHRpb25hbCgpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBpc191bmxpc3RlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBvcmdfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2U6IHBhY2thZ2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBuYW1lLCBkZXNjcmlwdGlvbiwgaXNfcHJpdmF0ZSwgaXNfdW5saXN0ZWQsIG9yZ19pZCB9ID0gcmVxLmpzb25Cb2R5XG4gIGxldCBvd25lcl9zZWdtZW50ID0gbmFtZT8uc3BsaXQoXCIvXCIpWzBdXG4gIGxldCB1bnNjb3BlZF9uYW1lID0gbmFtZT8uc3BsaXQoXCIvXCIpWzFdXG5cbiAgaWYgKG5hbWUgJiYgIXVuc2NvcGVkX25hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX3BhY2thZ2VfbmFtZVwiLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgXCJQYWNrYWdlIG5hbWUgbXVzdCBpbmNsdWRlIGFuIGF1dGhvciBzZWdtZW50IChlLmcuIGF1dGhvci9wYWNrYWdlX25hbWUpXCIsXG4gICAgfSlcbiAgfVxuICBjb25zdCBvcmcgPSBvcmdfaWQgPyBjdHguZGIuZ2V0T3JnKHsgb3JnX2lkIH0pIDogbnVsbFxuICBpZiAob3JnX2lkICYmICFvcmcpXG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JnX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmdhbml6YXRpb24gbm90IGZvdW5kXCIsXG4gICAgfSlcblxuICBpZiAoIXVuc2NvcGVkX25hbWUpIHtcbiAgICBjb25zdCBzdGF0ZSA9IGN0eC5kYi5nZXRTdGF0ZSgpXG5cbiAgICBjb25zdCBjb3VudCA9IG9yZ19pZFxuICAgICAgPyBzdGF0ZS5wYWNrYWdlcy5maWx0ZXIoKHBrZykgPT4gcGtnLm93bmVyX29yZ19pZCA9PT0gb3JnX2lkKS5sZW5ndGhcbiAgICAgIDogc3RhdGUucGFja2FnZXMuZmlsdGVyKFxuICAgICAgICAgIChwa2cpID0+IHBrZy5jcmVhdG9yX2FjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICAgICkubGVuZ3RoXG5cbiAgICB1bnNjb3BlZF9uYW1lID0gYHVudGl0bGVkLXBhY2thZ2UtJHtjb3VudH1gXG4gIH1cblxuICBpZiAoIW93bmVyX3NlZ21lbnQpIHtcbiAgICBvd25lcl9zZWdtZW50ID0gb3JnX2lkXG4gICAgICA/IChvcmchLnRzY2lyY3VpdF9oYW5kbGUgPz8gdW5kZWZpbmVkKVxuICAgICAgOiAoY3R4LmF1dGgudHNjaXJjdWl0X2hhbmRsZSA/PyB1bmRlZmluZWQpXG4gIH1cblxuICBpZiAoIW93bmVyX3NlZ21lbnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtaXNzaW5nX293bmVyX3NlZ21lbnRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3duZXIgc2VnbWVudCBpcyByZXF1aXJlZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBmaW5hbF9uYW1lID0gbmFtZSA/PyBgJHtvd25lcl9zZWdtZW50fS8ke3Vuc2NvcGVkX25hbWV9YFxuXG4gIGNvbnN0IHJlcXVlc3RlZF9vd25lcl9sb3dlciA9IG93bmVyX3NlZ21lbnQudG9Mb3dlckNhc2UoKVxuICBjb25zdCBwZXJzb25hbF9vd25lcl9sb3dlciA9IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZS50b0xvd2VyQ2FzZSgpXG5cbiAgbGV0IG93bmVyX29yZ19pZCA9IG9yZz8ub3JnX2lkID8/IGN0eC5hdXRoLnBlcnNvbmFsX29yZ19pZFxuXG4gIGlmIChyZXF1ZXN0ZWRfb3duZXJfbG93ZXIgIT09IHBlcnNvbmFsX293bmVyX2xvd2VyKSB7XG4gICAgY29uc3Qgc3RhdGUgPSBjdHguZGIuZ2V0U3RhdGUoKVxuICAgIGNvbnN0IG1lbWJlck9yZyA9IHN0YXRlLm9yZ0FjY291bnRzXG4gICAgICAuZmlsdGVyKChvYSkgPT4gb2EuYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZClcbiAgICAgIC5tYXAoKG9hKSA9PiBzdGF0ZS5vcmdhbml6YXRpb25zLmZpbmQoKG8pID0+IG8ub3JnX2lkID09PSBvYS5vcmdfaWQpKVxuICAgICAgLmZpbHRlcigobyk6IG8gaXMgTm9uTnVsbGFibGU8dHlwZW9mIG8+ID0+IG8gIT09IHVuZGVmaW5lZClcbiAgICAgIC5maW5kKChvKSA9PiBvLnRzY2lyY3VpdF9oYW5kbGU/LnRvTG93ZXJDYXNlKCkgPT09IHJlcXVlc3RlZF9vd25lcl9sb3dlcilcblxuICAgIGlmICghbWVtYmVyT3JnKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgIFwiWW91IG11c3QgYmUgYSBtZW1iZXIgb2YgdGhlIG9yZ2FuaXphdGlvbiB0byBjcmVhdGUgYSBwYWNrYWdlIHVuZGVyIGl0XCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIG93bmVyX29yZ19pZCA9IG1lbWJlck9yZy5vcmdfaWRcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nUGFja2FnZSA9IGN0eC5kYlxuICAgIC5nZXRTdGF0ZSgpXG4gICAgLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IGZpbmFsX25hbWUpXG5cbiAgaWYgKGV4aXN0aW5nUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfYWxyZWFkeV9leGlzdHNcIixcbiAgICAgIG1lc3NhZ2U6IFwiQSBwYWNrYWdlIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG5ld1BhY2thZ2UgPSBjdHguZGIuYWRkUGFja2FnZSh7XG4gICAgbmFtZTogZmluYWxfbmFtZSxcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPz8gbnVsbCxcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgb3duZXJfb3JnX2lkLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9mc19zaGE6IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IG51bGwsXG4gICAgbGljZW5zZTogbnVsbCxcbiAgICB3ZWJzaXRlOiBudWxsLFxuICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1bnNjb3BlZF9uYW1lLFxuICAgIHN0YXJfY291bnQ6IDAsXG4gICAgYWlfZGVzY3JpcHRpb246IFwicGxhY2Vob2xkZXIgYWkgZGVzY3JpcHRpb25cIixcbiAgICBpc19wcml2YXRlOiBpc19wcml2YXRlID8/IGZhbHNlLFxuICAgIGlzX3B1YmxpYzogaXNfcHJpdmF0ZSA9PT0gdHJ1ZSA/IGZhbHNlIDogdHJ1ZSxcbiAgICBpc191bmxpc3RlZDogaXNfcHJpdmF0ZSA9PT0gdHJ1ZSA/IHRydWUgOiAoaXNfdW5saXN0ZWQgPz8gZmFsc2UpLFxuICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczogXCJwbGFjZWhvbGRlciBhaSB1c2FnZSBpbnN0cnVjdGlvbnNcIixcbiAgICBkZWZhdWx0X3ZpZXc6IFwiZmlsZXNcIixcbiAgfSlcblxuICBpZiAoIW5ld1BhY2thZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gY3JlYXRlIHBhY2thZ2VcIilcbiAgfVxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHBhY2thZ2U6IHB1YmxpY01hcFBhY2thZ2Uoe1xuICAgICAgLi4ubmV3UGFja2FnZSxcbiAgICAgIG9yZ19vd25lcl90c2NpcmN1aXRfaGFuZGxlOiBvcmc/LnRzY2lyY3VpdF9oYW5kbGUgPz8gbnVsbCxcbiAgICB9KSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgcGFja2FnZUluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXNbcGFja2FnZUluZGV4XVxuXG4gIGNvbnN0IGhhc1Blcm1pc3Npb24gPSBjdHguZGJcbiAgICAuZ2V0U3RhdGUoKVxuICAgIC5vcmdBY2NvdW50cy5zb21lKFxuICAgICAgKG9hKSA9PlxuICAgICAgICBvYS5hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkICYmIG9hLm9yZ19pZCA9PT0gcGtnLm93bmVyX29yZ19pZCxcbiAgICApXG4gIGlmICghaGFzUGVybWlzc2lvbikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgY3R4LmRiLnBhY2thZ2VzLnNwbGljZShwYWNrYWdlSW5kZXgsIDEpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICAvLyBBY2NlcHQgZWl0aGVyIHBhY2thZ2VfaWQgb3IgcGFja2FnZV9uYW1lIHRvIGZpbmQgdGhlIHBhY2thZ2UgdG8gZm9ya1xuICAgICAgcGFja2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAvLyBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGN1c3RvbWl6ZSB0aGUgZm9ya2VkIHBhY2thZ2VcbiAgICAgIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gICAgICBpc191bmxpc3RlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoXG4gICAgICAoZGF0YSkgPT5cbiAgICAgICAgZGF0YS5wYWNrYWdlX2lkICE9PSB1bmRlZmluZWQgfHwgZGF0YS5wYWNrYWdlX25hbWUgIT09IHVuZGVmaW5lZCxcbiAgICAgIHtcbiAgICAgICAgbWVzc2FnZTogXCJFaXRoZXIgcGFja2FnZV9pZCBvciBwYWNrYWdlX25hbWUgbXVzdCBiZSBwcm92aWRlZFwiLFxuICAgICAgfSxcbiAgICApXG4gICAgLnRyYW5zZm9ybSgoZGF0YSkgPT4gKHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICAvLyBJZiB0aGUgcGFja2FnZSBpcyBwcml2YXRlLCBpdCBzaG91bGQgYmUgdW5saXN0ZWRcbiAgICAgIGlzX3VubGlzdGVkOiBkYXRhLmlzX3ByaXZhdGUgPyB0cnVlIDogZGF0YS5pc191bmxpc3RlZCxcbiAgICB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2U6IHBhY2thZ2VTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lLCBpc19wcml2YXRlLCBpc191bmxpc3RlZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgLy8gRmluZCB0aGUgcGFja2FnZSB0byBmb3JrXG4gIGxldCBzb3VyY2VQYWNrYWdlID0gbnVsbFxuICBpZiAocGFja2FnZV9pZCkge1xuICAgIHNvdXJjZVBhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZClcbiAgfSBlbHNlIGlmIChwYWNrYWdlX25hbWUpIHtcbiAgICBzb3VyY2VQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IHBhY2thZ2VfbmFtZSlcbiAgfVxuXG4gIGlmICghc291cmNlUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlRoZSBwYWNrYWdlIHRvIGZvcmsgd2FzIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoc291cmNlUGFja2FnZS5jcmVhdG9yX2FjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJjYW5ub3RfZm9ya19vd25fcGFja2FnZVwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgY2Fubm90IGZvcmsgeW91ciBvd24gcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBmb3JrIGFscmVhZHkgZXhpc3RzICh1c2VyIGFscmVhZHkgaGFzIGEgcGFja2FnZSB3aXRoIHRoZSBzYW1lIG5hbWUpXG4gIGNvbnN0IGZvcmtOYW1lID0gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke3NvdXJjZVBhY2thZ2UudW5zY29wZWRfbmFtZX1gXG4gIGNvbnN0IGV4aXN0aW5nRm9yayA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChwa2cpID0+XG4gICAgICBwa2cuY3JlYXRvcl9hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkICYmIHBrZy5uYW1lID09PSBmb3JrTmFtZSxcbiAgKVxuXG4gIGlmIChleGlzdGluZ0ZvcmspIHtcbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgcGFja2FnZTogcHVibGljTWFwUGFja2FnZShleGlzdGluZ0ZvcmspLFxuICAgIH0pXG4gIH1cblxuICAvLyBGaW5kIHRoZSBsYXRlc3QgcmVsZWFzZSBvZiB0aGUgc291cmNlIHBhY2thZ2VcbiAgY29uc3Qgc291cmNlUGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHJlbGVhc2UpID0+XG4gICAgICByZWxlYXNlLnBhY2thZ2VfaWQgPT09IHNvdXJjZVBhY2thZ2UucGFja2FnZV9pZCAmJlxuICAgICAgcmVsZWFzZS5pc19sYXRlc3QgPT09IHRydWUsXG4gIClcblxuICBpZiAoIXNvdXJjZVBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic291cmNlX3BhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIHNvdXJjZSBwYWNrYWdlIGRvZXMgbm90IGhhdmUgYW55IHJlbGVhc2VzIHRvIGZvcmtcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IHRoZSBmaWxlcyBmcm9tIHRoZSBzb3VyY2UgcGFja2FnZSByZWxlYXNlXG4gIGNvbnN0IHNvdXJjZUZpbGVzID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgKGZpbGUpID0+XG4gICAgICBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gc291cmNlUGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICApXG5cbiAgaWYgKHNvdXJjZUZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNvdXJjZV9wYWNrYWdlX2ZpbGVzX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJUaGUgc291cmNlIHBhY2thZ2UgcmVsZWFzZSBkb2VzIG5vdCBoYXZlIGFueSBmaWxlcyB0byBmb3JrXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENyZWF0ZSB0aGUgZm9ya2VkIHBhY2thZ2VcbiAgY29uc3QgZm9ya2VkUGFja2FnZSA9IGN0eC5kYi5hZGRQYWNrYWdlKHtcbiAgICBuYW1lOiBmb3JrTmFtZSxcbiAgICBkZXNjcmlwdGlvbjogc291cmNlUGFja2FnZS5kZXNjcmlwdGlvbixcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgb3duZXJfb3JnX2lkOiBjdHguYXV0aC5wZXJzb25hbF9vcmdfaWQsXG4gICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbnVsbCxcbiAgICBsYXRlc3RfdmVyc2lvbjogbnVsbCxcbiAgICBsaWNlbnNlOiBudWxsLFxuICAgIHdlYnNpdGU6IG51bGwsXG4gICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVuc2NvcGVkX25hbWU6IHNvdXJjZVBhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICBzdGFyX2NvdW50OiAwLFxuICAgIGFpX2Rlc2NyaXB0aW9uOiBzb3VyY2VQYWNrYWdlLmFpX2Rlc2NyaXB0aW9uIHx8IFwiZm9ya2VkIHBhY2thZ2VcIixcbiAgICBpc19wcml2YXRlOiBpc19wcml2YXRlLFxuICAgIGlzX3B1YmxpYzogIWlzX3ByaXZhdGUsXG4gICAgaXNfdW5saXN0ZWQsXG4gICAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiBcImZvcmtlZCBwYWNrYWdlIHVzYWdlXCIsXG4gICAgaXNfYm9hcmQ6IEJvb2xlYW4oc291cmNlUGFja2FnZS5pc19ib2FyZCksXG4gICAgaXNfcGFja2FnZTogdHJ1ZSxcbiAgICBpc19tb2RlbDogQm9vbGVhbihzb3VyY2VQYWNrYWdlLmlzX21vZGVsKSxcbiAgICBpc19mb290cHJpbnQ6IEJvb2xlYW4oc291cmNlUGFja2FnZS5pc19mb290cHJpbnQpLFxuICAgIGlzX3NuaXBwZXQ6IEJvb2xlYW4oc291cmNlUGFja2FnZS5pc19zbmlwcGV0KSxcbiAgfSlcblxuICBpZiAoIWZvcmtlZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJmYWlsZWRfdG9fY3JlYXRlX2ZvcmtlZF9wYWNrYWdlXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byBjcmVhdGUgZm9ya2VkIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgbmV3IHBhY2thZ2UgcmVsZWFzZSBmb3IgdGhlIGZvcmtlZCBwYWNrYWdlXG4gIGNvbnN0IGZvcmtlZFBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICBwYWNrYWdlX2lkOiBmb3JrZWRQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgdmVyc2lvbjogc291cmNlUGFja2FnZVJlbGVhc2UudmVyc2lvbixcbiAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgY29tbWl0X3NoYTogbnVsbCxcbiAgICBsaWNlbnNlOiBzb3VyY2VQYWNrYWdlUmVsZWFzZS5saWNlbnNlIHx8IG51bGwsXG4gICAgLy8gU2V0dGluZyB0aGUgdHJhbnNwaWxlZCBhcyB0cnVlIG9uIGNyZWF0aW9uXG4gICAgaGFzX3RyYW5zcGlsZWQ6IHRydWUsXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogbnVsbCxcbiAgfSlcblxuICAvLyBVcGRhdGUgdGhlIGZvcmtlZCBwYWNrYWdlIHdpdGggcmVsZWFzZSBpbmZvXG4gIGZvcmtlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9XG4gICAgZm9ya2VkUGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gIGZvcmtlZFBhY2thZ2UubGF0ZXN0X3ZlcnNpb24gPSBmb3JrZWRQYWNrYWdlUmVsZWFzZS52ZXJzaW9uIHx8IG51bGxcblxuICAvLyBDb3B5IGFsbCBmaWxlcyBmcm9tIHRoZSBzb3VyY2UgcGFja2FnZSByZWxlYXNlIHRvIHRoZSBmb3JrZWQgcGFja2FnZSByZWxlYXNlXG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBzb3VyY2VGaWxlcykge1xuICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGZvcmtlZFBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIGZpbGVfcGF0aDogc291cmNlRmlsZS5maWxlX3BhdGgsXG4gICAgICBjb250ZW50X3RleHQ6IHNvdXJjZUZpbGUuY29udGVudF90ZXh0LFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHBhY2thZ2U6IHB1YmxpY01hcFBhY2thZ2UoZm9ya2VkUGFja2FnZSksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvbkJvZHk6IHouYW55KCkub3B0aW9uYWwoKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2U6IHBhY2thZ2VTY2hlbWFcbiAgICAgIC5leHRlbmQoe1xuICAgICAgICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKSxcbiAgICAgICAgdXNlcl9wZXJtaXNzaW9uczogelxuICAgICAgICAgIC5vYmplY3Qoe1xuICAgICAgICAgICAgY2FuX21hbmFnZV9wYWNrYWdlczogei5ib29sZWFuKCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICAub3B0aW9uYWwoKSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkLCBuYW1lIH0gPSByZXEuY29tbW9uUGFyYW1zXG4gIGNvbnN0IGF1dGggPSBcImF1dGhcIiBpbiBjdHggJiYgY3R4LmF1dGggPyBjdHguYXV0aCA6IG51bGxcblxuICBjb25zdCBmb3VuZFBhY2thZ2UgPVxuICAgIChwYWNrYWdlX2lkICYmIGN0eC5kYi5nZXRQYWNrYWdlQnlJZChwYWNrYWdlX2lkKSkgfHxcbiAgICBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSBuYW1lKVxuXG4gIGlmICghZm91bmRQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IGBQYWNrYWdlIG5vdCBmb3VuZCAoc2VhcmNoZWQgdXNpbmcgJHtKU09OLnN0cmluZ2lmeShyZXEuY29tbW9uUGFyYW1zKX0pYCxcbiAgICB9KVxuICB9XG5cbiAgaWYgKFxuICAgIGZvdW5kUGFja2FnZS5pc19wcml2YXRlICYmXG4gICAgYXV0aD8uZ2l0aHViX3VzZXJuYW1lICE9PSBmb3VuZFBhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lXG4gICkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBgUGFja2FnZSBub3QgZm91bmQgKHNlYXJjaGVkIHVzaW5nICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHJlcS5jb21tb25QYXJhbXMsXG4gICAgICApfSlgLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBvd25lck9yZyA9IGN0eC5kYi5nZXRPcmcoeyBvcmdfaWQ6IGZvdW5kUGFja2FnZS5vd25lcl9vcmdfaWQgfSlcblxuICBjb25zdCBjYW5NYW5hZ2VQYWNrYWdlID1cbiAgICBhdXRoICYmXG4gICAgY3R4LmRiXG4gICAgICAuZ2V0U3RhdGUoKVxuICAgICAgLm9yZ0FjY291bnRzLnNvbWUoXG4gICAgICAgIChvcmdfYWNjb3VudCkgPT5cbiAgICAgICAgICBvcmdfYWNjb3VudC5hY2NvdW50X2lkID09PSBhdXRoLmFjY291bnRfaWQgJiZcbiAgICAgICAgICBvcmdfYWNjb3VudC5vcmdfaWQgPT09IGZvdW5kUGFja2FnZS5vd25lcl9vcmdfaWQsXG4gICAgICApXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlOiB7XG4gICAgICAuLi5wdWJsaWNNYXBQYWNrYWdlKGZvdW5kUGFja2FnZSksXG4gICAgICBpc19zdGFycmVkOiBhdXRoXG4gICAgICAgID8gY3R4LmRiLmhhc1N0YXJyZWQoYXV0aC5hY2NvdW50X2lkLCBmb3VuZFBhY2thZ2UucGFja2FnZV9pZClcbiAgICAgICAgOiBmYWxzZSxcbiAgICAgIG9yZ19vd25lcl90c2NpcmN1aXRfaGFuZGxlOiBvd25lck9yZz8udHNjaXJjdWl0X2hhbmRsZSA/PyBudWxsLFxuICAgICAgLi4uKGF1dGhcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB1c2VyX3Blcm1pc3Npb25zOiB7XG4gICAgICAgICAgICAgIGNhbl9tYW5hZ2VfcGFja2FnZXM6IGNhbk1hbmFnZVBhY2thZ2UgPz8gZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgQW55Q2lyY3VpdEVsZW1lbnQgfSBmcm9tIFwiY2lyY3VpdC1qc29uXCJcbmltcG9ydCB7XG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnLFxuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2Zyxcbn0gZnJvbSBcImNpcmN1aXQtdG8tc3ZnXCJcbmltcG9ydCB7IGNvbnZlcnRDaXJjdWl0SnNvblRvU2ltcGxlM2RTdmcgfSBmcm9tIFwiY2lyY3VpdC1qc29uLXRvLXNpbXBsZS0zZFwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcmVuZGVyQXN5bmMgfSBmcm9tIFwiQHJlc3ZnL3Jlc3ZnLWpzXCJcblxuLy8gRGVmaW5lIHRoZSB2aWV3IHR5cGVzIGFuZCBleHRlbnNpb25zXG5jb25zdCBWSUVXX1RZUEVTID0gW1wic2NoZW1hdGljXCIsIFwicGNiXCIsIFwiYXNzZW1ibHlcIiwgXCIzZFwiXSBhcyBjb25zdFxuY29uc3QgRVhURU5TSU9OUyA9IFtcInN2Z1wiLCBcInBuZ1wiXSBhcyBjb25zdFxuXG4vLyBDcmVhdGUgYSByZWdleCBwYXR0ZXJuIGZvciB0aGUgdmlldyBmb3JtYXQgdGhhdCBpbmNsdWRlcyBvcHRpb25hbCB3aWR0aCBzdWZmaXhcbmNvbnN0IHZpZXdGb3JtYXRQYXR0ZXJuID0gbmV3IFJlZ0V4cChcbiAgYF4oJHtWSUVXX1RZUEVTLmpvaW4oXCJ8XCIpfSktPyhcXFxcZCt3KT9cXFxcLigke0VYVEVOU0lPTlMuam9pbihcInxcIil9KSRgLFxuKVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcm91dGVQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKSxcbiAgICB2aWV3X2Zvcm1hdDogei5zdHJpbmcoKS5yZWdleCh2aWV3Rm9ybWF0UGF0dGVybiwge1xuICAgICAgbWVzc2FnZTogYEludmFsaWQgdmlldyBmb3JtYXQuIE11c3QgYmUgb25lIG9mOiAke1ZJRVdfVFlQRVMuam9pbihcIiwgXCIpfSB3aXRoIG9wdGlvbmFsIHdpZHRoIHN1ZmZpeCAoZS5nLiAtODAwdykuJHtFWFRFTlNJT05TLmpvaW4oXCIgb3IgXCIpfWAsXG4gICAgfSksXG4gIH0pLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIGZzX3NoYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAgcmF3UmVzcG9uc2U6IHRydWUsXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvd25lcl9naXRodWJfdXNlcm5hbWUsIHVuc2NvcGVkX25hbWUsIHZpZXdfZm9ybWF0IH0gPSByZXEucm91dGVQYXJhbXNcbiAgY29uc3QgeyBmc19zaGEgfSA9IHJlcS5xdWVyeVxuXG4gIC8vIFBhcnNlIHRoZSB2aWV3IGZvcm1hdFxuICBjb25zdCBbb3V0cHV0VHlwZSwgZm9ybWF0XSA9IHZpZXdfZm9ybWF0LnNwbGl0KFwiLlwiKVxuXG4gIC8vIEdldCB0aGUgcGFja2FnZSBieSBvd25lciBoYW5kbGUgYW5kIHVuc2NvcGVkIG5hbWVcbiAgY29uc3Qgb3duZXJPcmcgPSBjdHguZGIub3JnYW5pemF0aW9ucy5maW5kKFxuICAgIChvKSA9PlxuICAgICAgby50c2NpcmN1aXRfaGFuZGxlPy50b0xvd2VyQ2FzZSgpID09PSBvd25lcl9naXRodWJfdXNlcm5hbWUudG9Mb3dlckNhc2UoKSxcbiAgKVxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocCkgPT5cbiAgICAgIHAub3duZXJfb3JnX2lkID09PSBvd25lck9yZz8ub3JnX2lkICYmIHAudW5zY29wZWRfbmFtZSA9PT0gdW5zY29wZWRfbmFtZSxcbiAgKVxuXG4gIC8vIElmIHBhY2thZ2UgaXMgbm90IGZvdW5kLCByZXR1cm4gNDA0XG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2UgZm9yIHRoZSBnaXZlbiBoYXNoIHZhbHVlXG4gIGNvbnN0IHBrZ19yZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuZnNfc2hhID09PSBmc19zaGEsXG4gIClcblxuICBpZiAoIXBrZ19yZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgY2lyY3VpdCBKU09OIGZyb20gdGhlIHBhY2thZ2UgZmlsZXNcbiAgY29uc3QgY2lyY3VpdF9qc29uX2ZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKHBmKSA9PlxuICAgICAgcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwa2dfcmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgIChwZi5maWxlX3BhdGggPT09IFwiY2lyY3VpdC5qc29uXCIgfHxcbiAgICAgICAgcGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKSxcbiAgKVxuXG4gIGlmICghY2lyY3VpdF9qc29uX2ZpbGU/LmNvbnRlbnRfdGV4dCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImNpcmN1aXRfanNvbl9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQ2lyY3VpdCBKU09OIG5vdCBmb3VuZCBmb3IgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjaXJjdWl0X2pzb24gPSBKU09OLnBhcnNlKGNpcmN1aXRfanNvbl9maWxlLmNvbnRlbnRfdGV4dClcblxuICAvLyBDb252ZXJ0IGNpcmN1aXQganNvbiB0byBzdmdcbiAgbGV0IHN2ZyA9IFwiXCJcbiAgaWYgKG91dHB1dFR5cGUgPT09IFwic2NoZW1hdGljXCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyhjaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSlcbiAgfSBlbHNlIGlmIChvdXRwdXRUeXBlID09PSBcInBjYlwiKSB7XG4gICAgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9QY2JTdmcoY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10pXG4gIH0gZWxzZSBpZiAob3V0cHV0VHlwZSA9PT0gXCJhc3NlbWJseVwiKSB7XG4gICAgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9Bc3NlbWJseVN2ZyhjaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSlcbiAgfSBlbHNlIGlmIChvdXRwdXRUeXBlID09PSBcIjNkXCIpIHtcbiAgICBzdmcgPSBhd2FpdCBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NpbXBsZTNkU3ZnKGNpcmN1aXRfanNvbiwge1xuICAgICAgYmFja2dyb3VuZDoge1xuICAgICAgICBjb2xvcjogXCIjZmZmXCIsXG4gICAgICAgIG9wYWNpdHk6IDAuMCxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0Wm9vbU11bHRpcGxpZXI6IDEuMSxcbiAgICB9KVxuICB9XG4gIGlmIChmb3JtYXQgPT09IFwic3ZnXCIpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHN2Zywge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImltYWdlL3N2Zyt4bWxcIixcbiAgICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwicHVibGljLCBtYXgtYWdlPTg2NDAwLCBzLW1heGFnZT04NjQwMFwiLFxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcG5nQnVmZmVyID0gYXdhaXQgcmVuZGVyQXN5bmMoc3ZnKVxuICByZXR1cm4gbmV3IFJlc3BvbnNlKHBuZ0J1ZmZlci5hc1BuZygpLmJ1ZmZlciBhcyBBcnJheUJ1ZmZlciwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiaW1hZ2UvcG5nXCIsXG4gICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJwdWJsaWMsIG1heC1hZ2U9ODY0MDAsIHMtbWF4YWdlPTg2NDAwXCIsXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2VcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBsaW1pdDogei5zdHJpbmcoKS5yZWdleCgvXlxcZCskLykudHJhbnNmb3JtKE51bWJlcikub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VzOiB6LmFycmF5KHBhY2thZ2VTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBsaW1pdCA9IHJlcS5xdWVyeS5saW1pdCB8fCA1MFxuXG4gIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgbm90IHNuaXBwZXRzXG4gIGNvbnN0IHBhY2thZ2VzID0gY3R4LmRiLnBhY2thZ2VzXG4gICAgLmZpbHRlcigocGtnKSA9PiAhcGtnLmlzX3NuaXBwZXQpXG4gICAgLnNvcnQoXG4gICAgICAoYSwgYikgPT5cbiAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSxcbiAgICApXG4gICAgLnNsaWNlKDAsIGxpbWl0KVxuICAgIC5tYXAoKHBrZykgPT4gcHVibGljTWFwUGFja2FnZShwa2cpKVxuXG4gIHJldHVybiBjdHguanNvbih7IHBhY2thZ2VzIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe30pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZXM6IHouYXJyYXkocGFja2FnZVNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIC8vIEdldCBhbGwgcGFja2FnZXMgYW5kIHRoZWlyIHN0YXIgY291bnRzXG4gIGNvbnN0IHBhY2thZ2VzV2l0aFN0YXJzID0gY3R4LmRiLnBhY2thZ2VzLm1hcCgocGtnKSA9PiB7XG4gICAgY29uc3Qgc3RhckNvdW50ID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgKS5sZW5ndGhcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5wa2csXG4gICAgICBzdGFyX2NvdW50OiBzdGFyQ291bnQsXG4gICAgfVxuICB9KVxuXG4gIC8vIEZpbHRlciBvdXQgcGFja2FnZXMgd2l0aCBubyBzdGFycyBhbmQgc29ydCBieSBzdGFyIGNvdW50XG4gIGNvbnN0IHRyZW5kaW5nUGFja2FnZXMgPSBjdHguZGIucGFja2FnZXNcbiAgICAuZmlsdGVyKChwKSA9PiBwLnN0YXJfY291bnQgPiAwKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiLnN0YXJfY291bnQgLSBhLnN0YXJfY291bnQpXG4gICAgLnNsaWNlKDAsIDUwKVxuXG4gIC8vIFJhbmRvbWl6ZSB0aGUgb3JkZXIgb2YgdGhlIHBhY2thZ2VzLCB0aGVuIHBpY2sgdGhlIGZpcnN0IDEwXG4gIGNvbnN0IHJhbmRvbWl6ZWRQYWNrYWdlcyA9IHRyZW5kaW5nUGFja2FnZXMuc29ydCgoKSA9PiBNYXRoLnJhbmRvbSgpIC0gMC41KVxuICBjb25zdCBzZWxlY3RlZFBhY2thZ2VzID0gcmFuZG9taXplZFBhY2thZ2VzLnNsaWNlKDAsIDEwKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZXM6IHNlbGVjdGVkUGFja2FnZXMubWFwKChwKSA9PiAoe1xuICAgICAgLi4ucCxcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IHAubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBudWxsLFxuICAgIH0pKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm9wdGlvbmFsX3Nlc3Npb25cIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgY3JlYXRvcl9hY2NvdW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgb3duZXJfdHNjaXJjdWl0X2hhbmRsZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3dyaXRhYmxlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIG93bmVyX29yZ19pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBsaW1pdDogei5udW1iZXIoKS5pbnQoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlczogei5hcnJheShcbiAgICAgIHBhY2thZ2VTY2hlbWEuZXh0ZW5kKHtcbiAgICAgICAgc3RhcnJlZF9hdDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgICAgICB1c2VyX3Blcm1pc3Npb25zOiB6XG4gICAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgICBjYW5fbWFuYWdlX3BhY2thZ2VzOiB6LmJvb2xlYW4oKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5vcHRpb25hbCgpLFxuICAgICAgfSksXG4gICAgKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIGNyZWF0b3JfYWNjb3VudF9pZCxcbiAgICBvd25lcl9naXRodWJfdXNlcm5hbWUsXG4gICAgb3duZXJfdHNjaXJjdWl0X2hhbmRsZSxcbiAgICBuYW1lLFxuICAgIGlzX3dyaXRhYmxlLFxuICAgIG93bmVyX29yZ19pZCxcbiAgICBsaW1pdCxcbiAgfSA9IHJlcS5jb21tb25QYXJhbXNcblxuICBjb25zdCBhdXRoID0gXCJhdXRoXCIgaW4gY3R4ICYmIGN0eC5hdXRoID8gY3R4LmF1dGggOiBudWxsXG5cbiAgaWYgKFxuICAgICFhdXRoICYmXG4gICAgIWlzX3dyaXRhYmxlICYmXG4gICAgIWNyZWF0b3JfYWNjb3VudF9pZCAmJlxuICAgICFvd25lcl9naXRodWJfdXNlcm5hbWUgJiZcbiAgICAhb3duZXJfdHNjaXJjdWl0X2hhbmRsZSAmJlxuICAgICFvd25lcl9vcmdfaWRcbiAgKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9yZXF1ZXN0XCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBtdXN0IHByb3ZpZGUgc29tZSBmaWx0ZXJpbmcgcGFyYW1ldGVycyBvciBiZSBsb2dnZWQgaW5cIixcbiAgICB9KVxuICB9XG5cbiAgLy8gSGVscGVyIHRvIGNoZWNrIGlmIHVzZXIgY2FuIG1hbmFnZSBhIHBhY2thZ2VcbiAgY29uc3QgY2FuTWFuYWdlUGFja2FnZSA9IChwa2c6IGFueSkgPT4ge1xuICAgIGlmICghYXV0aCkgcmV0dXJuIGZhbHNlXG4gICAgLy8gQ2hlY2sgaWYgdXNlciBpcyBhIG1lbWJlciBvZiB0aGUgcGFja2FnZSdzIG93bmVyIG9yZ1xuICAgIGNvbnN0IHN0YXRlID0gY3R4LmRiLmdldFN0YXRlKClcbiAgICByZXR1cm4gc3RhdGUub3JnQWNjb3VudHMuc29tZShcbiAgICAgIChvYSkgPT5cbiAgICAgICAgb2EuYWNjb3VudF9pZCA9PT0gYXV0aC5hY2NvdW50X2lkICYmIG9hLm9yZ19pZCA9PT0gcGtnLm93bmVyX29yZ19pZCxcbiAgICApXG4gIH1cblxuICBsZXQgcGFja2FnZXMgPSBjdHguZGIucGFja2FnZXNcblxuICAvLyBBcHBseSBmaWx0ZXJzXG4gIGlmIChjcmVhdG9yX2FjY291bnRfaWQpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwKSA9PiBwLmNyZWF0b3JfYWNjb3VudF9pZCA9PT0gY3JlYXRvcl9hY2NvdW50X2lkLFxuICAgIClcbiAgfVxuICBpZiAob3duZXJfZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocCkgPT4gcC5vd25lcl9naXRodWJfdXNlcm5hbWUgPT09IG93bmVyX2dpdGh1Yl91c2VybmFtZSxcbiAgICApXG4gIH1cbiAgaWYgKG93bmVyX3RzY2lyY3VpdF9oYW5kbGUpIHtcbiAgICBjb25zdCBvcmcgPSBjdHguZGIub3JnYW5pemF0aW9ucy5maW5kKFxuICAgICAgKG8pID0+IG8udHNjaXJjdWl0X2hhbmRsZSA9PT0gb3duZXJfdHNjaXJjdWl0X2hhbmRsZSxcbiAgICApXG4gICAgaWYgKG9yZykge1xuICAgICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoKHApID0+IHAub3duZXJfb3JnX2lkID09PSBvcmcub3JnX2lkKVxuICAgIH1cbiAgfVxuICBpZiAobmFtZSkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpXG4gIH1cbiAgaWYgKG93bmVyX29yZ19pZCkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKChwKSA9PiBwLm93bmVyX29yZ19pZCA9PT0gb3duZXJfb3JnX2lkKVxuICB9XG4gIGlmIChsaW1pdCkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuc2xpY2UoMCwgbGltaXQpXG4gIH1cbiAgaWYgKGlzX3dyaXRhYmxlICYmIGF1dGgpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihjYW5NYW5hZ2VQYWNrYWdlKVxuICB9XG5cbiAgLy8gR2V0IHN0YXIgdGltZXN0YW1wcyBmb3IgYXV0aGVudGljYXRlZCB1c2VyXG4gIGNvbnN0IHN0YXJUaW1lc3RhbXBzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKVxuICBpZiAoYXV0aCkge1xuICAgIGN0eC5kYi5hY2NvdW50UGFja2FnZXNcbiAgICAgIC5maWx0ZXIoKGFwKSA9PiBhcC5hY2NvdW50X2lkID09PSBhdXRoLmFjY291bnRfaWQgJiYgYXAuaXNfc3RhcnJlZClcbiAgICAgIC5mb3JFYWNoKChhcCkgPT4ge1xuICAgICAgICBzdGFyVGltZXN0YW1wcy5zZXQoYXAucGFja2FnZV9pZCwgYXAudXBkYXRlZF9hdClcbiAgICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VzOiBwYWNrYWdlcy5tYXAoKHApID0+ICh7XG4gICAgICAuLi5wLFxuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogcC5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IG51bGwsXG4gICAgICBzdGFycmVkX2F0OiBzdGFyVGltZXN0YW1wcy5nZXQocC5wYWNrYWdlX2lkKSB8fCBudWxsLFxuICAgICAgLi4uKGF1dGhcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB1c2VyX3Blcm1pc3Npb25zOiB7XG4gICAgICAgICAgICAgIGNhbl9tYW5hZ2VfcGFja2FnZXM6IGNhbk1hbmFnZVBhY2thZ2UocCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgfSkpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKHoub2JqZWN0KHsgbmFtZTogei5zdHJpbmcoKSB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHBhY2thZ2VJZDogc3RyaW5nXG5cbiAgLy8gR2V0IHBhY2thZ2UgSUQgZWl0aGVyIGRpcmVjdGx5IG9yIGJ5IG5hbWVcbiAgaWYgKFwicGFja2FnZV9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGNvbnN0IGJvZHkgPSByZXEuanNvbkJvZHlcbiAgICBwYWNrYWdlSWQgPSBib2R5LnBhY2thZ2VfaWRcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBuYW1lIGlzIHByb3ZpZGVkLCBsb29rIHVwIHRoZSBwYWNrYWdlX2lkXG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIGNvbnN0IHBhY2thZ2VEYXRhID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IGJvZHkubmFtZSlcblxuICAgIGlmICghcGFja2FnZURhdGEpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBwYWNrYWdlSWQgPSBwYWNrYWdlRGF0YS5wYWNrYWdlX2lkXG4gIH1cblxuICAvLyBDaGVjayBpZiBwYWNrYWdlIGV4aXN0cyAoZXh0cmEgY2hlY2sgZm9yIElELWJhc2VkIGxvb2t1cClcbiAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKVxuXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBzdGFycmVkXG4gIGNvbnN0IGV4aXN0aW5nID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgIChhcCkgPT5cbiAgICAgIGFwLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICApXG5cbiAgaWYgKCFleGlzdGluZz8uaXNfc3RhcnJlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIG5vdCBzdGFycmVkIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBzdGFyIGNvdW50XG4gIHBrZy5zdGFyX2NvdW50ID0gTWF0aC5tYXgoMCwgKHBrZy5zdGFyX2NvdW50IHx8IDApIC0gMSlcblxuICAvLyBSZW1vdmUgc3RhciBieSB1cGRhdGluZyBpc19zdGFycmVkIHRvIGZhbHNlXG4gIGV4aXN0aW5nLmlzX3N0YXJyZWQgPSBmYWxzZVxuICBleGlzdGluZy51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm9wdGlvbmFsX3Nlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBxdWVyeTogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlczogei5hcnJheShwYWNrYWdlU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBxdWVyeSB9ID0gcmVxLmpzb25Cb2R5XG4gIGNvbnN0IGF1dGggPSBcImF1dGhcIiBpbiBjdHggJiYgY3R4LmF1dGggPyBjdHguYXV0aCA6IG51bGxcbiAgY29uc3QgcGFja2FnZXMgPSBjdHguZGIuc2VhcmNoUGFja2FnZXMocXVlcnksIGF1dGg/LmFjY291bnRfaWQpXG4gIHJldHVybiBjdHguanNvbih7IHBhY2thZ2VzLCBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHN1Y2Nlc3M6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHBhY2thZ2VfaW5mbyA9IGN0eC5kYi5nZXRQYWNrYWdlQnlJZChwYWNrYWdlX2lkKVxuICBpZiAoIXBhY2thZ2VfaW5mbykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChwYWNrYWdlX2luZm8ub3duZXJfZ2l0aHViX3VzZXJuYW1lICE9PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJ1bmF1dGhvcml6ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT25seSB0aGUgcGFja2FnZSBvd25lciBjYW4gdXBkYXRlIEFJIGRlc2NyaXB0aW9uXCIsXG4gICAgfSlcbiAgfVxuXG4gIGN0eC5kYi51cGRhdGVQYWNrYWdlKHBhY2thZ2VfaWQsIHtcbiAgICBhaV9kZXNjcmlwdGlvbjogXCJOZXcgYWkgZGVzY3JpcHRpb25cIixcbiAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwiTmV3IGFpIHVzYWdlIGluc3RydWN0aW9uc1wiLFxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7IHN1Y2Nlc3M6IHRydWUgfSlcbn0pXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCIuLi8uLi8uLi9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiLi4vLi4vLi4vbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgICBuYW1lOiB6XG4gICAgICAgIC5zdHJpbmcoKVxuICAgICAgICAucmVnZXgoXG4gICAgICAgICAgL15bQGEtekEtWjAtOS1fXFwvXSskLyxcbiAgICAgICAgICBcIlBhY2thZ2UgbmFtZSBjYW4gb25seSBjb250YWluIGxldHRlcnMsIG51bWJlcnMsIGh5cGhlbnMsIHVuZGVyc2NvcmVzLCBhbmQgZm9yd2FyZCBzbGFzaGVzXCIsXG4gICAgICAgIClcbiAgICAgICAgLnRyYW5zZm9ybSgobmFtZSkgPT4gbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpKVxuICAgICAgICAub3B0aW9uYWwoKSxcbiAgICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICB3ZWJzaXRlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBnaXRodWJfcmVwb19mdWxsX25hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICAgICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICAgIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgICAgZGVmYXVsdF92aWV3OiB6LmVudW0oW1wiZmlsZXNcIiwgXCIzZFwiLCBcInBjYlwiLCBcInNjaGVtYXRpY1wiXSkub3B0aW9uYWwoKSxcbiAgICAgIGFsbG93X3ByX3ByZXZpZXdzOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLnRyYW5zZm9ybSgoZGF0YSkgPT4gKHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICBpc191bmxpc3RlZDogZGF0YS5pc19wcml2YXRlID8gdHJ1ZSA6IGRhdGEuaXNfdW5saXN0ZWQsXG4gICAgfSkpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIHBhY2thZ2VfaWQsXG4gICAgbmFtZSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICB3ZWJzaXRlLFxuICAgIGlzX3ByaXZhdGUsXG4gICAgaXNfdW5saXN0ZWQsXG4gICAgZ2l0aHViX3JlcG9fZnVsbF9uYW1lLFxuICAgIGRlZmF1bHRfdmlldyxcbiAgICBhbGxvd19wcl9wcmV2aWV3cyxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHBhY2thZ2VJbmRleCA9IGN0eC5kYi5wYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCxcbiAgKVxuXG4gIGlmIChwYWNrYWdlSW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZXhpc3RpbmdQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzW3BhY2thZ2VJbmRleF1cblxuICAvLyBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgcGFja2FnZVxuICBjb25zdCBoYXNQZXJtaXNzaW9uID0gY3R4LmRiXG4gICAgLmdldFN0YXRlKClcbiAgICAub3JnQWNjb3VudHMuc29tZShcbiAgICAgIChvYSkgPT5cbiAgICAgICAgb2EuYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJlxuICAgICAgICBvYS5vcmdfaWQgPT09IGV4aXN0aW5nUGFja2FnZS5vd25lcl9vcmdfaWQsXG4gICAgKVxuICBpZiAoIWhhc1Blcm1pc3Npb24pIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGZvciBkdXBsaWNhdGUgcGFja2FnZSBuYW1lIGlmIG5hbWUgaXMgYmVpbmcgdXBkYXRlZFxuICBpZiAobmFtZSkge1xuICAgIGNvbnN0IG5ld0Z1bGxOYW1lID0gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke25hbWV9YFxuICAgIGNvbnN0IGR1cGxpY2F0ZVBhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwKSA9PiBwLm5hbWUgPT09IG5ld0Z1bGxOYW1lICYmIHAucGFja2FnZV9pZCAhPT0gcGFja2FnZV9pZCxcbiAgICApXG4gICAgaWYgKGR1cGxpY2F0ZVBhY2thZ2UpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgICBtZXNzYWdlOiBcIkEgcGFja2FnZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0c1wiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCB1cGRhdGVkUGFja2FnZSA9IGN0eC5kYi51cGRhdGVQYWNrYWdlKHBhY2thZ2VfaWQsIHtcbiAgICBuYW1lOiBuYW1lID8gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke25hbWV9YCA6IGV4aXN0aW5nUGFja2FnZS5uYW1lLFxuICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/PyBleGlzdGluZ1BhY2thZ2UuZGVzY3JpcHRpb24sXG4gICAgdW5zY29wZWRfbmFtZTogbmFtZSA/PyBleGlzdGluZ1BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICB3ZWJzaXRlOiB3ZWJzaXRlID8/IGV4aXN0aW5nUGFja2FnZS53ZWJzaXRlLFxuICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTpcbiAgICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZSA9PT0gbnVsbFxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiAoZ2l0aHViX3JlcG9fZnVsbF9uYW1lID8/IGV4aXN0aW5nUGFja2FnZS5naXRodWJfcmVwb19mdWxsX25hbWUpLFxuICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgPz8gZXhpc3RpbmdQYWNrYWdlLmlzX3ByaXZhdGUsXG4gICAgaXNfcHVibGljOlxuICAgICAgaXNfcHJpdmF0ZSAhPT0gdW5kZWZpbmVkID8gIWlzX3ByaXZhdGUgOiBleGlzdGluZ1BhY2thZ2UuaXNfcHVibGljLFxuICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCA/PyBleGlzdGluZ1BhY2thZ2UuaXNfdW5saXN0ZWQsXG4gICAgZGVmYXVsdF92aWV3OiBkZWZhdWx0X3ZpZXcgPz8gZXhpc3RpbmdQYWNrYWdlLmRlZmF1bHRfdmlldyxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgYWxsb3dfcHJfcHJldmlld3M6IGFsbG93X3ByX3ByZXZpZXdzID8/IGV4aXN0aW5nUGFja2FnZS5hbGxvd19wcl9wcmV2aWV3cyxcbiAgfSlcblxuICBpZiAoIXVwZGF0ZWRQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwidXBkYXRlX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gdXBkYXRlIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlOiB1cGRhdGVkUGFja2FnZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3QgUFJPWFlfSEVBREVSUyA9IFtcbiAgXCJYLVRhcmdldC1VcmxcIixcbiAgXCJYLVNlbmRlci1PcmlnaW5cIixcbiAgXCJYLVNlbmRlci1Ib3N0XCIsXG4gIFwiWC1TZW5kZXItUmVmZXJlclwiLFxuICBcIlgtU2VuZGVyLVVzZXItQWdlbnRcIixcbiAgXCJYLVNlbmRlci1Db29raWVcIixcbl1cblxuY29uc3QgQUxMT1dFRF9ET01BSU5TOiBBcnJheTx7IGRvbWFpbjogc3RyaW5nOyByb3V0ZXM/OiBzdHJpbmdbXSB9PiA9IFtcbiAgeyBkb21haW46IFwiZWFzeWVkYS5jb21cIiB9LFxuXVxuXG5mdW5jdGlvbiBpc0FsbG93ZWREb21haW4odXJsOiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IGhvc3RuYW1lLCBwYXRobmFtZSwgcG9ydCB9ID0gbmV3IFVSTCh1cmwpXG4gICAgY29uc3QgYWxsb3dlZERvbWFpbiA9IEFMTE9XRURfRE9NQUlOUy5maW5kKFxuICAgICAgKGRvbWFpbikgPT4gZG9tYWluLmRvbWFpbiA9PT0gaG9zdG5hbWUsXG4gICAgKVxuXG4gICAgaWYgKGFsbG93ZWREb21haW4pIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWFsbG93ZWREb21haW4ucm91dGVzIHx8XG4gICAgICAgIGFsbG93ZWREb21haW4ucm91dGVzLnNvbWUoKHJvdXRlKSA9PiBwYXRobmFtZS5zdGFydHNXaXRoKHJvdXRlKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBob3N0bmFtZSA9PT0gXCJsb2NhbGhvc3RcIiB8fCAoaG9zdG5hbWUgPT09IFwiMTI3LjAuMC4xXCIgJiYgcG9ydClcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIiwgXCJQVVRcIiwgXCJERUxFVEVcIiwgXCJQQVRDSFwiLCBcIkhFQURcIiwgXCJPUFRJT05TXCJdLFxuICBqc29uUmVzcG9uc2U6IHouYW55KCksXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGlmIChyZXEuaGVhZGVycy5nZXQoXCJYLXByb3hpZWRcIikpIHtcbiAgICByZXR1cm4gY3R4Lmpzb24oXG4gICAgICB7IGVycm9yOiBcIlJlY3Vyc2l2ZSBwcm94eSBjYWxscyBhcmUgbm90IGFsbG93ZWRcIiB9LFxuICAgICAgeyBzdGF0dXM6IDQwMyB9LFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHRhcmdldFVybCA9IHJlcS5oZWFkZXJzLmdldChcIlgtVGFyZ2V0LVVybFwiKVxuXG4gIGlmICghdGFyZ2V0VXJsKSB7XG4gICAgcmV0dXJuIGN0eC5qc29uKFxuICAgICAgeyBlcnJvcjogXCJYLVRhcmdldC1VcmwgaGVhZGVyIGlzIHJlcXVpcmVkXCIgfSxcbiAgICAgIHsgc3RhdHVzOiA0MDAgfSxcbiAgICApXG4gIH1cblxuICBpZiAoIWlzQWxsb3dlZERvbWFpbih0YXJnZXRVcmwpKSB7XG4gICAgcmV0dXJuIGN0eC5qc29uKHsgZXJyb3I6IFwiRG9tYWluIG5vdCBhbGxvd2VkXCIgfSwgeyBzdGF0dXM6IDQwMyB9KVxuICB9XG5cbiAgbGV0IGJvZHk6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBpZiAoW1wiUE9TVFwiLCBcIlBVVFwiLCBcIlBBVENIXCJdLmluY2x1ZGVzKHJlcS5tZXRob2QpKSB7XG4gICAgYm9keSA9IGF3YWl0IHJlcS5jbG9uZSgpLnRleHQoKVxuICB9XG5cbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlcS5oZWFkZXJzKVxuXG4gIGNvbnN0IHNlbmRlck9yaWdpbiA9IHJlcS5oZWFkZXJzLmdldChcIlgtU2VuZGVyLU9yaWdpblwiKVxuICBpZiAoc2VuZGVyT3JpZ2luKSB7XG4gICAgaGVhZGVycy5zZXQoXCJPcmlnaW5cIiwgc2VuZGVyT3JpZ2luKVxuICB9XG5cbiAgY29uc3Qgc2VuZGVySG9zdCA9IHJlcS5oZWFkZXJzLmdldChcIlgtU2VuZGVyLUhvc3RcIilcbiAgaWYgKHNlbmRlckhvc3QpIHtcbiAgICBjb25zdCBob3N0VmFsdWUgPSBzZW5kZXJIb3N0LnJlcGxhY2UoL15odHRwcz86XFwvXFwvLywgXCJcIilcbiAgICBoZWFkZXJzLnNldChcIkhvc3RcIiwgaG9zdFZhbHVlKVxuICAgIGhlYWRlcnMuc2V0KFwiYXV0aG9yaXR5XCIsIGhvc3RWYWx1ZSlcbiAgfVxuXG4gIGNvbnN0IHNlbmRlclJlZmVyZXIgPSByZXEuaGVhZGVycy5nZXQoXCJYLVNlbmRlci1SZWZlcmVyXCIpXG4gIGlmIChzZW5kZXJSZWZlcmVyKSB7XG4gICAgaGVhZGVycy5zZXQoXCJSZWZlcmVyXCIsIHNlbmRlclJlZmVyZXIpXG4gIH1cblxuICBjb25zdCBzZW5kZXJVc2VyQWdlbnQgPSByZXEuaGVhZGVycy5nZXQoXCJYLVNlbmRlci1Vc2VyLUFnZW50XCIpXG4gIGlmIChzZW5kZXJVc2VyQWdlbnQpIHtcbiAgICBoZWFkZXJzLnNldChcIlVzZXItQWdlbnRcIiwgc2VuZGVyVXNlckFnZW50KVxuICB9XG5cbiAgY29uc3Qgc2VuZGVyQ29va2llID0gcmVxLmhlYWRlcnMuZ2V0KFwiWC1TZW5kZXItQ29va2llXCIpXG4gIGlmIChzZW5kZXJDb29raWUpIHtcbiAgICBoZWFkZXJzLnNldChcIkNvb2tpZVwiLCBzZW5kZXJDb29raWUpXG4gIH1cblxuICBmb3IgKGNvbnN0IGhlYWRlciBvZiBQUk9YWV9IRUFERVJTKSB7XG4gICAgaGVhZGVycy5kZWxldGUoaGVhZGVyKVxuICB9XG5cbiAgaGVhZGVycy5kZWxldGUoXCJjb250ZW50LWVuY29kaW5nXCIpXG4gIGhlYWRlcnMuZGVsZXRlKFwiYWNjZXB0LWVuY29kaW5nXCIpXG4gIGhlYWRlcnMuc2V0KFwiWC1wcm94aWVkXCIsIFwidHJ1ZVwiKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0YXJnZXRVcmwsIHtcbiAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICBib2R5OiBbXCJHRVRcIiwgXCJIRUFEXCJdLmluY2x1ZGVzKHJlcS5tZXRob2QpID8gdW5kZWZpbmVkIDogYm9keSxcbiAgICB9KVxuXG4gICAgY29uc3QgcmVzcG9uc2VIZWFkZXJzID0gbmV3IEhlYWRlcnMocmVzcG9uc2UuaGVhZGVycylcbiAgICByZXNwb25zZUhlYWRlcnMuZGVsZXRlKFwiY29udGVudC1lbmNvZGluZ1wiKVxuXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShyZXNwb25zZS5ib2R5LCB7XG4gICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsXG4gICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgfSlcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiUHJveHkgZXJyb3I6XCIsIGVycm9yKVxuICAgIHJldHVybiBjdHguanNvbihcbiAgICAgIHsgZXJyb3I6IHsgbWVzc2FnZTogXCJGYWlsZWQgdG8gcHJveHkgcmVxdWVzdFwiIH0gfSxcbiAgICAgIHsgc3RhdHVzOiA1MDIgfSxcbiAgICApXG4gIH1cbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBtZXRob2RzOiBbXCJQT1NUXCIsIFwiREVMRVRFXCJdLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc2Vzc2lvbl9pZCB9ID0gY3R4LmF1dGhcblxuICBjb25zdCBkZWxldGVkID0gY3R4LmRiLmRlbGV0ZVNlc3Npb24oc2Vzc2lvbl9pZClcblxuICBpZiAoIWRlbGV0ZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzZXNzaW9uX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTZXNzaW9uIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0X2lkIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBDaGVjayBpZiBzbmlwcGV0IGV4aXN0cyAoYXMgYSBwYWNrYWdlKVxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRfaWQgJiYgcGtnLmlzX3NuaXBwZXQgPT09IHRydWUsXG4gIClcblxuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBhbHJlYWR5IHN0YXJyZWRcbiAgY29uc3QgZXhpc3RpbmcgPSBjdHguZGIuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgKGFwKSA9PlxuICAgICAgYXAuYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBhcC5wYWNrYWdlX2lkID09PSBzbmlwcGV0X2lkLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nPy5pc19zdGFycmVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWxyZWFkeV9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIGFscmVhZHkgc3RhcnJlZCB0aGlzIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICBzbmlwcGV0LnN0YXJfY291bnQgPSAoc25pcHBldC5zdGFyX2NvdW50IHx8IDApICsgMVxuXG4gIGlmIChleGlzdGluZykge1xuICAgIC8vIElmIHJlY29yZCBleGlzdHMgYnV0IGlzX3N0YXJyZWQgaXMgZmFsc2UsIHVwZGF0ZSB0byBpc19zdGFycmVkPXRydWVcbiAgICBleGlzdGluZy5pc19zdGFycmVkID0gdHJ1ZVxuICAgIGV4aXN0aW5nLnVwZGF0ZWRfYXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgfSBlbHNlIHtcbiAgICAvLyBBZGQgc3RhciBieSBjcmVhdGluZyBhIG5ldyBhY2NvdW50X3BhY2thZ2UgcmVjb3JkXG4gICAgY3R4LmRiLmFkZEFjY291bnRQYWNrYWdlKHtcbiAgICAgIGFjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICBwYWNrYWdlX2lkOiBzbmlwcGV0X2lkLFxuICAgICAgaXNfc3RhcnJlZDogdHJ1ZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29kZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHNuaXBwZXRfdHlwZTogei5lbnVtKFtcImJvYXJkXCIsIFwicGFja2FnZVwiLCBcIm1vZGVsXCIsIFwiZm9vdHByaW50XCJdKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNvbXBpbGVkX2pzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY2lyY3VpdF9qc29uOiB6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gICAgZHRzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBpc19wdWJsaWM6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgc25pcHBldDogc25pcHBldFNjaGVtYS5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQge1xuICAgIHVuc2NvcGVkX25hbWUsXG4gICAgY29kZSA9IFwiXCIsXG4gICAgc25pcHBldF90eXBlLFxuICAgIGRlc2NyaXB0aW9uID0gXCJcIixcbiAgICBjb21waWxlZF9qcyxcbiAgICBjaXJjdWl0X2pzb24sXG4gICAgZHRzLFxuICAgIGlzX3ByaXZhdGUsXG4gICAgaXNfcHVibGljLFxuICAgIGlzX3VubGlzdGVkLFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKVxuICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCkudG9JU09TdHJpbmcoKVxuXG4gIGlmICghdW5zY29wZWRfbmFtZSkge1xuICAgIC8vIENvdW50IHNuaXBwZXRzIG9mIHRoaXMgdHlwZSBmb3IgdGhpcyB1c2VyXG4gICAgY29uc3QgdXNlclNuaXBwZXRzID0gY3R4LmRiLnBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwKSA9PlxuICAgICAgICBwLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lICYmXG4gICAgICAgIHAuaXNfc25pcHBldCA9PT0gdHJ1ZSAmJlxuICAgICAgICAoKHAuaXNfYm9hcmQgJiYgc25pcHBldF90eXBlID09PSBcImJvYXJkXCIpIHx8XG4gICAgICAgICAgKHAuaXNfcGFja2FnZSAmJiBzbmlwcGV0X3R5cGUgPT09IFwicGFja2FnZVwiKSB8fFxuICAgICAgICAgIChwLmlzX21vZGVsICYmIHNuaXBwZXRfdHlwZSA9PT0gXCJtb2RlbFwiKSB8fFxuICAgICAgICAgIChwLmlzX2Zvb3RwcmludCAmJiBzbmlwcGV0X3R5cGUgPT09IFwiZm9vdHByaW50XCIpKSxcbiAgICApXG4gICAgdW5zY29wZWRfbmFtZSA9IGB1bnRpdGxlZC0ke3NuaXBwZXRfdHlwZX0tJHt1c2VyU25pcHBldHMubGVuZ3RoICsgMX1gXG4gIH1cblxuICBjb25zdCBleGlzdGluZ1BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocGtnKSA9PlxuICAgICAgcGtnLnVuc2NvcGVkX25hbWUgPT09IHVuc2NvcGVkX25hbWUgJiZcbiAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgPT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgKVxuXG4gIGlmIChleGlzdGluZ1BhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIGFscmVhZHkgZm9ya2VkIHRoaXMgc25pcHBldCBpbiB5b3VyIGFjY291bnQuXCIsXG4gICAgfSlcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIGRpcmVjdGx5ICh3aGljaCB3aWxsIHNlcnZlIGFzIG91ciBzbmlwcGV0KVxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSBjdHguZGIuYWRkUGFja2FnZSh7XG4gICAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICBvd25lcl9vcmdfaWQ6IGN0eC5hdXRoLnBlcnNvbmFsX29yZ19pZCxcbiAgICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWU6IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHt1bnNjb3BlZF9uYW1lfWAsXG4gICAgICB1bnNjb3BlZF9uYW1lOiB1bnNjb3BlZF9uYW1lLFxuICAgICAgbGF0ZXN0X3ZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGxpY2Vuc2U6IG51bGwsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIGFpX2Rlc2NyaXB0aW9uOiBudWxsLFxuICAgICAgaXNfc25pcHBldDogdHJ1ZSxcbiAgICAgIGlzX2JvYXJkOiBzbmlwcGV0X3R5cGUgPT09IFwiYm9hcmRcIixcbiAgICAgIGlzX3BhY2thZ2U6IHNuaXBwZXRfdHlwZSA9PT0gXCJwYWNrYWdlXCIsXG4gICAgICBpc19tb2RlbDogc25pcHBldF90eXBlID09PSBcIm1vZGVsXCIsXG4gICAgICBpc19mb290cHJpbnQ6IHNuaXBwZXRfdHlwZSA9PT0gXCJmb290cHJpbnRcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogc25pcHBldF90eXBlLFxuICAgICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBudWxsLFxuICAgICAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiBcInBsYWNlaG9sZGVyIGFpIHVzYWdlIGluc3RydWN0aW9uc1wiLFxuICAgIH0pXG5cbiAgICBjb25zdCBuZXdQYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5hZGRQYWNrYWdlUmVsZWFzZSh7XG4gICAgICBwYWNrYWdlX2lkOiBuZXdQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAvLyBTZXR0aW5nIHRoZSB0cmFuc3BpbGVkIGFzIHRydWUgb24gY3JlYXRpb25cbiAgICAgIGhhc190cmFuc3BpbGVkOiB0cnVlLFxuICAgICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogbnVsbCxcbiAgICB9KVxuXG4gICAgY3R4LmRiLnVwZGF0ZVBhY2thZ2UobmV3UGFja2FnZS5wYWNrYWdlX2lkLCB7XG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgfSlcblxuICAgIC8vIEFkZCBwYWNrYWdlIGZpbGVzXG4gICAgLy8gQWRkIGluZGV4LnRzeCBmaWxlIHdpdGggdGhlIGNvZGUgY29udGVudFxuICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIGZpbGVfcGF0aDogXCJpbmRleC50c3hcIixcbiAgICAgIGNvbnRlbnRfdGV4dDogY29kZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgIH0pXG5cbiAgICAvLyBBZGQgRFRTIGZpbGUgaWYgcHJvdmlkZWRcbiAgICBpZiAoZHRzKSB7XG4gICAgICBjdHguZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgY29udGVudF90ZXh0OiBkdHMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBBZGQgY29tcGlsZWQgSlMgaWYgcHJvdmlkZWRcbiAgICBpZiAoY29tcGlsZWRfanMpIHtcbiAgICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICAgICAgY29udGVudF90ZXh0OiBjb21waWxlZF9qcyxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIEFkZCBjaXJjdWl0IEpTT04gaWYgcHJvdmlkZWRcbiAgICBpZiAoY2lyY3VpdF9qc29uKSB7XG4gICAgICBjdHguZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICAgICAgICBjb250ZW50X3RleHQ6IEpTT04uc3RyaW5naWZ5KGNpcmN1aXRfanNvbiksXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIHNuaXBwZXQgcmVzcG9uc2Ugb2JqZWN0XG4gICAgY29uc3Qgc25pcHBldFJlc3BvbnNlID0ge1xuICAgICAgc25pcHBldF9pZDogbmV3UGFja2FnZS5wYWNrYWdlX2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBuYW1lOiBuZXdQYWNrYWdlLm5hbWUsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBuZXdQYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBvd25lcl9uYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgICBjb2RlLFxuICAgICAgZHRzLFxuICAgICAgY29tcGlsZWRfanMsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHNuaXBwZXRfdHlwZTogc25pcHBldF90eXBlLFxuICAgICAgY2lyY3VpdF9qc29uOiBjaXJjdWl0X2pzb24gfHwgW10sXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IGlzX3B1YmxpYyB8fCB0cnVlLFxuICAgICAgaXNfdW5saXN0ZWQ6IGlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgIH1cblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHNuaXBwZXQ6IHNuaXBwZXRSZXNwb25zZSxcbiAgICB9KVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfY3JlYXRpb25fZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBgRmFpbGVkIHRvIGNyZWF0ZSBzbmlwcGV0OiAke2Vycm9yfWAsXG4gICAgfSlcbiAgfVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0X2lkIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBzbmlwcGV0SW5kZXggPSBjdHguZGIucGFja2FnZXMuZmluZEluZGV4KFxuICAgIChzKSA9PiBzLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRfaWQsXG4gIClcblxuICBpZiAoc25pcHBldEluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIucGFja2FnZXNbc25pcHBldEluZGV4XVxuXG4gIGlmIChzbmlwcGV0LmNyZWF0b3JfYWNjb3VudF9pZCAhPT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoaXMgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICBjdHguZGIucGFja2FnZXMuc3BsaWNlKHNuaXBwZXRJbmRleCwgMSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBqc2RlbGl2cl9yZXNvbHZlOiB6XG4gICAgICAuZW51bShbXCJ0cnVlXCIsIFwiZmFsc2VcIl0pXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLnRyYW5zZm9ybSgodikgPT4gdiA9PT0gXCJ0cnVlXCIpLFxuICAgIGpzZGVsaXZyX3BhdGg6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHouYW55KCksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBqc2RlbGl2cl9wYXRoLCBqc2RlbGl2cl9yZXNvbHZlIH0gPSByZXEucXVlcnlcblxuICAvLyBQYXJzZSB0aGUgZmlsZSBwYXRoXG4gIGNvbnN0IFtvd25lciwgcGFja2FnZVdpdGhWZXJzaW9uLCAuLi5yZXN0XSA9IGpzZGVsaXZyX3BhdGguc3BsaXQoXCIvXCIpXG4gIGNvbnN0IFtwYWNrYWdlTmFtZSwgdmVyc2lvbl0gPSBwYWNrYWdlV2l0aFZlcnNpb24uc3BsaXQoXCJAXCIpXG4gIGNvbnN0IGZpbGVOYW1lID0gcmVzdC5qb2luKFwiL1wiKVxuXG4gIC8vIEZpbmQgdGhlIHNuaXBwZXRcbiAgY29uc3QgX3BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocykgPT4gcy5vd25lcl9naXRodWJfdXNlcm5hbWUgPT09IG93bmVyICYmIHMudW5zY29wZWRfbmFtZSA9PT0gcGFja2FnZU5hbWUsXG4gIClcblxuICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBfcGFja2FnZT8ucGFja2FnZV9pZCxcbiAgKVxuXG4gIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgIChwKSA9PiBwLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2U/LnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgKVxuXG4gIGlmICghX3BhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIWZpbGVOYW1lICYmICFqc2RlbGl2cl9yZXNvbHZlKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIGxhdGVzdDogXCIwLjAuMVwiLFxuICAgICAgICB9LFxuICAgICAgICB2ZXJzaW9uczogW1wiMC4wLjFcIl0sXG4gICAgICB9KSxcbiAgICAgIHtcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIH0sXG4gICAgKVxuICB9IGVsc2UgaWYgKCFmaWxlTmFtZSAmJiBqc2RlbGl2cl9yZXNvbHZlKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgfSksXG4gICAgICB7XG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIC8vIElmIG5vIGZpbGVOYW1lIGlzIHByb3ZpZGVkLCByZXR1cm4gdGhlIGRpcmVjdG9yeSBsaXN0aW5nXG4gIGlmICghZmlsZU5hbWUgfHwgZmlsZU5hbWUgPT09IFwiZmxhdFwiKSB7XG4gICAgY29uc3QgZmlsZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICBuYW1lOiBcImluZGV4LnRzXCIsXG4gICAgICAgIGhhc2g6IFwicGxhY2Vob2xkZXJfaGFzaFwiLFxuICAgICAgICB0aW1lOiBwYWNrYWdlUmVsZWFzZT8uY3JlYXRlZF9hdCxcbiAgICAgICAgc2l6ZTogcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIpPy5jb250ZW50X3RleHRcbiAgICAgICAgICA/Lmxlbmd0aCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICBuYW1lOiBcImluZGV4LmQudHNcIixcbiAgICAgICAgaGFzaDogXCJwbGFjZWhvbGRlcl9oYXNoXCIsXG4gICAgICAgIHRpbWU6IHBhY2thZ2VSZWxlYXNlPy5jcmVhdGVkX2F0LFxuICAgICAgICBzaXplOiBwYWNrYWdlRmlsZXMuZmluZCgoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXguZC50c1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0Py5sZW5ndGgsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgbmFtZTogXCJwYWNrYWdlLmpzb25cIixcbiAgICAgICAgaGFzaDogXCJwbGFjZWhvbGRlcl9oYXNoXCIsXG4gICAgICAgIHRpbWU6IHBhY2thZ2VSZWxlYXNlPy5jcmVhdGVkX2F0LFxuICAgICAgICBzaXplOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgbmFtZTogYEB0c2NpLyR7b3duZXJ9LiR7cGFja2FnZU5hbWV9YCxcbiAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgICAgICBtYWluOiBcImluZGV4LnRzXCIsXG4gICAgICAgICAgdHlwZXM6IFwiaW5kZXguZC50c1wiLFxuICAgICAgICB9KS5sZW5ndGgsXG4gICAgICB9LFxuICAgIF1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgZGVmYXVsdDogXCIvaW5kZXgudHNcIixcbiAgICAgIGZpbGVzOlxuICAgICAgICBmaWxlTmFtZSA9PT0gXCJmbGF0XCJcbiAgICAgICAgICA/IGZpbGVzLm1hcCgoZikgPT4gKHtcbiAgICAgICAgICAgICAgbmFtZTogYC8ke2YubmFtZX1gLFxuICAgICAgICAgICAgICBoYXNoOiBmLmhhc2gsXG4gICAgICAgICAgICAgIHRpbWU6IGYudGltZSxcbiAgICAgICAgICAgICAgc2l6ZTogZi5zaXplLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImRpcmVjdG9yeVwiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiLlwiLFxuICAgICAgICAgICAgICAgIGZpbGVzOiBmaWxlcyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeShyZXNwb25zZSwgbnVsbCwgMiksIHtcbiAgICAgIHN0YXR1czogMjAwLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgIH0pXG4gIH1cblxuICAvLyBIYW5kbGUgZmlsZSBkb3dubG9hZHNcbiAgbGV0IGNvbnRlbnQ6IHN0cmluZ1xuICBzd2l0Y2ggKGZpbGVOYW1lKSB7XG4gICAgY2FzZSBcImluZGV4LnRzXCI6XG4gICAgICBjb250ZW50ID1cbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiKT8uY29udGVudF90ZXh0IHx8XG4gICAgICAgIFwiXCJcbiAgICAgIGJyZWFrXG4gICAgY2FzZSBcImluZGV4LmQudHNcIjpcbiAgICAgIGNvbnRlbnQgPVxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZikgPT4gZi5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCJcbiAgICAgIGJyZWFrXG4gICAgY2FzZSBcInBhY2thZ2UuanNvblwiOlxuICAgICAgY29udGVudCA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogYEB0c2NpLyR7b3duZXJ9LiR7cGFja2FnZU5hbWV9YCxcbiAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgICAgICBtYWluOiBcImluZGV4LnRzXCIsXG4gICAgICAgICAgdHlwZXM6IFwiaW5kZXguZC50c1wiLFxuICAgICAgICB9LFxuICAgICAgICBudWxsLFxuICAgICAgICAyLFxuICAgICAgKVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJmaWxlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlJlcXVlc3RlZCBmaWxlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UoY29udGVudCwge1xuICAgIHN0YXR1czogMjAwLFxuICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJ0ZXh0L3BsYWluXCIgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7XG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnLFxuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2Zyxcbn0gZnJvbSBcImNpcmN1aXQtdG8tc3ZnXCJcbmltcG9ydCB7IEFueUNpcmN1aXRFbGVtZW50IH0gZnJvbSBcImNpcmN1aXQtanNvblwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRJZDogei5zdHJpbmcoKSxcbiAgICBpbWFnZV9vZjogei5lbnVtKFtcInNjaGVtYXRpY1wiLCBcInBjYlwiXSksXG4gICAgZm9ybWF0OiB6LmVudW0oW1wic3ZnXCJdKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzdmc6IHouc3RyaW5nKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldElkLCBpbWFnZV9vZiwgZm9ybWF0IH0gPSByZXEucXVlcnlcblxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUlkKHNuaXBwZXRJZClcblxuICAvLyBjaGVjayBpZiB0aGUgc25pcHBldCBleGlzdHNcbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGZvcm1hdCBpcyB2YWxpZFxuICBpZiAoZm9ybWF0ICE9PSBcInN2Z1wiKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRm9ybWF0IG11c3QgYmUgJ3N2ZydcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKGltYWdlX29mID09PSBcInNjaGVtYXRpY1wiKSB7XG4gICAgY29uc3QgY2lyY3VpdEpzb24gPSBzbmlwcGV0LmNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdXG4gICAgY29uc3Qgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmcoY2lyY3VpdEpzb24pXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgc3ZnLFxuICAgIH0pXG4gIH1cblxuICBpZiAoaW1hZ2Vfb2YgPT09IFwicGNiXCIpIHtcbiAgICBjb25zdCBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHN2ZyxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICBlcnJvcl9jb2RlOiBcIklOVkFMSURfUkVRVUVTVF9UWVBFXCIsXG4gICAgbWVzc2FnZTogXCJSZXF1ZXN0IHR5cGUgbXVzdCBiZSBlaXRoZXIgJ3NjaGVtYXRpYycgb3IgJ3BjYidcIixcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm9wdGlvbmFsX3Nlc3Npb25cIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvd25lcl9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvbkJvZHk6IHouYW55KCkub3B0aW9uYWwoKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHNuaXBwZXQ6IHNuaXBwZXRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldF9pZCwgbmFtZSwgb3duZXJfbmFtZSwgdW5zY29wZWRfbmFtZSB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIC8vIEZpcnN0IHRyeSB0byBmaW5kIGJ5IHNuaXBwZXRfaWRcbiAgaWYgKHNuaXBwZXRfaWQpIHtcbiAgICBjb25zdCBmb3VuZFNuaXBwZXQgPSBjdHguZGIuZ2V0U25pcHBldEJ5SWQoc25pcHBldF9pZCwgY3R4LmF1dGgpXG4gICAgaWYgKGZvdW5kU25pcHBldCkge1xuICAgICAgaWYgKGN0eC5hdXRoKSB7XG4gICAgICAgIGZvdW5kU25pcHBldC5pc19zdGFycmVkID0gY3R4LmRiLmhhc1N0YXJyZWQoXG4gICAgICAgICAgY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgICAgICBmb3VuZFNuaXBwZXQuc25pcHBldF9pZCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgICAgb2s6IHRydWUsXG4gICAgICAgIHNuaXBwZXQ6IGZvdW5kU25pcHBldCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLy8gSWYgbm90IGZvdW5kIGJ5IElELCB0cnkgdG8gZmluZCBieSBvdGhlciBwYXJhbWV0ZXJzXG4gIGNvbnN0IGZvdW5kUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHtcbiAgICBpZiAoIXBrZy5pc19zbmlwcGV0KSByZXR1cm4gZmFsc2VcbiAgICBpZiAobmFtZSAmJiBwa2cubmFtZS50b0xvd2VyQ2FzZSgpICE9PSBuYW1lLnRvTG93ZXJDYXNlKCkpIHJldHVybiBmYWxzZVxuICAgIGlmIChcbiAgICAgIG93bmVyX25hbWUgJiZcbiAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWU/LnRvTG93ZXJDYXNlKCkgIT09IG93bmVyX25hbWUudG9Mb3dlckNhc2UoKVxuICAgIClcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIGlmIChcbiAgICAgIHVuc2NvcGVkX25hbWUgJiZcbiAgICAgIHBrZy51bnNjb3BlZF9uYW1lLnRvTG93ZXJDYXNlKCkgIT09IHVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKVxuICAgIClcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG5cbiAgaWYgKCFmb3VuZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFNuaXBwZXQgbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KHJlcS5jb21tb25QYXJhbXMpfSlgLFxuICAgIH0pXG4gIH1cblxuICAvLyBDb252ZXJ0IHBhY2thZ2UgdG8gc25pcHBldCBmb3JtYXRcbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlJZChmb3VuZFBhY2thZ2UucGFja2FnZV9pZClcbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IGBTbmlwcGV0IG5vdCBmb3VuZCAoc2VhcmNoZWQgdXNpbmcgJHtKU09OLnN0cmluZ2lmeShyZXEuY29tbW9uUGFyYW1zKX0pYCxcbiAgICB9KVxuICB9XG5cbiAgaWYgKGN0eC5hdXRoKSB7XG4gICAgc25pcHBldC5pc19zdGFycmVkID0gY3R4LmRiLmhhc1N0YXJyZWQoXG4gICAgICBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgc25pcHBldC5zbmlwcGV0X2lkLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgc25pcHBldCxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgQW55Q2lyY3VpdEVsZW1lbnQgfSBmcm9tIFwiY2lyY3VpdC1qc29uXCJcbmltcG9ydCB7XG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnLFxuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2Zyxcbn0gZnJvbSBcImNpcmN1aXQtdG8tc3ZnXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICByb3V0ZVBhcmFtczogei5vYmplY3Qoe1xuICAgIGF1dGhvcjogei5zdHJpbmcoKSxcbiAgICBzbmlwcGV0X25hbWU6IHouc3RyaW5nKCksXG4gICAgdHlwZUZvcm1hdDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHJhd1Jlc3BvbnNlOiB0cnVlLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgYXV0aG9yLCBzbmlwcGV0X25hbWUsIHR5cGVGb3JtYXQgfSA9IHJlcS5yb3V0ZVBhcmFtc1xuXG4gIC8vIEdldCB0aGUgc25pcHBldFxuICBjb25zdCBuYW1lID0gYXV0aG9yICsgXCIvXCIgKyBzbmlwcGV0X25hbWVcbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlBdXRob3JBbmROYW1lKGF1dGhvciwgbmFtZSlcblxuICAvLyBJZiBzbmlwcGV0IGlzIG5vdCBmb3VuZCwgcmV0dXJuIDQwNFxuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgZm9ybWF0IGlzIHZhbGlkXG4gIGNvbnN0IGZvcm1hdCA9IHR5cGVGb3JtYXQuc3BsaXQoXCIuXCIpWzFdXG4gIGlmIChmb3JtYXQgIT09IFwic3ZnXCIpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgbWVzc2FnZTogXCJGb3JtYXQgbXVzdCBiZSAnc3ZnJ1wiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgdHlwZSBpcyB2YWxpZFxuICBjb25zdCB0eXBlID0gdHlwZUZvcm1hdC5zcGxpdChcIi5cIilbMF1cbiAgY29uc3QgdHlwZXNWYWxpZCA9IFtcInNjaGVtYXRpY1wiLCBcInBjYlwiLCBcImFzc2VtYmx5XCJdXG4gIGlmICghdHlwZXNWYWxpZC5pbmNsdWRlcyh0eXBlKSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgbWVzc2FnZTogYFR5cGUgbXVzdCBiZSAnJHt0eXBlc1ZhbGlkLmpvaW4oXCInIG9yICdcIil9J2AsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENvbnZlcnQgY2lyY3VpdCBqc29uIHRvIHN2Z1xuICBsZXQgc3ZnOiBzdHJpbmdcbiAgaWYgKHR5cGUgPT09IFwic2NoZW1hdGljXCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwicGNiXCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYXNzZW1ibHlcIikge1xuICAgIHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmcoXG4gICAgICBzbmlwcGV0LmNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdLFxuICAgIClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ1bmtub3duX2Vycm9yXCIsXG4gICAgICBtZXNzYWdlOiBcIlVua25vd24gZXJyb3JcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShzdmcsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImltYWdlL3N2Zyt4bWxcIixcbiAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMFwiLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgbGF0ZXN0U25pcHBldHMgPSBjdHguZGIuZ2V0TGF0ZXN0U25pcHBldHMoMjApXG4gIHJldHVybiBjdHguanNvbih7IHNuaXBwZXRzOiBsYXRlc3RTbmlwcGV0cyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLFxuICB9KSxcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICB0aW1lX3BlcmlvZDogei5lbnVtKFtcIjdkYXlzXCIsIFwiMzBkYXlzXCIsIFwiYWxsXCJdKS5vcHRpb25hbCgpLmRlZmF1bHQoXCJhbGxcIiksXG4gICAgdGFnOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgdGltZV9wZXJpb2QsIHRhZyB9ID0gcmVxLnF1ZXJ5XG5cbiAgbGV0IHNpbmNlRGF0ZSA9IG5ldyBEYXRlKClcbiAgaWYgKHRpbWVfcGVyaW9kID09PSBcIjdkYXlzXCIpIHtcbiAgICBzaW5jZURhdGUuc2V0RGF0ZShzaW5jZURhdGUuZ2V0RGF0ZSgpIC0gNylcbiAgfSBlbHNlIGlmICh0aW1lX3BlcmlvZCA9PT0gXCIzMGRheXNcIikge1xuICAgIHNpbmNlRGF0ZS5zZXREYXRlKHNpbmNlRGF0ZS5nZXREYXRlKCkgLSAzMClcbiAgfSBlbHNlIHtcbiAgICBzaW5jZURhdGUgPSBuZXcgRGF0ZSgwKSAvLyBGb3IgXCJhbGxcIiwgdXNlIGVhcmxpZXN0IHBvc3NpYmxlIGRhdGVcbiAgfVxuXG4gIGNvbnN0IHRyZW5kaW5nU25pcHBldHMgPSBjdHguZGIuZ2V0VHJlbmRpbmdTbmlwcGV0cyhcbiAgICAyMCxcbiAgICBzaW5jZURhdGUudG9JU09TdHJpbmcoKSxcbiAgKVxuXG4gIC8vIEZpbHRlciBieSB0YWcgaWYgcHJvdmlkZWRcbiAgY29uc3QgZmlsdGVyZWRTbmlwcGV0cyA9IHRhZ1xuICAgID8gdHJlbmRpbmdTbmlwcGV0cy5maWx0ZXIoKHNuaXBwZXQpID0+IHNuaXBwZXQuc25pcHBldF90eXBlID09PSB0YWcpXG4gICAgOiB0cmVuZGluZ1NuaXBwZXRzXG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgc25pcHBldHM6IGZpbHRlcmVkU25pcHBldHMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEsIHR5cGUgQWNjb3VudCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvd25lcl9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHN0YXJyZWRfYnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25Cb2R5OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvd25lcl9uYW1lLCB1bnNjb3BlZF9uYW1lLCBzdGFycmVkX2J5IH0gPSByZXEuY29tbW9uUGFyYW1zXG4gIGxldCBzdGFycmVkQnlBY2NvdW50OiBBY2NvdW50IHwgbnVsbCA9IG51bGxcbiAgLy8gR2V0IGFsbCBwYWNrYWdlcyB0aGF0IGFyZSBzbmlwcGV0c1xuICBsZXQgcGFja2FnZXMgPSBjdHguZGIucGFja2FnZXMuZmlsdGVyKChwa2cpID0+IHBrZy5pc19zbmlwcGV0ID09PSB0cnVlKVxuXG4gIC8vIEZpbHRlciBieSBvd25lcl9uYW1lIGlmIHByb3ZpZGVkXG4gIGlmIChvd25lcl9uYW1lKSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lPy50b0xvd2VyQ2FzZSgpID09PSBvd25lcl9uYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgKVxuICB9XG5cbiAgLy8gRmlsdGVyIGJ5IHVuc2NvcGVkX25hbWUgaWYgcHJvdmlkZWRcbiAgaWYgKHVuc2NvcGVkX25hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+IHBrZy51bnNjb3BlZF9uYW1lLnRvTG93ZXJDYXNlKCkgPT09IHVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gIH1cblxuICAvLyBGaWx0ZXIgYnkgc3RhcnJlZF9ieSBpZiBwcm92aWRlZFxuICBpZiAoc3RhcnJlZF9ieSkge1xuICAgIHN0YXJyZWRCeUFjY291bnQgPVxuICAgICAgY3R4LmRiLmFjY291bnRzLmZpbmQoXG4gICAgICAgIChhY2MpID0+IGFjYy5naXRodWJfdXNlcm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gc3RhcnJlZF9ieS50b0xvd2VyQ2FzZSgpLFxuICAgICAgKSB8fCBudWxsXG5cbiAgICBpZiAoc3RhcnJlZEJ5QWNjb3VudCkge1xuICAgICAgY29uc3QgYWNjb3VudFBhY2thZ2VzID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgIChhcCkgPT4gYXAuYWNjb3VudF9pZCA9PT0gc3RhcnJlZEJ5QWNjb3VudD8uYWNjb3VudF9pZCAmJiBhcC5pc19zdGFycmVkLFxuICAgICAgKVxuXG4gICAgICBjb25zdCBzdGFyVGltZXN0YW1wcyA9IG5ldyBNYXAoXG4gICAgICAgIGFjY291bnRQYWNrYWdlcy5tYXAoKGFwKSA9PiBbYXAucGFja2FnZV9pZCwgYXAudXBkYXRlZF9hdF0pLFxuICAgICAgKVxuXG4gICAgICAvLyBGaWx0ZXIgcGFja2FnZXMgdG8gb25seSBpbmNsdWRlIHN0YXJyZWQgb25lc1xuICAgICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoKHBrZykgPT4gc3RhclRpbWVzdGFtcHMuaGFzKHBrZy5wYWNrYWdlX2lkKSlcbiAgICB9IGVsc2Uge1xuICAgICAgcGFja2FnZXMgPSBbXVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbnZlcnQgcGFja2FnZXMgdG8gc25pcHBldHNcbiAgY29uc3Qgc25pcHBldHMgPSBwYWNrYWdlcy5tYXAoKHBrZykgPT4ge1xuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChcbiAgICAgIHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IFwiXCIsXG4gICAgKVxuXG4gICAgbGV0IHN0YXJUaW1lc3RhbXBcbiAgICBpZiAoc3RhcnJlZF9ieSAmJiBzdGFycmVkQnlBY2NvdW50KSB7XG4gICAgICBjb25zdCBhY2NvdW50UGFja2FnZSA9IGN0eC5kYi5hY2NvdW50UGFja2FnZXMuZmluZChcbiAgICAgICAgKGFwKSA9PlxuICAgICAgICAgIGFwLmFjY291bnRfaWQgPT09IHN0YXJyZWRCeUFjY291bnQuYWNjb3VudF9pZCAmJlxuICAgICAgICAgIGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmXG4gICAgICAgICAgYXAuaXNfc3RhcnJlZCxcbiAgICAgIClcbiAgICAgIHN0YXJUaW1lc3RhbXAgPSBhY2NvdW50UGFja2FnZT8udXBkYXRlZF9hdFxuICAgIH1cblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IFwiXCIsXG4gICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgICAgb3duZXJfbmFtZTogcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSB8fCBcIlwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgIHNuaXBwZXRfdHlwZTogcGtnLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICAgIGNvZGU6IFwiXCIsXG4gICAgICAgIGR0czogXCJcIixcbiAgICAgICAgY29tcGlsZWRfanM6IFwiXCIsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgc3RhcnJlZF9hdDogc3RhclRpbWVzdGFtcCwgLy8gQWRkIHN0YXIgdGltZXN0YW1wXG4gICAgICAgIHN0YXJfY291bnQ6IGN0eC5kYi5nZXRTdGFyQ291bnQocGtnLnBhY2thZ2VfaWQpLFxuICAgICAgICBpc19zdGFycmVkOiBjdHguYXV0aFxuICAgICAgICAgID8gY3R4LmRiLmhhc1N0YXJyZWQoY3R4LmF1dGguYWNjb3VudF9pZCwgcGtnLnBhY2thZ2VfaWQpXG4gICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgdmVyc2lvbjogcGtnLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgICAgaXNfcHJpdmF0ZTogcGtnLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICAgIGlzX3B1YmxpYzogcGtnLmlzX3B1YmxpYyB8fCB0cnVlLFxuICAgICAgICBpc191bmxpc3RlZDogcGtnLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGN0eC5kYi5nZXRQYWNrYWdlRmlsZXNCeVJlbGVhc2VJZChcbiAgICAgIHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlOiB7IGZpbGVfcGF0aDogc3RyaW5nIH0pID0+XG4gICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuXG4gICAgY29uc3Qgc25pcHBldCA9IHtcbiAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogcGtnLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBwa2cuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogcGtnLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBkdHM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlOiB7IGZpbGVfcGF0aDogc3RyaW5nIH0pID0+XG4gICAgICAgICAgICBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgICAgICk/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlOiB7IGZpbGVfcGF0aDogc3RyaW5nIH0pID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgICk/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogcGtnLmNyZWF0ZWRfYXQsXG4gICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgIHN0YXJyZWRfYXQ6IHN0YXJUaW1lc3RhbXAsIC8vIEFkZCBzdGFyIHRpbWVzdGFtcFxuICAgICAgc3Rhcl9jb3VudDogY3R4LmRiLmdldFN0YXJDb3VudChwa2cucGFja2FnZV9pZCksXG4gICAgICBpc19zdGFycmVkOiBjdHguYXV0aFxuICAgICAgICA/IGN0eC5kYi5oYXNTdGFycmVkKGN0eC5hdXRoLmFjY291bnRfaWQsIHBrZy5wYWNrYWdlX2lkKVxuICAgICAgICA6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogcGtnLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGlzX3ByaXZhdGU6IHBrZy5pc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBwa2cuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogcGtnLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgIH1cblxuICAgIHJldHVybiBzbmlwcGV0XG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBzbmlwcGV0cyxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgYWNjb3VudFNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0X2lkIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBDaGVjayBpZiBzbmlwcGV0IGV4aXN0c1xuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUlkKHNuaXBwZXRfaWQpXG4gIGlmICghc25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIGNoZWNrIGlmIG5vdCBhbHJlYWR5IHN0YXJyZWRcbiAgaWYgKCFjdHguZGIuaGFzU3RhcnJlZChjdHguYXV0aC5hY2NvdW50X2lkLCBzbmlwcGV0X2lkKSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIG5vdCBzdGFycmVkIHRoaXMgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBSZW1vdmUgc3RhclxuICBjdHguZGIucmVtb3ZlU3RhcihjdHguYXV0aC5hY2NvdW50X2lkLCBzbmlwcGV0X2lkKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBxOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldHM6IHouYXJyYXkoc25pcHBldFNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcSB9ID0gcmVxLnF1ZXJ5XG4gIGNvbnN0IHNuaXBwZXRzID0gY3R4LmRiLnNlYXJjaFNuaXBwZXRzKHEpXG4gIHJldHVybiBjdHguanNvbih7IHNuaXBwZXRzIH0pXG59KVxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgICBjb2RlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZHRzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29tcGlsZWRfanM6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgIGNpcmN1aXRfanNvbjogei5hcnJheSh6LnJlY29yZCh6LmFueSgpKSkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgIG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgIHNuaXBwZXRfdHlwZTogei5lbnVtKFtcImJvYXJkXCIsIFwicGFja2FnZVwiLCBcIm1vZGVsXCIsIFwiZm9vdHByaW50XCJdKS5vcHRpb25hbCgpLFxuICAgIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgc25pcHBldDogc25pcHBldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIHNuaXBwZXRfaWQsXG4gICAgY29kZSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICB1bnNjb3BlZF9uYW1lLFxuICAgIGR0cyxcbiAgICBjb21waWxlZF9qcyxcbiAgICBjaXJjdWl0X2pzb24sXG4gICAgc25pcHBldF90eXBlLFxuICAgIG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnQsXG4gICAgaXNfcHJpdmF0ZSxcbiAgICBpc191bmxpc3RlZCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHBhY2thZ2VJbmRleCA9IGN0eC5kYi5wYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgKHMpID0+IHMucGFja2FnZV9pZCA9PT0gc25pcHBldF9pZCxcbiAgKVxuXG4gIGlmIChwYWNrYWdlSW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgX3BhY2thZ2UgPSBjdHguZGIucGFja2FnZXNbcGFja2FnZUluZGV4XVxuICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocikgPT4gci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcbiAgY29uc3QgcGFja2FnZUZpbGVzID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgKGYpID0+IGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZT8ucGFja2FnZV9yZWxlYXNlX2lkLFxuICApXG4gIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiIHx8IGYuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIsXG4gIClcbiAgY29uc3QgZHRzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gIGNvbnN0IGNvbXBpbGVkSnNGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gIClcbiAgY29uc3QgbWFudWFsRWRpdHNKc29uRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJtYW51YWwtZWRpdHMuanNvblwiLFxuICApXG4gIGNvbnN0IGNpcmN1aXRKc29uRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgKVxuXG4gIGlmIChfcGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgIT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGlzIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgdXBkYXRlZFNuaXBwZXQgPSBjdHguZGIudXBkYXRlU25pcHBldChzbmlwcGV0X2lkLCB7XG4gICAgY29kZTogY29kZSA/PyBjb2RlRmlsZT8uY29udGVudF90ZXh0ID8/IFwiXCIsXG4gICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uID8/IF9wYWNrYWdlLmRlc2NyaXB0aW9uID8/IFwiXCIsXG4gICAgdW5zY29wZWRfbmFtZTogdW5zY29wZWRfbmFtZSA/PyBfcGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgIG5hbWU6IHVuc2NvcGVkX25hbWVcbiAgICAgID8gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke3Vuc2NvcGVkX25hbWV9YFxuICAgICAgOiBfcGFja2FnZS5uYW1lLFxuICAgIGR0czogZHRzID8/IGR0c0ZpbGU/LmNvbnRlbnRfdGV4dCA/PyBcIlwiLFxuICAgIGNvbXBpbGVkX2pzOiBjb21waWxlZF9qcyA/PyBjb21waWxlZEpzRmlsZT8uY29udGVudF90ZXh0ID8/IFwiXCIsXG4gICAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudDpcbiAgICAgIG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnRcbiAgICAgICAgOiAobWFudWFsRWRpdHNKc29uRmlsZT8uY29udGVudF90ZXh0ID8/IFwiXCIpLFxuICAgIGNpcmN1aXRfanNvbjpcbiAgICAgIGNpcmN1aXRfanNvbiA/P1xuICAgICAgKGNpcmN1aXRKc29uRmlsZT8uY29udGVudF90ZXh0XG4gICAgICAgID8gSlNPTi5wYXJzZShjaXJjdWl0SnNvbkZpbGUuY29udGVudF90ZXh0KVxuICAgICAgICA6IFtdKSxcbiAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXRfdHlwZSA/PyBfcGFja2FnZS5zbmlwcGV0X3R5cGUsXG4gICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSA/PyBfcGFja2FnZS5pc19wcml2YXRlID8/IGZhbHNlLFxuICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCA/PyBfcGFja2FnZS5pc191bmxpc3RlZCA/PyBmYWxzZSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH0pXG5cbiAgaWYgKCF1cGRhdGVkU25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInVwZGF0ZV9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIHVwZGF0ZSBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgc25pcHBldDogdXBkYXRlZFNuaXBwZXQsXG4gIH0pXG59KVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLFNBQVEsdUJBQXNCO0FBQzlCLFNBQVMsb0NBQW9DOzs7QUNEN0MsU0FBUyw0QkFBNEI7OztBQ0FyQyxTQUFTLGtCQUFrQjtBQUUzQixTQUFTLGFBQWE7QUFDdEIsU0FBUyxtQkFBbUI7QUFFNUIsU0FBUyxlQUFlOzs7QUNMeEIsU0FBUyxTQUFTO0FB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Q0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLHFCQUFxQjtBQUFBLFFBQ3JCLE9BQU87QUFBQSxRQUNQLE1BQU07QUFBQSxRQUNOLHVCQUF1QixDQUFDO0FBQUEsTUFDMUI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFD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QUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFB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QUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtC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QUEsRUFBUSx3QkFBeUNGO0FBQUEsRUFBUSxjQUErQjtBQUFBLEVBQVEsd0JBQXlDQztBQUFBLEVBQVEsMEJBQTJDRTtBQUFBLEVBQVEsd0JBQXlDTDtBQUFBLEVBQVEsd0JBQXlDRztBQUFBLEVBQVEsMEJBQTJDRztBQUFBLEVBQVEsMkJBQTRDO0FBQUEsRUFBUSxxQkFBc0NSO0FBQUEsRUFBUSw2REFBOEU7QUFBQSxFQUFRLDZCQUE4Q1M7QUFBQSxFQUFRLCtCQUFnREM7QUFBQSxFQUFRLHNCQUF1Q1A7QUFBQSxFQUFRLDZCQUE4Q1E7QUFBQSxFQUFRLHdCQUF5Q0w7QUFBQSxFQUFRLHdCQUF5Q0Y7QUFDajVKO0FBRUEsSUFBTSxhQUFhO0FBQUEsRUFDakIsY0FBYyxnQkFBZ0IsT0FBTyxLQUFLLG9CQUFvQixDQUFDO0FBQUEsRUFDL0Q7QUFBQSxFQUNBLGFBQWEsT0FBTyxLQUFLLFlBQVksNkJBQTZCLFlBQVksT0FBTyxFQUFFLEdBQUc7QUFDNUY7QUFFQSxJQUFPLGdCQUFROyIsCiAgIm5hbWVzIjogWyJfX2Rpcm5hbWUiLCAic2VlZCIsICJzdGF0ZSIsICJwYWNrYWdlUmVsZWFzZSIsICJwYWNrYWdlRmlsZXMiLCAicGtnIiwgImFjY291bnQiLCAib3JnIiwgImRlY29kZUp3dCIsICJrbGV1ciIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgImFueXJvdXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAiQnVmZmVyIiwgInoiLCAicmVxdWVzdFNjaGVtYSIsICJCdWZmZXIiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInJvdXRlU3BlYyIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImRlbGV0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJyb3V0ZVNwZWMiLCAieiIsICJyb3V0ZVNwZWMiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInJvdXRlU3BlYyIsICJ6IiwgImxpc3RfZGVmYXVsdCIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJ6IiwgInVwZGF0ZV9kZWZhdWx0IiwgInJlbGVhc2UiLCAieiIsICJwa2ciLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImRlbGV0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAicGtnIiwgInoiLCAic2VhcmNoX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAiZGVsZXRlX2RlZmF1bHQiLCAieiIsICJhZGRfc3Rhcl9kZWZhdWx0IiwgInoiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJkZWxldGVfZGVmYXVsdCIsICJ6IiwgImRvd25sb2FkX2RlZmF1bHQiLCAieiIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyIsICJ6IiwgImdldF9kZWZhdWx0IiwgImNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmciLCAiY29udmVydENpcmN1aXRKc29uVG9QY2JTdmciLCAiY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmciLCAieiIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub0Fzc2VtYmx5U3ZnIiwgInoiLCAibGlzdF9sYXRlc3RfZGVmYXVsdCIsICJ6IiwgInoiLCAibGlzdF90cmVuZGluZ19kZWZhdWx0IiwgInoiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJ6IiwgInJlbW92ZV9zdGFyX2RlZmF1bHQiLCAieiIsICJzZWFyY2hfZGVmYXVsdCIsICJ6IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAieiIsICJnZXRfZGVmYXVsdCIsICJhbnlyb3V0ZV9kZWZhdWx0IiwgImNyZWF0ZV9kZWZhdWx0IiwgImxpc3RfZGVmYXVsdCIsICJ1cGRhdGVfZGVmYXVsdCIsICJkZWxldGVfZGVmYXVsdCIsICJzZWFyY2hfZGVmYXVsdCIsICJhZGRfc3Rhcl9kZWZhdWx0IiwgImRvd25sb2FkX2RlZmF1bHQiLCAibGlzdF9sYXRlc3RfZGVmYXVsdCIsICJsaXN0X3RyZW5kaW5nX2RlZmF1bHQiLCAicmVtb3ZlX3N0YXJfZGVmYXVsdCJdCn0K
|