angular-odata 0.123.0 → 0.124.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/esm2022/lib/api.mjs +1 -1
  2. package/esm2022/lib/cache/cache.mjs +4 -2
  3. package/esm2022/lib/cache/storage.mjs +1 -1
  4. package/esm2022/lib/client.mjs +5 -6
  5. package/esm2022/lib/helper.mjs +1 -1
  6. package/esm2022/lib/loaders.mjs +1 -1
  7. package/esm2022/lib/models/collection.mjs +8 -5
  8. package/esm2022/lib/models/model.mjs +32 -16
  9. package/esm2022/lib/models/options.mjs +21 -14
  10. package/esm2022/lib/module.mjs +6 -7
  11. package/esm2022/lib/resources/path/segments.mjs +6 -6
  12. package/esm2022/lib/resources/query/builder.mjs +11 -6
  13. package/esm2022/lib/resources/query/expressions/base.mjs +1 -1
  14. package/esm2022/lib/resources/query/expressions/compute.mjs +5 -5
  15. package/esm2022/lib/resources/query/expressions/count.mjs +19 -9
  16. package/esm2022/lib/resources/query/expressions/expand.mjs +15 -9
  17. package/esm2022/lib/resources/query/expressions/filter.mjs +7 -7
  18. package/esm2022/lib/resources/query/expressions/orderby.mjs +7 -7
  19. package/esm2022/lib/resources/query/expressions/search.mjs +5 -5
  20. package/esm2022/lib/resources/query/expressions/select.mjs +5 -5
  21. package/esm2022/lib/resources/query/expressions/syntax.mjs +80 -45
  22. package/esm2022/lib/resources/query/handlers.mjs +1 -1
  23. package/esm2022/lib/resources/query/options.mjs +6 -6
  24. package/esm2022/lib/resources/request.mjs +1 -1
  25. package/esm2022/lib/resources/resource.mjs +11 -5
  26. package/esm2022/lib/resources/responses/annotations.mjs +1 -1
  27. package/esm2022/lib/resources/responses/csdl/csdl-annotation.mjs +1 -1
  28. package/esm2022/lib/resources/responses/csdl/csdl-entity-container.mjs +1 -1
  29. package/esm2022/lib/resources/responses/csdl/csdl-entity-set.mjs +1 -1
  30. package/esm2022/lib/resources/responses/csdl/csdl-enum-type.mjs +1 -1
  31. package/esm2022/lib/resources/responses/csdl/csdl-function-action.mjs +1 -1
  32. package/esm2022/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs +1 -1
  33. package/esm2022/lib/resources/responses/csdl/csdl-reference.mjs +1 -1
  34. package/esm2022/lib/resources/responses/csdl/csdl-schema.mjs +1 -1
  35. package/esm2022/lib/resources/responses/csdl/csdl-singleton.mjs +1 -1
  36. package/esm2022/lib/resources/responses/csdl/csdl-structural-property.mjs +1 -1
  37. package/esm2022/lib/resources/responses/csdl/csdl-structured-type.mjs +1 -1
  38. package/esm2022/lib/resources/responses/csdl/csdl-type-definition.mjs +1 -1
  39. package/esm2022/lib/resources/responses/metadata.mjs +2 -3
  40. package/esm2022/lib/resources/responses/response.mjs +1 -1
  41. package/esm2022/lib/resources/types/action.mjs +1 -1
  42. package/esm2022/lib/resources/types/batch.mjs +1 -1
  43. package/esm2022/lib/resources/types/count.mjs +1 -1
  44. package/esm2022/lib/resources/types/entity-set.mjs +1 -1
  45. package/esm2022/lib/resources/types/entity.mjs +1 -1
  46. package/esm2022/lib/resources/types/function.mjs +1 -1
  47. package/esm2022/lib/resources/types/media.mjs +1 -1
  48. package/esm2022/lib/resources/types/navigation-property.mjs +1 -1
  49. package/esm2022/lib/resources/types/property.mjs +1 -1
  50. package/esm2022/lib/resources/types/reference.mjs +1 -1
  51. package/esm2022/lib/resources/types/singleton.mjs +1 -1
  52. package/esm2022/lib/resources/types/value.mjs +1 -1
  53. package/esm2022/lib/schema/annotation.mjs +1 -1
  54. package/esm2022/lib/schema/callable.mjs +1 -1
  55. package/esm2022/lib/schema/element.mjs +1 -1
  56. package/esm2022/lib/schema/entity-container.mjs +1 -1
  57. package/esm2022/lib/schema/enum-type.mjs +1 -1
  58. package/esm2022/lib/schema/parsers/callable.mjs +1 -1
  59. package/esm2022/lib/schema/parsers/edm.mjs +1 -1
  60. package/esm2022/lib/schema/parsers/enum-type.mjs +1 -1
  61. package/esm2022/lib/schema/parsers/structured-type.mjs +14 -2
  62. package/esm2022/lib/schema/schema.mjs +1 -1
  63. package/esm2022/lib/schema/structured-type.mjs +9 -4
  64. package/esm2022/lib/services/base.mjs +1 -1
  65. package/esm2022/lib/services/entity-set.mjs +1 -1
  66. package/esm2022/lib/services/factory.mjs +5 -6
  67. package/esm2022/lib/services/singleton.mjs +1 -1
  68. package/esm2022/lib/settings.mjs +1 -1
  69. package/esm2022/lib/types.mjs +1 -1
  70. package/esm2022/lib/utils/arrays.mjs +1 -1
  71. package/esm2022/lib/utils/durations.mjs +1 -1
  72. package/esm2022/lib/utils/enums.mjs +1 -1
  73. package/esm2022/lib/utils/http.mjs +1 -1
  74. package/esm2022/lib/utils/objects.mjs +1 -1
  75. package/esm2022/lib/utils/odata.mjs +1 -1
  76. package/esm2022/lib/utils/types.mjs +4 -1
  77. package/fesm2022/angular-odata.mjs +251 -138
  78. package/fesm2022/angular-odata.mjs.map +1 -1
  79. package/lib/models/model.d.ts +1 -1
  80. package/lib/models/options.d.ts +3 -4
  81. package/lib/resources/path/segments.d.ts +14 -5
  82. package/lib/resources/query/expressions/base.d.ts +3 -1
  83. package/lib/resources/query/expressions/compute.d.ts +8 -6
  84. package/lib/resources/query/expressions/count.d.ts +11 -8
  85. package/lib/resources/query/expressions/expand.d.ts +15 -12
  86. package/lib/resources/query/expressions/filter.d.ts +7 -5
  87. package/lib/resources/query/expressions/orderby.d.ts +9 -6
  88. package/lib/resources/query/expressions/search.d.ts +9 -6
  89. package/lib/resources/query/expressions/select.d.ts +7 -5
  90. package/lib/resources/query/expressions/syntax.d.ts +16 -13
  91. package/lib/resources/query/options.d.ts +14 -5
  92. package/lib/resources/resource.d.ts +1 -1
  93. package/lib/schema/parsers/structured-type.d.ts +3 -0
  94. package/lib/schema/structured-type.d.ts +2 -1
  95. package/lib/utils/types.d.ts +1 -0
  96. package/package.json +1 -1
@@ -19,4 +19,4 @@ export const OData = {
19
19
  }, []);
20
20
  },
21
21
  };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2RhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvdXRpbHMvb2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ25CLDZCQUE2QjtJQUM3Qix1QkFBdUIsQ0FBQyxTQUEyQjtRQUNqRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQWlCLEVBQUUsQ0FBaUIsRUFBRSxFQUFFLENBQ3hELENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUk7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FDWCxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLEVBQ3RELENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsQ0FDdkQsQ0FBQztRQUNKLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQXFCLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDeEQsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRTtnQkFDMUMsTUFBTSxHQUFHLFNBQVM7cUJBQ2YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3FCQUNsQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ2pCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDNUIsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQ3BCLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUNuQixDQUFDO29CQUNGLE9BQU8sR0FBRyxDQUFDO2dCQUNiLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDYixPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDekI7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFzQixDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDQUxMQUJMRV9CSU5ESU5HX1BBUkFNRVRFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDYWxsYWJsZUNvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE9iamVjdHMgfSBmcm9tICcuL29iamVjdHMnO1xuXG5leHBvcnQgY29uc3QgT0RhdGEgPSB7XG4gIC8vIE1lcmdlIGNhbGxhYmxlcyBwYXJhbWV0ZXJzXG4gIG1lcmdlQ2FsbGFibGVQYXJhbWV0ZXJzKGNhbGxhYmxlczogQ2FsbGFibGVDb25maWdbXSk6IENhbGxhYmxlQ29uZmlnW10ge1xuICAgIGNvbnN0IGFyZUVxdWFsID0gKGE6IENhbGxhYmxlQ29uZmlnLCBiOiBDYWxsYWJsZUNvbmZpZykgPT5cbiAgICAgIGEubmFtZSA9PT0gYi5uYW1lICYmXG4gICAgICBPYmplY3RzLmVxdWFsKFxuICAgICAgICAoYS5wYXJhbWV0ZXJzIHx8IHt9KVtDQUxMQUJMRV9CSU5ESU5HX1BBUkFNRVRFUl0gfHwge30sXG4gICAgICAgIChiLnBhcmFtZXRlcnMgfHwge30pW0NBTExBQkxFX0JJTkRJTkdfUEFSQU1FVEVSXSB8fCB7fVxuICAgICAgKTtcbiAgICByZXR1cm4gY2FsbGFibGVzLnJlZHVjZSgoYWNjOiBDYWxsYWJsZUNvbmZpZ1tdLCBjb25maWcpID0+IHtcbiAgICAgIGlmIChhY2MuZXZlcnkoKGMpID0+ICFhcmVFcXVhbChjLCBjb25maWcpKSkge1xuICAgICAgICBjb25maWcgPSBjYWxsYWJsZXNcbiAgICAgICAgICAuZmlsdGVyKChjKSA9PiBhcmVFcXVhbChjLCBjb25maWcpKVxuICAgICAgICAgIC5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICAgICAgYWNjLnBhcmFtZXRlcnMgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICBhY2MucGFyYW1ldGVycyB8fCB7fSxcbiAgICAgICAgICAgICAgYy5wYXJhbWV0ZXJzIHx8IHt9XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCBjb25maWcpO1xuICAgICAgICByZXR1cm4gWy4uLmFjYywgY29uZmlnXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10gYXMgQ2FsbGFibGVDb25maWdbXSk7XG4gIH0sXG59O1xuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2RhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvdXRpbHMvb2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ25CLDZCQUE2QjtJQUM3Qix1QkFBdUIsQ0FBQyxTQUEyQjtRQUNqRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQWlCLEVBQUUsQ0FBaUIsRUFBRSxFQUFFLENBQ3hELENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUk7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FDWCxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLEVBQ3RELENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsQ0FDdkQsQ0FBQztRQUNKLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQXFCLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDeEQsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRTtnQkFDMUMsTUFBTSxHQUFHLFNBQVM7cUJBQ2YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3FCQUNsQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ2pCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDNUIsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQ3BCLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUNuQixDQUFDO29CQUNGLE9BQU8sR0FBRyxDQUFDO2dCQUNiLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDYixPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDekI7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFzQixDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDQUxMQUJMRV9CSU5ESU5HX1BBUkFNRVRFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDYWxsYWJsZUNvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE9iamVjdHMgfSBmcm9tICcuL29iamVjdHMnO1xuXG5leHBvcnQgY29uc3QgT0RhdGEgPSB7XG4gIC8vIE1lcmdlIGNhbGxhYmxlcyBwYXJhbWV0ZXJzXG4gIG1lcmdlQ2FsbGFibGVQYXJhbWV0ZXJzKGNhbGxhYmxlczogQ2FsbGFibGVDb25maWdbXSk6IENhbGxhYmxlQ29uZmlnW10ge1xuICAgIGNvbnN0IGFyZUVxdWFsID0gKGE6IENhbGxhYmxlQ29uZmlnLCBiOiBDYWxsYWJsZUNvbmZpZykgPT5cbiAgICAgIGEubmFtZSA9PT0gYi5uYW1lICYmXG4gICAgICBPYmplY3RzLmVxdWFsKFxuICAgICAgICAoYS5wYXJhbWV0ZXJzIHx8IHt9KVtDQUxMQUJMRV9CSU5ESU5HX1BBUkFNRVRFUl0gfHwge30sXG4gICAgICAgIChiLnBhcmFtZXRlcnMgfHwge30pW0NBTExBQkxFX0JJTkRJTkdfUEFSQU1FVEVSXSB8fCB7fSxcbiAgICAgICk7XG4gICAgcmV0dXJuIGNhbGxhYmxlcy5yZWR1Y2UoKGFjYzogQ2FsbGFibGVDb25maWdbXSwgY29uZmlnKSA9PiB7XG4gICAgICBpZiAoYWNjLmV2ZXJ5KChjKSA9PiAhYXJlRXF1YWwoYywgY29uZmlnKSkpIHtcbiAgICAgICAgY29uZmlnID0gY2FsbGFibGVzXG4gICAgICAgICAgLmZpbHRlcigoYykgPT4gYXJlRXF1YWwoYywgY29uZmlnKSlcbiAgICAgICAgICAucmVkdWNlKChhY2MsIGMpID0+IHtcbiAgICAgICAgICAgIGFjYy5wYXJhbWV0ZXJzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICAgYWNjLnBhcmFtZXRlcnMgfHwge30sXG4gICAgICAgICAgICAgIGMucGFyYW1ldGVycyB8fCB7fSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIGNvbmZpZyk7XG4gICAgICAgIHJldHVybiBbLi4uYWNjLCBjb25maWddO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSBhcyBDYWxsYWJsZUNvbmZpZ1tdKTtcbiAgfSxcbn07XG4iXX0=
@@ -11,6 +11,9 @@ export const Types = {
11
11
  rawType(value) {
12
12
  return Object.prototype.toString.call(value).slice(8, -1);
13
13
  },
14
+ isObject(value) {
15
+ return typeof value === 'object' && value !== null;
16
+ },
14
17
  isPlainObject(value) {
15
18
  if (this.rawType(value) !== 'Object') {
16
19
  return false;
@@ -130,4 +133,4 @@ export const Types = {
130
133
  }
131
134
  },
132
135
  };
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxXQUFXLENBQUMsS0FBVTtJQUM3QixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBVTtJQUMxQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUNuQyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ25CLE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVU7UUFDdEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUNwQyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxPQUFPLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDOUQsQ0FBQztJ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QUssQ0FBQztRQUUzQyx3QkFBd0I7UUFDeEIsSUFBSSxJQUFJLEtBQUssTUFBTTtZQUFFLE9BQU8sYUFBYSxFQUFFLENBQUM7UUFDNUMsSUFBSSxJQUFJLEtBQUssYUFBYTtZQUFFLE9BQU8sb0JBQW9CLEVBQUUsQ0FBQztRQUMxRCxJQUFJLElBQUksS0FBSyxPQUFPO1lBQUUsT0FBTyxjQUFjLEVBQUUsQ0FBQztRQUM5QyxJQUFJLElBQUksS0FBSyxRQUFRO1lBQUUsT0FBTyxlQUFlLEVBQUUsQ0FBQztRQUNoRCxJQUFJLElBQUksS0FBSyxVQUFVO1lBQUUsT0FBTyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BELE9BQU8sa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ0QsS0FBSyxDQUFDLE1BQVc7UUFDZixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3JDLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssTUFBTTtnQkFDVCxPQUFPLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0IsS0FBSyxVQUFVO2dCQUNiLE9BQU8sTUFBTSxDQUFDO1lBQ2hCO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGNsb25lU3ltYm9sKHRhcmdlOiBhbnkpIHtcbiAgcmV0dXJuIE9iamVjdChTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh0YXJnZSkpO1xufVxuXG5mdW5jdGlvbiBjbG9uZVJlZyh0YXJnZTogYW55KSB7XG4gIGNvbnN0IHJlRmxhZ3MgPSAvXFx3KiQvO1xuICBjb25zdCByZXN1bHQgPSBuZXcgdGFyZ2UuY29uc3RydWN0b3IodGFyZ2Uuc291cmNlLCByZUZsYWdzLmV4ZWModGFyZ2UpKTtcbiAgcmVzdWx0Lmxhc3RJbmRleCA9IHRhcmdlLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGNvbnN0IFR5cGVzID0ge1xuICByYXdUeXBlKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSk7XG4gIH0sXG5cbiAgaXNQbGFpbk9iamVjdCh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMucmF3VHlwZSh2YWx1ZSkgIT09ICdPYmplY3QnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcbiAgICByZXR1cm4gcHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZTtcbiAgfSxcblxuICBpc0Z1bmN0aW9uKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xuICB9LFxuXG4gIGlzQXJyYXkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgfSxcblxuICBpc01hcCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmF3VHlwZSh2YWx1ZSkgPT09ICdNYXAnO1xuICB9LFxuXG4gIGlzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIXZhbHVlLmxlbmd0aCkgfHxcbiAgICAgICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgaXNOYU4odmFsdWUudmFsdWVPZigpKSkgfHxcbiAgICAgIChUeXBlcy5pc01hcCh2YWx1ZSkgJiYgIXZhbHVlLnNpemUpIHx8XG4gICAgICAoVHlwZXMuaXNBcnJheSh2YWx1ZSkgJiYgIXZhbHVlLmxlbmd0aCkgfHxcbiAgICAgIChUeXBlcy5pc0Z1bmN0aW9uKHZhbHVlLmlzRW1wdHkpICYmIHZhbHVlLmlzRW1wdHkoKSkgfHxcbiAgICAgIChUeXBlcy5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgICAodmFsdWUgYXMgYW55W10pLmV2ZXJ5KCh2KSA9PiBUeXBlcy5pc0VtcHR5KHYpKSkgfHxcbiAgICAgIChUeXBlcy5pc1BsYWluT2JqZWN0KHZhbHVlKSAmJlxuICAgICAgICAhT2JqZWN0LmtleXModmFsdWUpLmZpbHRlcigoaykgPT4gdmFsdWUuaGFzT3duUHJvcGVydHkoaykpLmxlbmd0aClcbiAgICApO1xuICB9LFxuXG4gIGlzRXF1YWwodmFsdWUxOiBhbnksIHZhbHVlMjogYW55KSB7XG4gICAgZnVuY3Rpb24gZ2V0VHlwZShvYmo6IGFueSkge1xuICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopLnNsaWNlKDgsIC0xKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFyZURhdGVzRXF1YWwoKSB7XG4gICAgICByZXR1cm4gdmFsdWUxLmdldFRpbWUoKSA9PT0gdmFsdWUyLmdldFRpbWUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcmVBcnJheXNCdWZmZXJFcXVhbCgpIHtcbiAgICAgIGlmICh2YWx1ZTEuYnl0ZUxlbmd0aCAhPT0gdmFsdWUyLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2YXIgdmlldzEgPSBuZXcgRGF0YVZpZXcodmFsdWUxKTtcbiAgICAgIHZhciB2aWV3MiA9IG5ldyBEYXRhVmlldyh2YWx1ZTIpO1xuXG4gICAgICB2YXIgaSA9IHZhbHVlMS5ieXRlTGVuZ3RoO1xuICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICBpZiAodmlldzEuZ2V0VWludDgoaSkgIT09IHZpZXcyLmdldFVpbnQ4KGkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFyZUFycmF5c0VxdWFsKCkge1xuICAgICAgLy8gQ2hlY2sgbGVuZ3RoXG4gICAgICBpZiAodmFsdWUxLmxlbmd0aCAhPT0gdmFsdWUyLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAvLyBDaGVjayBlYWNoIGl0ZW0gaW4gdGhlIGFycmF5XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlMS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoIVR5cGVzLmlzRXF1YWwodmFsdWUxW2ldLCB2YWx1ZTJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIG5vIGVycm9ycywgcmV0dXJuIHRydWVcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFyZU9iamVjdHNFcXVhbCgpIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyh2YWx1ZTEpLmxlbmd0aCAhPT0gT2JqZWN0LmtleXModmFsdWUyKS5sZW5ndGgpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgLy8gQ2hlY2sgZWFjaCBpdGVtIGluIHRoZSBvYmplY3RcbiAgICAgIGZvciAobGV0IGtleSBpbiB2YWx1ZTEpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZTEsIGtleSkpIHtcbiAgICAgICAgICBpZiAoIVR5cGVzLmlzRXF1YWwodmFsdWUxW2tleV0sIHZhbHVlMltrZXldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIElmIG5vIGVycm9ycywgcmV0dXJuIHRydWVcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFyZUZ1bmN0aW9uc0VxdWFsKCkge1xuICAgICAgcmV0dXJuIHZhbHVlMS50b1N0cmluZygpID09PSB2YWx1ZTIudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcmVQcmltYXRpdmVzRXF1YWwoKSB7XG4gICAgICByZXR1cm4gdmFsdWUxID09PSB2YWx1ZTI7XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSBvYmplY3QgdHlwZVxuICAgIGxldCB0eXBlID0gZ2V0VHlwZSh2YWx1ZTEpO1xuXG4gICAgLy8gSWYgdGhlIHR3byBpdGVtcyBhcmUgbm90IHRoZSBzYW1lIHR5cGUsIHJldHVybiBmYWxzZVxuICAgIGlmICh0eXBlICE9PSBnZXRUeXBlKHZhbHVlMikpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENvbXBhcmUgYmFzZWQgb24gdHlwZVxuICAgIGlmICh0eXBlID09PSAnZGF0ZScpIHJldHVybiBhcmVEYXRlc0VxdWFsKCk7XG4gICAgaWYgKHR5cGUgPT09ICdhcnJheWJ1ZmZlcicpIHJldHVybiBhcmVBcnJheXNCdWZmZXJFcXVhbCgpO1xuICAgIGlmICh0eXBlID09PSAnYXJyYXknKSByZXR1cm4gYXJlQXJyYXlzRXF1YWwoKTtcbiAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHJldHVybiBhcmVPYmplY3RzRXF1YWwoKTtcbiAgICBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGFyZUZ1bmN0aW9uc0VxdWFsKCk7XG4gICAgcmV0dXJuIGFyZVByaW1hdGl2ZXNFcXVhbCgpO1xuICB9LFxuICBjbG9uZSh0YXJnZXQ6IGFueSkge1xuICAgIGNvbnN0IGNvbnN0ckZ1biA9IHRhcmdldC5jb25zdHJ1Y3RvcjtcbiAgICBzd2l0Y2ggKHRoaXMucmF3VHlwZSh0YXJnZXQpKSB7XG4gICAgICBjYXNlICdCb29sZWFuJzpcbiAgICAgIGNhc2UgJ051bWJlcic6XG4gICAgICBjYXNlICdTdHJpbmcnOlxuICAgICAgY2FzZSAnRXJyb3InOlxuICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICAgIHJldHVybiBuZXcgY29uc3RyRnVuKHRhcmdldCk7XG4gICAgICBjYXNlICdSZWdFeHAnOlxuICAgICAgICByZXR1cm4gY2xvbmVSZWcodGFyZ2V0KTtcbiAgICAgIGNhc2UgJ1N5bWJvbCc6XG4gICAgICAgIHJldHVybiBjbG9uZVN5bWJvbCh0YXJnZXQpO1xuICAgICAgY2FzZSAnRnVuY3Rpb24nOlxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LFxufTtcbiJdfQ==
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxXQUFXLENBQUMsS0FBVTtJQUM3QixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBVTtJQUMxQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUNuQyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ25CLE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQztJQUNyRCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVU7UUFDdEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUNwQyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxL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cmV0dXJuIE9iamVjdChTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh0YXJnZSkpO1xufVxuXG5mdW5jdGlvbiBjbG9uZVJlZyh0YXJnZTogYW55KSB7XG4gIGNvbnN0IHJlRmxhZ3MgPSAvXFx3KiQvO1xuICBjb25zdCByZXN1bHQgPSBuZXcgdGFyZ2UuY29uc3RydWN0b3IodGFyZ2Uuc291cmNlLCByZUZsYWdzLmV4ZWModGFyZ2UpKTtcbiAgcmVzdWx0Lmxhc3RJbmRleCA9IHRhcmdlLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGNvbnN0IFR5cGVzID0ge1xuICByYXdUeXBlKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSk7XG4gIH0sXG5cbiAgaXNPYmplY3QodmFsdWU6IGFueSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsO1xuICB9LFxuXG4gIGlzUGxhaW5PYmplY3QodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLnJhd1R5cGUodmFsdWUpICE9PSAnT2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gICAgcmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGU7XG4gIH0sXG5cbiAgaXNGdW5jdGlvbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgfSxcblxuICBpc0FycmF5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH0sXG5cbiAgaXNNYXAodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJhd1R5cGUodmFsdWUpID09PSAnTWFwJztcbiAgfSxcblxuICBpc0VtcHR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICF2YWx1ZS5sZW5ndGgpIHx8XG4gICAgICAodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmIGlzTmFOKHZhbHVlLnZhbHVlT2YoKSkpIHx8XG4gICAgICAoVHlwZXMuaXNNYXAodmFsdWUpICYmICF2YWx1ZS5zaXplKSB8fFxuICAgICAgKFR5cGVzLmlzQXJyYXkodmFsdWUpICYmICF2YWx1ZS5sZW5ndGgpIHx8XG4gICAgICAoVHlwZXMuaXNGdW5jdGlvbih2YWx1ZS5pc0VtcHR5KSAmJiB2YWx1ZS5pc0VtcHR5KCkpIHx8XG4gICAgICAoVHlwZXMuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICAgICAgKHZhbHVlIGFzIGFueVtdKS5ldmVyeSgodikgPT4gVHlwZXMuaXNFbXB0eSh2KSkpIHx8XG4gICAgICAoVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSkgJiZcbiAgICAgICAgIU9iamVjdC5rZXlzKHZhbHVlKS5maWx0ZXIoKGspID0+IHZhbHVlLmhhc093blByb3BlcnR5KGspKS5sZW5ndGgpXG4gICAgKTtcbiAgfSxcblxuICBpc0VxdWFsKHZhbHVlMTogYW55LCB2YWx1ZTI6IGFueSkge1xuICAgIGZ1bmN0aW9uIGdldFR5cGUob2JqOiBhbnkpIHtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKS5zbGljZSg4LCAtMSkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcmVEYXRlc0VxdWFsKCkge1xuICAgICAgcmV0dXJuIHZhbHVlMS5nZXRUaW1lKCkgPT09IHZhbHVlMi5nZXRUaW1lKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXJlQXJyYXlzQnVmZmVyRXF1YWwoKSB7XG4gICAgICBpZiAodmFsdWUxLmJ5dGVMZW5ndGggIT09IHZhbHVlMi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHZpZXcxID0gbmV3IERhdGFWaWV3KHZhbHVlMSk7XG4gICAgICB2YXIgdmlldzIgPSBuZXcgRGF0YVZpZXcodmFsdWUyKTtcblxuICAgICAgdmFyIGkgPSB2YWx1ZTEuYnl0ZUxlbmd0aDtcbiAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgaWYgKHZpZXcxLmdldFVpbnQ4KGkpICE9PSB2aWV3Mi5nZXRVaW50OChpKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcmVBcnJheXNFcXVhbCgpIHtcbiAgICAgIC8vIENoZWNrIGxlbmd0aFxuICAgICAgaWYgKHZhbHVlMS5sZW5ndGggIT09IHZhbHVlMi5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgICAgLy8gQ2hlY2sgZWFjaCBpdGVtIGluIHRoZSBhcnJheVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZTEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFUeXBlcy5pc0VxdWFsKHZhbHVlMVtpXSwgdmFsdWUyW2ldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiBubyBlcnJvcnMsIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcmVPYmplY3RzRXF1YWwoKSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXModmFsdWUxKS5sZW5ndGggIT09IE9iamVjdC5rZXlzKHZhbHVlMikubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIC8vIENoZWNrIGVhY2ggaXRlbSBpbiB0aGUgb2JqZWN0XG4gICAgICBmb3IgKGxldCBrZXkgaW4gdmFsdWUxKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUxLCBrZXkpKSB7XG4gICAgICAgICAgaWYgKCFUeXBlcy5pc0VxdWFsKHZhbHVlMVtrZXldLCB2YWx1ZTJba2V5XSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiBubyBlcnJvcnMsIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcmVGdW5jdGlvbnNFcXVhbCgpIHtcbiAgICAgIHJldHVybiB2YWx1ZTEudG9TdHJpbmcoKSA9PT0gdmFsdWUyLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXJlUHJpbWF0aXZlc0VxdWFsKCkge1xuICAgICAgcmV0dXJuIHZhbHVlMSA9PT0gdmFsdWUyO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgb2JqZWN0IHR5cGVcbiAgICBsZXQgdHlwZSA9IGdldFR5cGUodmFsdWUxKTtcblxuICAgIC8vIElmIHRoZSB0d28gaXRlbXMgYXJlIG5vdCB0aGUgc2FtZSB0eXBlLCByZXR1cm4gZmFsc2VcbiAgICBpZiAodHlwZSAhPT0gZ2V0VHlwZSh2YWx1ZTIpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDb21wYXJlIGJhc2VkIG9uIHR5cGVcbiAgICBpZiAodHlwZSA9PT0gJ2RhdGUnKSByZXR1cm4gYXJlRGF0ZXNFcXVhbCgpO1xuICAgIGlmICh0eXBlID09PSAnYXJyYXlidWZmZXInKSByZXR1cm4gYXJlQXJyYXlzQnVmZmVyRXF1YWwoKTtcbiAgICBpZiAodHlwZSA9PT0gJ2FycmF5JykgcmV0dXJuIGFyZUFycmF5c0VxdWFsKCk7XG4gICAgaWYgKHR5cGUgPT09ICdvYmplY3QnKSByZXR1cm4gYXJlT2JqZWN0c0VxdWFsKCk7XG4gICAgaWYgKHR5cGUgPT09ICdmdW5jdGlvbicpIHJldHVybiBhcmVGdW5jdGlvbnNFcXVhbCgpO1xuICAgIHJldHVybiBhcmVQcmltYXRpdmVzRXF1YWwoKTtcbiAgfSxcbiAgY2xvbmUodGFyZ2V0OiBhbnkpIHtcbiAgICBjb25zdCBjb25zdHJGdW4gPSB0YXJnZXQuY29uc3RydWN0b3I7XG4gICAgc3dpdGNoICh0aGlzLnJhd1R5cGUodGFyZ2V0KSkge1xuICAgICAgY2FzZSAnQm9vbGVhbic6XG4gICAgICBjYXNlICdOdW1iZXInOlxuICAgICAgY2FzZSAnU3RyaW5nJzpcbiAgICAgIGNhc2UgJ0Vycm9yJzpcbiAgICAgIGNhc2UgJ0RhdGUnOlxuICAgICAgICByZXR1cm4gbmV3IGNvbnN0ckZ1bih0YXJnZXQpO1xuICAgICAgY2FzZSAnUmVnRXhwJzpcbiAgICAgICAgcmV0dXJuIGNsb25lUmVnKHRhcmdldCk7XG4gICAgICBjYXNlICdTeW1ib2wnOlxuICAgICAgICByZXR1cm4gY2xvbmVTeW1ib2wodGFyZ2V0KTtcbiAgICAgIGNhc2UgJ0Z1bmN0aW9uJzpcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSxcbn07XG4iXX0=