taon-typeorm 18.0.23 → 19.0.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 (1216) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/package.json +1 -1
  3. package/tmp-environment.json +24 -3
  4. package/browser/esm2022/lib/index.mjs +0 -4
  5. package/browser/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
  6. package/browser/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
  7. package/browser/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
  8. package/browser/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
  9. package/browser/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
  10. package/browser/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
  11. package/browser/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
  12. package/browser/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
  13. package/browser/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
  14. package/browser/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
  15. package/browser/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
  16. package/browser/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
  17. package/browser/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
  18. package/browser/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
  19. package/browser/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
  20. package/browser/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
  21. package/browser/esm2022/lib/typeorm/constants.mjs +0 -4
  22. package/browser/esm2022/lib/typeorm/container.mjs +0 -57
  23. package/browser/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
  24. package/browser/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
  25. package/browser/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
  26. package/browser/esm2022/lib/typeorm/data-source/index.mjs +0 -4
  27. package/browser/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
  28. package/browser/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
  29. package/browser/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
  30. package/browser/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
  31. package/browser/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
  32. package/browser/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
  33. package/browser/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
  34. package/browser/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
  35. package/browser/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
  36. package/browser/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
  37. package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
  38. package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
  39. package/browser/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
  40. package/browser/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
  41. package/browser/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
  42. package/browser/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
  43. package/browser/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
  44. package/browser/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
  45. package/browser/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
  46. package/browser/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
  47. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
  48. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
  49. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
  50. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
  51. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
  52. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
  53. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
  54. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
  55. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
  56. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
  57. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
  58. package/browser/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
  59. package/browser/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
  60. package/browser/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
  61. package/browser/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
  62. package/browser/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
  63. package/browser/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
  64. package/browser/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
  65. package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
  66. package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
  67. package/browser/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
  68. package/browser/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
  69. package/browser/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
  70. package/browser/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
  71. package/browser/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
  72. package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
  73. package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
  74. package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
  75. package/browser/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
  76. package/browser/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
  77. package/browser/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
  78. package/browser/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
  79. package/browser/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
  80. package/browser/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
  81. package/browser/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
  82. package/browser/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
  83. package/browser/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
  84. package/browser/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
  85. package/browser/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
  86. package/browser/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
  87. package/browser/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
  88. package/browser/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
  89. package/browser/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
  90. package/browser/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
  91. package/browser/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
  92. package/browser/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
  93. package/browser/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
  94. package/browser/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
  95. package/browser/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
  96. package/browser/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
  97. package/browser/esm2022/lib/typeorm/driver/Query.mjs +0 -13
  98. package/browser/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
  99. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
  100. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
  101. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
  102. package/browser/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
  103. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
  104. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
  105. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
  106. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
  107. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
  108. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
  109. package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
  110. package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
  111. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
  112. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
  113. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
  114. package/browser/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
  115. package/browser/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
  116. package/browser/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
  117. package/browser/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
  118. package/browser/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
  119. package/browser/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
  120. package/browser/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
  121. package/browser/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
  122. package/browser/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
  123. package/browser/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
  124. package/browser/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
  125. package/browser/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
  126. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
  127. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
  128. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
  129. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
  130. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
  131. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
  132. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
  133. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
  134. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
  135. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
  136. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
  137. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
  138. package/browser/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
  139. package/browser/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
  140. package/browser/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
  141. package/browser/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
  142. package/browser/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
  143. package/browser/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
  144. package/browser/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
  145. package/browser/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
  146. package/browser/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
  147. package/browser/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
  148. package/browser/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
  149. package/browser/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
  150. package/browser/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
  151. package/browser/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
  152. package/browser/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
  153. package/browser/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
  154. package/browser/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
  155. package/browser/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
  156. package/browser/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
  157. package/browser/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
  158. package/browser/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
  159. package/browser/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
  160. package/browser/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
  161. package/browser/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
  162. package/browser/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
  163. package/browser/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
  164. package/browser/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
  165. package/browser/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
  166. package/browser/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
  167. package/browser/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
  168. package/browser/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
  169. package/browser/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
  170. package/browser/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
  171. package/browser/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
  172. package/browser/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
  173. package/browser/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
  174. package/browser/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
  175. package/browser/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
  176. package/browser/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
  177. package/browser/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
  178. package/browser/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
  179. package/browser/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
  180. package/browser/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
  181. package/browser/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
  182. package/browser/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
  183. package/browser/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
  184. package/browser/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
  185. package/browser/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
  186. package/browser/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
  187. package/browser/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
  188. package/browser/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
  189. package/browser/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
  190. package/browser/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
  191. package/browser/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
  192. package/browser/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
  193. package/browser/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
  194. package/browser/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
  195. package/browser/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
  196. package/browser/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
  197. package/browser/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
  198. package/browser/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
  199. package/browser/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
  200. package/browser/esm2022/lib/typeorm/error/index.mjs +0 -63
  201. package/browser/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
  202. package/browser/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
  203. package/browser/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
  204. package/browser/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
  205. package/browser/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
  206. package/browser/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
  207. package/browser/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
  208. package/browser/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
  209. package/browser/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
  210. package/browser/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
  211. package/browser/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
  212. package/browser/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
  213. package/browser/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
  214. package/browser/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
  215. package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
  216. package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
  217. package/browser/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
  218. package/browser/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
  219. package/browser/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
  220. package/browser/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
  221. package/browser/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
  222. package/browser/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
  223. package/browser/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
  224. package/browser/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
  225. package/browser/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
  226. package/browser/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
  227. package/browser/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
  228. package/browser/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
  229. package/browser/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
  230. package/browser/esm2022/lib/typeorm/globals.mjs +0 -165
  231. package/browser/esm2022/lib/typeorm/index.mjs +0 -157
  232. package/browser/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
  233. package/browser/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
  234. package/browser/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
  235. package/browser/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
  236. package/browser/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
  237. package/browser/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
  238. package/browser/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
  239. package/browser/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
  240. package/browser/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
  241. package/browser/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
  242. package/browser/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
  243. package/browser/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
  244. package/browser/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
  245. package/browser/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
  246. package/browser/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
  247. package/browser/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
  248. package/browser/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
  249. package/browser/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
  250. package/browser/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
  251. package/browser/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
  252. package/browser/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
  253. package/browser/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
  254. package/browser/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
  255. package/browser/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
  256. package/browser/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
  257. package/browser/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
  258. package/browser/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
  259. package/browser/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
  260. package/browser/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
  261. package/browser/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
  262. package/browser/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
  263. package/browser/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
  264. package/browser/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
  265. package/browser/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
  266. package/browser/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
  267. package/browser/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
  268. package/browser/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
  269. package/browser/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
  270. package/browser/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
  271. package/browser/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
  272. package/browser/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
  273. package/browser/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
  274. package/browser/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
  275. package/browser/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
  276. package/browser/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
  277. package/browser/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
  278. package/browser/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
  279. package/browser/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
  280. package/browser/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
  281. package/browser/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
  282. package/browser/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
  283. package/browser/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
  284. package/browser/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
  285. package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
  286. package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
  287. package/browser/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
  288. package/browser/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
  289. package/browser/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
  290. package/browser/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
  291. package/browser/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
  292. package/browser/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
  293. package/browser/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
  294. package/browser/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
  295. package/browser/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
  296. package/browser/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
  297. package/browser/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
  298. package/browser/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
  299. package/browser/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
  300. package/browser/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
  301. package/browser/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
  302. package/browser/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
  303. package/browser/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
  304. package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
  305. package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
  306. package/browser/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
  307. package/browser/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
  308. package/browser/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
  309. package/browser/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
  310. package/browser/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
  311. package/browser/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
  312. package/browser/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
  313. package/browser/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
  314. package/browser/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
  315. package/browser/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
  316. package/browser/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
  317. package/browser/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
  318. package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
  319. package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
  320. package/browser/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
  321. package/browser/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
  322. package/browser/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
  323. package/browser/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
  324. package/browser/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
  325. package/browser/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
  326. package/browser/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
  327. package/browser/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
  328. package/browser/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
  329. package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
  330. package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
  331. package/browser/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
  332. package/browser/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
  333. package/browser/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
  334. package/browser/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
  335. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
  336. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
  337. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
  338. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
  339. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
  340. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
  341. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
  342. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
  343. package/browser/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
  344. package/browser/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
  345. package/browser/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
  346. package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
  347. package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
  348. package/browser/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
  349. package/browser/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
  350. package/browser/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
  351. package/browser/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
  352. package/browser/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
  353. package/browser/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
  354. package/browser/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
  355. package/browser/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
  356. package/browser/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
  357. package/browser/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
  358. package/browser/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
  359. package/browser/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
  360. package/browser/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
  361. package/browser/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
  362. package/browser/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
  363. package/browser/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
  364. package/browser/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
  365. package/browser/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
  366. package/browser/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
  367. package/browser/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
  368. package/browser/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
  369. package/browser/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
  370. package/browser/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
  371. package/browser/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
  372. package/browser/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
  373. package/browser/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
  374. package/browser/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
  375. package/browser/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
  376. package/browser/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
  377. package/browser/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
  378. package/browser/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
  379. package/browser/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
  380. package/browser/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
  381. package/browser/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
  382. package/browser/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
  383. package/browser/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
  384. package/browser/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
  385. package/browser/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
  386. package/browser/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
  387. package/browser/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
  388. package/browser/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
  389. package/browser/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
  390. package/browser/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
  391. package/browser/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
  392. package/browser/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
  393. package/browser/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
  394. package/browser/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
  395. package/browser/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
  396. package/browser/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
  397. package/browser/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
  398. package/browser/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
  399. package/browser/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
  400. package/browser/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
  401. package/browser/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
  402. package/browser/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
  403. package/browser/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
  404. package/browser/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
  405. package/browser/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
  406. package/browser/esm2022/public-api.mjs +0 -2
  407. package/browser/esm2022/taon-typeorm.mjs +0 -5
  408. package/client/esm2022/lib/index.mjs +0 -4
  409. package/client/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
  410. package/client/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
  411. package/client/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
  412. package/client/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
  413. package/client/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
  414. package/client/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
  415. package/client/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
  416. package/client/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
  417. package/client/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
  418. package/client/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
  419. package/client/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
  420. package/client/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
  421. package/client/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
  422. package/client/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
  423. package/client/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
  424. package/client/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
  425. package/client/esm2022/lib/typeorm/constants.mjs +0 -4
  426. package/client/esm2022/lib/typeorm/container.mjs +0 -57
  427. package/client/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
  428. package/client/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
  429. package/client/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
  430. package/client/esm2022/lib/typeorm/data-source/index.mjs +0 -4
  431. package/client/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
  432. package/client/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
  433. package/client/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
  434. package/client/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
  435. package/client/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
  436. package/client/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
  437. package/client/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
  438. package/client/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
  439. package/client/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
  440. package/client/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
  441. package/client/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
  442. package/client/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
  443. package/client/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
  444. package/client/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
  445. package/client/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
  446. package/client/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
  447. package/client/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
  448. package/client/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
  449. package/client/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
  450. package/client/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
  451. package/client/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
  452. package/client/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
  453. package/client/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
  454. package/client/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
  455. package/client/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
  456. package/client/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
  457. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
  458. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
  459. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
  460. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
  461. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
  462. package/client/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
  463. package/client/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
  464. package/client/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
  465. package/client/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
  466. package/client/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
  467. package/client/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
  468. package/client/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
  469. package/client/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
  470. package/client/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
  471. package/client/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
  472. package/client/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
  473. package/client/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
  474. package/client/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
  475. package/client/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
  476. package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
  477. package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
  478. package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
  479. package/client/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
  480. package/client/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
  481. package/client/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
  482. package/client/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
  483. package/client/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
  484. package/client/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
  485. package/client/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
  486. package/client/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
  487. package/client/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
  488. package/client/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
  489. package/client/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
  490. package/client/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
  491. package/client/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
  492. package/client/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
  493. package/client/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
  494. package/client/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
  495. package/client/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
  496. package/client/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
  497. package/client/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
  498. package/client/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
  499. package/client/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
  500. package/client/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
  501. package/client/esm2022/lib/typeorm/driver/Query.mjs +0 -13
  502. package/client/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
  503. package/client/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
  504. package/client/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
  505. package/client/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
  506. package/client/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
  507. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
  508. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
  509. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
  510. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
  511. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
  512. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
  513. package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
  514. package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
  515. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
  516. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
  517. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
  518. package/client/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
  519. package/client/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
  520. package/client/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
  521. package/client/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
  522. package/client/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
  523. package/client/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
  524. package/client/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
  525. package/client/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
  526. package/client/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
  527. package/client/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
  528. package/client/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
  529. package/client/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
  530. package/client/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
  531. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
  532. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
  533. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
  534. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
  535. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
  536. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
  537. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
  538. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
  539. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
  540. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
  541. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
  542. package/client/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
  543. package/client/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
  544. package/client/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
  545. package/client/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
  546. package/client/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
  547. package/client/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
  548. package/client/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
  549. package/client/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
  550. package/client/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
  551. package/client/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
  552. package/client/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
  553. package/client/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
  554. package/client/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
  555. package/client/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
  556. package/client/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
  557. package/client/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
  558. package/client/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
  559. package/client/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
  560. package/client/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
  561. package/client/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
  562. package/client/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
  563. package/client/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
  564. package/client/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
  565. package/client/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
  566. package/client/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
  567. package/client/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
  568. package/client/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
  569. package/client/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
  570. package/client/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
  571. package/client/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
  572. package/client/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
  573. package/client/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
  574. package/client/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
  575. package/client/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
  576. package/client/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
  577. package/client/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
  578. package/client/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
  579. package/client/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
  580. package/client/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
  581. package/client/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
  582. package/client/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
  583. package/client/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
  584. package/client/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
  585. package/client/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
  586. package/client/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
  587. package/client/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
  588. package/client/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
  589. package/client/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
  590. package/client/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
  591. package/client/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
  592. package/client/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
  593. package/client/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
  594. package/client/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
  595. package/client/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
  596. package/client/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
  597. package/client/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
  598. package/client/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
  599. package/client/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
  600. package/client/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
  601. package/client/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
  602. package/client/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
  603. package/client/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
  604. package/client/esm2022/lib/typeorm/error/index.mjs +0 -63
  605. package/client/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
  606. package/client/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
  607. package/client/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
  608. package/client/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
  609. package/client/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
  610. package/client/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
  611. package/client/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
  612. package/client/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
  613. package/client/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
  614. package/client/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
  615. package/client/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
  616. package/client/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
  617. package/client/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
  618. package/client/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
  619. package/client/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
  620. package/client/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
  621. package/client/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
  622. package/client/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
  623. package/client/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
  624. package/client/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
  625. package/client/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
  626. package/client/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
  627. package/client/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
  628. package/client/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
  629. package/client/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
  630. package/client/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
  631. package/client/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
  632. package/client/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
  633. package/client/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
  634. package/client/esm2022/lib/typeorm/globals.mjs +0 -165
  635. package/client/esm2022/lib/typeorm/index.mjs +0 -157
  636. package/client/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
  637. package/client/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
  638. package/client/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
  639. package/client/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
  640. package/client/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
  641. package/client/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
  642. package/client/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
  643. package/client/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
  644. package/client/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
  645. package/client/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
  646. package/client/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
  647. package/client/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
  648. package/client/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
  649. package/client/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
  650. package/client/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
  651. package/client/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
  652. package/client/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
  653. package/client/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
  654. package/client/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
  655. package/client/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
  656. package/client/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
  657. package/client/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
  658. package/client/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
  659. package/client/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
  660. package/client/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
  661. package/client/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
  662. package/client/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
  663. package/client/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
  664. package/client/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
  665. package/client/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
  666. package/client/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
  667. package/client/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
  668. package/client/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
  669. package/client/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
  670. package/client/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
  671. package/client/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
  672. package/client/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
  673. package/client/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
  674. package/client/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
  675. package/client/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
  676. package/client/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
  677. package/client/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
  678. package/client/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
  679. package/client/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
  680. package/client/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
  681. package/client/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
  682. package/client/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
  683. package/client/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
  684. package/client/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
  685. package/client/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
  686. package/client/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
  687. package/client/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
  688. package/client/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
  689. package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
  690. package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
  691. package/client/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
  692. package/client/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
  693. package/client/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
  694. package/client/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
  695. package/client/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
  696. package/client/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
  697. package/client/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
  698. package/client/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
  699. package/client/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
  700. package/client/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
  701. package/client/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
  702. package/client/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
  703. package/client/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
  704. package/client/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
  705. package/client/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
  706. package/client/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
  707. package/client/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
  708. package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
  709. package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
  710. package/client/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
  711. package/client/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
  712. package/client/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
  713. package/client/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
  714. package/client/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
  715. package/client/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
  716. package/client/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
  717. package/client/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
  718. package/client/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
  719. package/client/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
  720. package/client/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
  721. package/client/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
  722. package/client/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
  723. package/client/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
  724. package/client/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
  725. package/client/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
  726. package/client/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
  727. package/client/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
  728. package/client/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
  729. package/client/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
  730. package/client/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
  731. package/client/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
  732. package/client/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
  733. package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
  734. package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
  735. package/client/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
  736. package/client/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
  737. package/client/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
  738. package/client/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
  739. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
  740. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
  741. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
  742. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
  743. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
  744. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
  745. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
  746. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
  747. package/client/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
  748. package/client/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
  749. package/client/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
  750. package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
  751. package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
  752. package/client/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
  753. package/client/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
  754. package/client/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
  755. package/client/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
  756. package/client/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
  757. package/client/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
  758. package/client/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
  759. package/client/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
  760. package/client/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
  761. package/client/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
  762. package/client/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
  763. package/client/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
  764. package/client/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
  765. package/client/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
  766. package/client/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
  767. package/client/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
  768. package/client/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
  769. package/client/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
  770. package/client/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
  771. package/client/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
  772. package/client/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
  773. package/client/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
  774. package/client/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
  775. package/client/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
  776. package/client/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
  777. package/client/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
  778. package/client/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
  779. package/client/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
  780. package/client/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
  781. package/client/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
  782. package/client/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
  783. package/client/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
  784. package/client/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
  785. package/client/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
  786. package/client/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
  787. package/client/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
  788. package/client/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
  789. package/client/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
  790. package/client/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
  791. package/client/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
  792. package/client/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
  793. package/client/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
  794. package/client/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
  795. package/client/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
  796. package/client/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
  797. package/client/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
  798. package/client/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
  799. package/client/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
  800. package/client/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
  801. package/client/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
  802. package/client/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
  803. package/client/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
  804. package/client/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
  805. package/client/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
  806. package/client/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
  807. package/client/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
  808. package/client/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
  809. package/client/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
  810. package/client/esm2022/public-api.mjs +0 -2
  811. package/client/esm2022/taon-typeorm.mjs +0 -5
  812. package/taon.jsonc +0 -8
  813. package/websql/esm2022/lib/index.mjs +0 -4
  814. package/websql/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
  815. package/websql/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
  816. package/websql/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
  817. package/websql/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
  818. package/websql/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
  819. package/websql/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
  820. package/websql/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
  821. package/websql/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
  822. package/websql/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
  823. package/websql/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
  824. package/websql/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
  825. package/websql/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
  826. package/websql/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
  827. package/websql/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
  828. package/websql/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
  829. package/websql/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
  830. package/websql/esm2022/lib/typeorm/constants.mjs +0 -4
  831. package/websql/esm2022/lib/typeorm/container.mjs +0 -57
  832. package/websql/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
  833. package/websql/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
  834. package/websql/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
  835. package/websql/esm2022/lib/typeorm/data-source/index.mjs +0 -4
  836. package/websql/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
  837. package/websql/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
  838. package/websql/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
  839. package/websql/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
  840. package/websql/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
  841. package/websql/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
  842. package/websql/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
  843. package/websql/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
  844. package/websql/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
  845. package/websql/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
  846. package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
  847. package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
  848. package/websql/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
  849. package/websql/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
  850. package/websql/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
  851. package/websql/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
  852. package/websql/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
  853. package/websql/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
  854. package/websql/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
  855. package/websql/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
  856. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
  857. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
  858. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
  859. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
  860. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
  861. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
  862. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
  863. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
  864. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
  865. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
  866. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
  867. package/websql/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
  868. package/websql/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
  869. package/websql/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
  870. package/websql/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
  871. package/websql/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
  872. package/websql/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
  873. package/websql/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
  874. package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
  875. package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
  876. package/websql/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
  877. package/websql/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
  878. package/websql/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
  879. package/websql/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
  880. package/websql/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
  881. package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
  882. package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
  883. package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
  884. package/websql/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
  885. package/websql/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
  886. package/websql/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
  887. package/websql/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
  888. package/websql/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
  889. package/websql/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
  890. package/websql/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
  891. package/websql/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
  892. package/websql/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
  893. package/websql/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
  894. package/websql/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
  895. package/websql/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
  896. package/websql/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
  897. package/websql/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
  898. package/websql/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
  899. package/websql/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
  900. package/websql/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
  901. package/websql/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
  902. package/websql/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
  903. package/websql/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
  904. package/websql/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
  905. package/websql/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
  906. package/websql/esm2022/lib/typeorm/driver/Query.mjs +0 -13
  907. package/websql/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
  908. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
  909. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
  910. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
  911. package/websql/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
  912. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
  913. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
  914. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
  915. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
  916. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
  917. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
  918. package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
  919. package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
  920. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
  921. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
  922. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
  923. package/websql/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
  924. package/websql/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
  925. package/websql/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
  926. package/websql/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
  927. package/websql/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
  928. package/websql/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
  929. package/websql/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
  930. package/websql/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
  931. package/websql/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
  932. package/websql/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
  933. package/websql/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
  934. package/websql/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
  935. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
  936. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
  937. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
  938. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
  939. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
  940. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
  941. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
  942. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
  943. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
  944. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
  945. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
  946. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
  947. package/websql/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
  948. package/websql/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
  949. package/websql/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
  950. package/websql/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
  951. package/websql/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
  952. package/websql/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
  953. package/websql/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
  954. package/websql/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
  955. package/websql/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
  956. package/websql/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
  957. package/websql/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
  958. package/websql/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
  959. package/websql/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
  960. package/websql/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
  961. package/websql/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
  962. package/websql/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
  963. package/websql/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
  964. package/websql/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
  965. package/websql/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
  966. package/websql/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
  967. package/websql/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
  968. package/websql/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
  969. package/websql/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
  970. package/websql/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
  971. package/websql/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
  972. package/websql/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
  973. package/websql/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
  974. package/websql/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
  975. package/websql/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
  976. package/websql/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
  977. package/websql/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
  978. package/websql/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
  979. package/websql/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
  980. package/websql/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
  981. package/websql/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
  982. package/websql/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
  983. package/websql/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
  984. package/websql/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
  985. package/websql/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
  986. package/websql/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
  987. package/websql/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
  988. package/websql/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
  989. package/websql/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
  990. package/websql/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
  991. package/websql/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
  992. package/websql/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
  993. package/websql/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
  994. package/websql/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
  995. package/websql/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
  996. package/websql/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
  997. package/websql/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
  998. package/websql/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
  999. package/websql/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
  1000. package/websql/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
  1001. package/websql/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
  1002. package/websql/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
  1003. package/websql/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
  1004. package/websql/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
  1005. package/websql/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
  1006. package/websql/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
  1007. package/websql/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
  1008. package/websql/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
  1009. package/websql/esm2022/lib/typeorm/error/index.mjs +0 -63
  1010. package/websql/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
  1011. package/websql/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
  1012. package/websql/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
  1013. package/websql/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
  1014. package/websql/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
  1015. package/websql/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
  1016. package/websql/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
  1017. package/websql/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
  1018. package/websql/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
  1019. package/websql/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
  1020. package/websql/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
  1021. package/websql/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
  1022. package/websql/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
  1023. package/websql/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
  1024. package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
  1025. package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
  1026. package/websql/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
  1027. package/websql/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
  1028. package/websql/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
  1029. package/websql/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
  1030. package/websql/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
  1031. package/websql/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
  1032. package/websql/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
  1033. package/websql/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
  1034. package/websql/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
  1035. package/websql/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
  1036. package/websql/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
  1037. package/websql/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
  1038. package/websql/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
  1039. package/websql/esm2022/lib/typeorm/globals.mjs +0 -165
  1040. package/websql/esm2022/lib/typeorm/index.mjs +0 -157
  1041. package/websql/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
  1042. package/websql/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
  1043. package/websql/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
  1044. package/websql/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
  1045. package/websql/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
  1046. package/websql/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
  1047. package/websql/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
  1048. package/websql/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
  1049. package/websql/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
  1050. package/websql/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
  1051. package/websql/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
  1052. package/websql/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
  1053. package/websql/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
  1054. package/websql/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
  1055. package/websql/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
  1056. package/websql/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
  1057. package/websql/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
  1058. package/websql/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
  1059. package/websql/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
  1060. package/websql/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
  1061. package/websql/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
  1062. package/websql/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
  1063. package/websql/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
  1064. package/websql/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
  1065. package/websql/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
  1066. package/websql/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
  1067. package/websql/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
  1068. package/websql/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
  1069. package/websql/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
  1070. package/websql/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
  1071. package/websql/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
  1072. package/websql/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
  1073. package/websql/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
  1074. package/websql/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
  1075. package/websql/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
  1076. package/websql/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
  1077. package/websql/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
  1078. package/websql/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
  1079. package/websql/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
  1080. package/websql/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
  1081. package/websql/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
  1082. package/websql/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
  1083. package/websql/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
  1084. package/websql/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
  1085. package/websql/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
  1086. package/websql/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
  1087. package/websql/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
  1088. package/websql/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
  1089. package/websql/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
  1090. package/websql/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
  1091. package/websql/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
  1092. package/websql/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
  1093. package/websql/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
  1094. package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
  1095. package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
  1096. package/websql/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
  1097. package/websql/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
  1098. package/websql/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
  1099. package/websql/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
  1100. package/websql/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
  1101. package/websql/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
  1102. package/websql/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
  1103. package/websql/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
  1104. package/websql/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
  1105. package/websql/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
  1106. package/websql/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
  1107. package/websql/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
  1108. package/websql/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
  1109. package/websql/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
  1110. package/websql/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
  1111. package/websql/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
  1112. package/websql/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
  1113. package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
  1114. package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
  1115. package/websql/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
  1116. package/websql/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
  1117. package/websql/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
  1118. package/websql/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -331
  1119. package/websql/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
  1120. package/websql/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
  1121. package/websql/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
  1122. package/websql/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
  1123. package/websql/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
  1124. package/websql/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
  1125. package/websql/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
  1126. package/websql/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
  1127. package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
  1128. package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
  1129. package/websql/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
  1130. package/websql/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
  1131. package/websql/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
  1132. package/websql/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
  1133. package/websql/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
  1134. package/websql/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
  1135. package/websql/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
  1136. package/websql/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
  1137. package/websql/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
  1138. package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
  1139. package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
  1140. package/websql/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
  1141. package/websql/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
  1142. package/websql/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
  1143. package/websql/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
  1144. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
  1145. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
  1146. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
  1147. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
  1148. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
  1149. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
  1150. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
  1151. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
  1152. package/websql/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
  1153. package/websql/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
  1154. package/websql/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
  1155. package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
  1156. package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
  1157. package/websql/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
  1158. package/websql/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
  1159. package/websql/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
  1160. package/websql/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
  1161. package/websql/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
  1162. package/websql/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
  1163. package/websql/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
  1164. package/websql/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
  1165. package/websql/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
  1166. package/websql/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
  1167. package/websql/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
  1168. package/websql/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
  1169. package/websql/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
  1170. package/websql/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
  1171. package/websql/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
  1172. package/websql/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
  1173. package/websql/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
  1174. package/websql/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
  1175. package/websql/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
  1176. package/websql/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
  1177. package/websql/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
  1178. package/websql/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
  1179. package/websql/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
  1180. package/websql/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
  1181. package/websql/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
  1182. package/websql/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
  1183. package/websql/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
  1184. package/websql/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
  1185. package/websql/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
  1186. package/websql/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
  1187. package/websql/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
  1188. package/websql/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
  1189. package/websql/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
  1190. package/websql/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
  1191. package/websql/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
  1192. package/websql/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
  1193. package/websql/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
  1194. package/websql/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
  1195. package/websql/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
  1196. package/websql/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
  1197. package/websql/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
  1198. package/websql/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
  1199. package/websql/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
  1200. package/websql/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
  1201. package/websql/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
  1202. package/websql/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
  1203. package/websql/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
  1204. package/websql/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
  1205. package/websql/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
  1206. package/websql/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
  1207. package/websql/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
  1208. package/websql/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
  1209. package/websql/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
  1210. package/websql/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
  1211. package/websql/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
  1212. package/websql/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
  1213. package/websql/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
  1214. package/websql/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
  1215. package/websql/esm2022/public-api.mjs +0 -2
  1216. package/websql/esm2022/taon-typeorm.mjs +0 -5
@@ -1,678 +0,0 @@
1
- import { EntityMetadata } from "../metadata/EntityMetadata";
2
- import { ColumnMetadata } from "../metadata/ColumnMetadata";
3
- import { IndexMetadata } from "../metadata/IndexMetadata";
4
- import { RelationMetadata } from "../metadata/RelationMetadata";
5
- import { EmbeddedMetadata } from "../metadata/EmbeddedMetadata";
6
- import { RelationIdMetadata } from "../metadata/RelationIdMetadata";
7
- import { RelationCountMetadata } from "../metadata/RelationCountMetadata";
8
- import { EventListenerTypes } from "../metadata/types/EventListenerTypes";
9
- import { MetadataUtils } from "./MetadataUtils";
10
- import { JunctionEntityMetadataBuilder } from "./JunctionEntityMetadataBuilder";
11
- import { ClosureJunctionEntityMetadataBuilder } from "./ClosureJunctionEntityMetadataBuilder";
12
- import { RelationJoinColumnBuilder } from "./RelationJoinColumnBuilder";
13
- import { EntityListenerMetadata } from "../metadata/EntityListenerMetadata";
14
- import { UniqueMetadata } from "../metadata/UniqueMetadata";
15
- import { CheckMetadata } from "../metadata/CheckMetadata";
16
- import { ExclusionMetadata } from "../metadata/ExclusionMetadata";
17
- import { TypeORMError } from "../error";
18
- import { DriverUtils } from "../driver/DriverUtils";
19
- /**
20
- * Builds EntityMetadata objects and all its sub-metadatas.
21
- */
22
- export class EntityMetadataBuilder {
23
- constructor(connection, metadataArgsStorage) {
24
- this.connection = connection;
25
- this.metadataArgsStorage = metadataArgsStorage;
26
- this.junctionEntityMetadataBuilder = new JunctionEntityMetadataBuilder(connection);
27
- this.closureJunctionEntityMetadataBuilder =
28
- new ClosureJunctionEntityMetadataBuilder(connection);
29
- this.relationJoinColumnBuilder = new RelationJoinColumnBuilder(connection);
30
- }
31
- /**
32
- * Builds a complete entity metadatas for the given entity classes.
33
- */
34
- build(entityClasses) {
35
- const allTables = entityClasses
36
- ? this.metadataArgsStorage.filterTables(entityClasses)
37
- : this.metadataArgsStorage.tables;
38
- const realTables = allTables.filter((table) => table.type === "regular" ||
39
- table.type === "closure" ||
40
- table.type === "entity-child" ||
41
- table.type === "view");
42
- const entityMetadatas = realTables.map((tableArgs) => this.createEntityMetadata(tableArgs));
43
- entityMetadatas.forEach((entityMetadata) => this.computeParentEntityMetadata(entityMetadatas, entityMetadata));
44
- entityMetadatas.forEach((metadata) => {
45
- metadata.childEntityMetadatas = entityMetadatas.filter((childMetadata) => {
46
- return (typeof metadata.target === "function" &&
47
- typeof childMetadata.target === "function" &&
48
- MetadataUtils.isInherited(childMetadata.target, metadata.target));
49
- });
50
- });
51
- entityMetadatas
52
- .filter((entityMetadata) => entityMetadata.tableType !== "entity-child")
53
- .forEach((entityMetadata) => entityMetadata.build());
54
- entityMetadatas
55
- .filter((entityMetadata) => entityMetadata.tableType === "entity-child")
56
- .forEach((entityMetadata) => entityMetadata.build());
57
- entityMetadatas
58
- .filter((entityMetadata) => entityMetadata.tableType !== "entity-child")
59
- .forEach((entityMetadata) => this.computeEntityMetadataStep1(entityMetadatas, entityMetadata));
60
- entityMetadatas
61
- .filter((entityMetadata) => entityMetadata.tableType === "entity-child")
62
- .forEach((entityMetadata) => this.computeEntityMetadataStep1(entityMetadatas, entityMetadata));
63
- entityMetadatas.forEach((entityMetadata) => this.computeEntityMetadataStep2(entityMetadata));
64
- entityMetadatas.forEach((entityMetadata) => this.computeInverseProperties(entityMetadata, entityMetadatas));
65
- entityMetadatas
66
- .filter((entityMetadata) => entityMetadata.tableType !== "entity-child")
67
- .forEach((entityMetadata) => {
68
- entityMetadata.relations
69
- .filter((relation) => relation.isOneToOne || relation.isManyToOne)
70
- .forEach((relation) => {
71
- const joinColumns = this.metadataArgsStorage.filterJoinColumns(relation.target, relation.propertyName);
72
- const { foreignKey, columns, uniqueConstraint } = this.relationJoinColumnBuilder.build(joinColumns, relation); // create a foreign key based on its metadata args
73
- if (foreignKey) {
74
- relation.registerForeignKeys(foreignKey); // push it to the relation and thus register there a join column
75
- entityMetadata.foreignKeys.push(foreignKey);
76
- }
77
- if (columns) {
78
- relation.registerJoinColumns(columns);
79
- }
80
- if (uniqueConstraint) {
81
- if (DriverUtils.isMySQLFamily(this.connection.driver) ||
82
- this.connection.driver.options.type ===
83
- "aurora-mysql" ||
84
- this.connection.driver.options.type ===
85
- "mssql" ||
86
- this.connection.driver.options.type === "sap" ||
87
- this.connection.driver.options.type ===
88
- "spanner") {
89
- const index = new IndexMetadata({
90
- entityMetadata: uniqueConstraint.entityMetadata,
91
- columns: uniqueConstraint.columns,
92
- args: {
93
- target: uniqueConstraint.target,
94
- name: uniqueConstraint.name,
95
- unique: true,
96
- synchronize: true,
97
- },
98
- });
99
- if (this.connection.driver.options.type ===
100
- "mssql") {
101
- index.where = index.columns
102
- .map((column) => {
103
- return `${this.connection.driver.escape(column.databaseName)} IS NOT NULL`;
104
- })
105
- .join(" AND ");
106
- }
107
- if (this.connection.driver.options.type ===
108
- "spanner") {
109
- index.isNullFiltered = true;
110
- }
111
- if (relation.embeddedMetadata) {
112
- relation.embeddedMetadata.indices.push(index);
113
- }
114
- else {
115
- relation.entityMetadata.ownIndices.push(index);
116
- }
117
- this.computeEntityMetadataStep2(entityMetadata);
118
- }
119
- else {
120
- if (relation.embeddedMetadata) {
121
- relation.embeddedMetadata.uniques.push(uniqueConstraint);
122
- }
123
- else {
124
- relation.entityMetadata.ownUniques.push(uniqueConstraint);
125
- }
126
- this.computeEntityMetadataStep2(entityMetadata);
127
- }
128
- }
129
- if (foreignKey &&
130
- this.connection.driver.options.type ===
131
- "cockroachdb") {
132
- const index = new IndexMetadata({
133
- entityMetadata: relation.entityMetadata,
134
- columns: foreignKey.columns,
135
- args: {
136
- target: relation.entityMetadata.target,
137
- synchronize: true,
138
- },
139
- });
140
- if (relation.embeddedMetadata) {
141
- relation.embeddedMetadata.indices.push(index);
142
- }
143
- else {
144
- relation.entityMetadata.ownIndices.push(index);
145
- }
146
- this.computeEntityMetadataStep2(entityMetadata);
147
- }
148
- });
149
- entityMetadata.relations
150
- .filter((relation) => relation.isManyToMany)
151
- .forEach((relation) => {
152
- const joinTable = this.metadataArgsStorage.findJoinTable(relation.target, relation.propertyName);
153
- if (!joinTable)
154
- return; // no join table set - no need to do anything (it means this is many-to-many inverse side)
155
- const junctionEntityMetadata = this.junctionEntityMetadataBuilder.build(relation, joinTable);
156
- relation.registerForeignKeys(...junctionEntityMetadata.foreignKeys);
157
- relation.registerJoinColumns(junctionEntityMetadata.ownIndices[0].columns, junctionEntityMetadata.ownIndices[1].columns);
158
- relation.registerJunctionEntityMetadata(junctionEntityMetadata);
159
- this.computeEntityMetadataStep2(junctionEntityMetadata);
160
- this.computeInverseProperties(junctionEntityMetadata, entityMetadatas);
161
- entityMetadatas.push(junctionEntityMetadata);
162
- });
163
- });
164
- entityMetadatas.forEach((entityMetadata) => {
165
- entityMetadata.relationsWithJoinColumns =
166
- entityMetadata.relations.filter((relation) => relation.isWithJoinColumn);
167
- entityMetadata.hasNonNullableRelations =
168
- entityMetadata.relationsWithJoinColumns.some((relation) => !relation.isNullable || relation.isPrimary);
169
- });
170
- entityMetadatas
171
- .filter((metadata) => metadata.treeType === "closure-table")
172
- .forEach((entityMetadata) => {
173
- const closureJunctionEntityMetadata = this.closureJunctionEntityMetadataBuilder.build(entityMetadata);
174
- entityMetadata.closureJunctionTable =
175
- closureJunctionEntityMetadata;
176
- this.computeEntityMetadataStep2(closureJunctionEntityMetadata);
177
- this.computeInverseProperties(closureJunctionEntityMetadata, entityMetadatas);
178
- entityMetadatas.push(closureJunctionEntityMetadata);
179
- });
180
- entityMetadatas
181
- .filter((metadata) => metadata.inheritancePattern === "STI" &&
182
- metadata.discriminatorColumn)
183
- .forEach((entityMetadata) => this.createKeysForTableInheritance(entityMetadata));
184
- entityMetadatas.forEach((entityMetadata) => {
185
- entityMetadata.indices.forEach((index) => index.build(this.connection.namingStrategy));
186
- });
187
- entityMetadatas.forEach((entityMetadata) => {
188
- entityMetadata.uniques.forEach((unique) => unique.build(this.connection.namingStrategy));
189
- });
190
- entityMetadatas.forEach((entityMetadata) => {
191
- entityMetadata.checks.forEach((check) => check.build(this.connection.namingStrategy));
192
- });
193
- entityMetadatas.forEach((entityMetadata) => {
194
- entityMetadata.exclusions.forEach((exclusion) => exclusion.build(this.connection.namingStrategy));
195
- });
196
- entityMetadatas
197
- .filter((metadata) => typeof metadata.target === "function")
198
- .forEach((entityMetadata) => {
199
- entityMetadata.relations
200
- .filter((relation) => relation.isLazy)
201
- .forEach((relation) => {
202
- this.connection.relationLoader.enableLazyLoad(relation, entityMetadata.target.prototype);
203
- });
204
- });
205
- entityMetadatas.forEach((entityMetadata) => {
206
- entityMetadata.columns.forEach((column) => {
207
- const generated = this.metadataArgsStorage.findGenerated(column.target, column.propertyName);
208
- if (generated) {
209
- column.isGenerated = true;
210
- column.generationStrategy = generated.strategy;
211
- if (generated.strategy === "uuid") {
212
- column.type = "uuid";
213
- }
214
- else if (generated.strategy === "rowid") {
215
- column.type = "int";
216
- }
217
- else {
218
- column.type = column.type || Number;
219
- }
220
- column.build(this.connection);
221
- this.computeEntityMetadataStep2(entityMetadata);
222
- }
223
- });
224
- });
225
- return entityMetadatas;
226
- }
227
- /**
228
- * Creates entity metadata from the given table args.
229
- * Creates column, relation, etc. metadatas for everything this entity metadata owns.
230
- */
231
- createEntityMetadata(tableArgs) {
232
- const inheritanceTree = typeof tableArgs.target === "function"
233
- ? MetadataUtils.getInheritanceTree(tableArgs.target)
234
- : [tableArgs.target]; // todo: implement later here inheritance for string-targets
235
- const tableInheritance = this.metadataArgsStorage.findInheritanceType(tableArgs.target);
236
- const tableTree = this.metadataArgsStorage.findTree(tableArgs.target);
237
- let singleTableChildrenTargets;
238
- if ((tableInheritance && tableInheritance.pattern === "STI") ||
239
- tableArgs.type === "entity-child") {
240
- singleTableChildrenTargets = this.metadataArgsStorage
241
- .filterSingleTableChildren(tableArgs.target)
242
- .map((args) => args.target)
243
- .filter((target) => typeof target === "function");
244
- inheritanceTree.push(...singleTableChildrenTargets);
245
- }
246
- return new EntityMetadata({
247
- connection: this.connection,
248
- args: tableArgs,
249
- inheritanceTree: inheritanceTree,
250
- tableTree: tableTree,
251
- inheritancePattern: tableInheritance
252
- ? tableInheritance.pattern
253
- : undefined,
254
- });
255
- }
256
- computeParentEntityMetadata(allEntityMetadatas, entityMetadata) {
257
- if (entityMetadata.tableType === "entity-child") {
258
- entityMetadata.parentEntityMetadata = allEntityMetadatas.find((allEntityMetadata) => {
259
- return (allEntityMetadata.inheritanceTree.indexOf(entityMetadata.target) !== -1 &&
260
- allEntityMetadata.inheritancePattern === "STI");
261
- });
262
- }
263
- }
264
- computeEntityMetadataStep1(allEntityMetadatas, entityMetadata) {
265
- const entityInheritance = this.metadataArgsStorage.findInheritanceType(entityMetadata.target);
266
- const discriminatorValue = this.metadataArgsStorage.findDiscriminatorValue(entityMetadata.target);
267
- if (typeof discriminatorValue !== "undefined") {
268
- entityMetadata.discriminatorValue = discriminatorValue.value;
269
- }
270
- else {
271
- entityMetadata.discriminatorValue = entityMetadata.target.name;
272
- }
273
- entityMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(entityMetadata.inheritanceTree)).map((embedded) => {
274
- if (entityMetadata.inheritancePattern === "STI") {
275
- embedded.columns = embedded.columns.map((column) => {
276
- column.isNullable = true;
277
- return column;
278
- });
279
- }
280
- return embedded;
281
- });
282
- entityMetadata.ownColumns = this.metadataArgsStorage
283
- .filterColumns(entityMetadata.inheritanceTree)
284
- .map((args) => {
285
- if (entityMetadata.tableType === "entity-child")
286
- return entityMetadata.parentEntityMetadata.ownColumns.find((column) => column.propertyName === args.propertyName);
287
- const column = new ColumnMetadata({
288
- connection: this.connection,
289
- entityMetadata,
290
- args,
291
- });
292
- const columnInSingleTableInheritedChild = allEntityMetadatas.find((otherEntityMetadata) => otherEntityMetadata.tableType === "entity-child" &&
293
- otherEntityMetadata.target === args.target);
294
- if (columnInSingleTableInheritedChild)
295
- column.isNullable = true;
296
- return column;
297
- });
298
- //
299
- if (entityInheritance && entityInheritance.column) {
300
- const discriminatorColumnName = entityInheritance.column && entityInheritance.column.name
301
- ? entityInheritance.column.name
302
- : "type";
303
- let discriminatorColumn = entityMetadata.ownColumns.find((column) => column.propertyName === discriminatorColumnName);
304
- if (!discriminatorColumn) {
305
- discriminatorColumn = new ColumnMetadata({
306
- connection: this.connection,
307
- entityMetadata: entityMetadata,
308
- args: {
309
- target: entityMetadata.target,
310
- mode: "virtual",
311
- propertyName: discriminatorColumnName,
312
- options: entityInheritance.column || {
313
- name: discriminatorColumnName,
314
- type: "varchar",
315
- nullable: false,
316
- },
317
- },
318
- });
319
- discriminatorColumn.isVirtual = true;
320
- discriminatorColumn.isDiscriminator = true;
321
- entityMetadata.ownColumns.push(discriminatorColumn);
322
- }
323
- else {
324
- discriminatorColumn.isDiscriminator = true;
325
- }
326
- }
327
- if (entityMetadata.tableType === "entity-child") {
328
- const discriminatorColumn = entityMetadata.parentEntityMetadata.ownColumns.find((column) => column.isDiscriminator);
329
- if (discriminatorColumn &&
330
- !entityMetadata.ownColumns.find((column) => column === discriminatorColumn)) {
331
- entityMetadata.ownColumns.push(discriminatorColumn);
332
- }
333
- }
334
- const { namingStrategy } = this.connection;
335
- if (entityMetadata.treeType === "materialized-path") {
336
- entityMetadata.ownColumns.push(new ColumnMetadata({
337
- connection: this.connection,
338
- entityMetadata: entityMetadata,
339
- materializedPath: true,
340
- args: {
341
- target: entityMetadata.target,
342
- mode: "virtual",
343
- propertyName: "mpath",
344
- options: /*tree.column || */ {
345
- name: namingStrategy.materializedPathColumnName,
346
- type: String,
347
- nullable: true,
348
- default: "",
349
- },
350
- },
351
- }));
352
- }
353
- else if (entityMetadata.treeType === "nested-set") {
354
- const { left, right } = namingStrategy.nestedSetColumnNames;
355
- entityMetadata.ownColumns.push(new ColumnMetadata({
356
- connection: this.connection,
357
- entityMetadata: entityMetadata,
358
- nestedSetLeft: true,
359
- args: {
360
- target: entityMetadata.target,
361
- mode: "virtual",
362
- propertyName: left,
363
- options: /*tree.column || */ {
364
- name: left,
365
- type: Number,
366
- nullable: false,
367
- default: 1,
368
- },
369
- },
370
- }));
371
- entityMetadata.ownColumns.push(new ColumnMetadata({
372
- connection: this.connection,
373
- entityMetadata: entityMetadata,
374
- nestedSetRight: true,
375
- args: {
376
- target: entityMetadata.target,
377
- mode: "virtual",
378
- propertyName: right,
379
- options: /*tree.column || */ {
380
- name: right,
381
- type: Number,
382
- nullable: false,
383
- default: 2,
384
- },
385
- },
386
- }));
387
- }
388
- entityMetadata.ownRelations = this.metadataArgsStorage
389
- .filterRelations(entityMetadata.inheritanceTree)
390
- .map((args) => {
391
- if (entityMetadata.tableType === "entity-child") {
392
- const parentRelation = entityMetadata.parentEntityMetadata.ownRelations.find((relation) => relation.propertyName === args.propertyName);
393
- const type = typeof args.type === "function"
394
- ? args.type()
395
- : args.type;
396
- if (parentRelation.type !== type) {
397
- const clone = Object.create(parentRelation);
398
- clone.type = type;
399
- return clone;
400
- }
401
- return parentRelation;
402
- }
403
- return new RelationMetadata({ entityMetadata, args });
404
- });
405
- entityMetadata.relationIds = this.metadataArgsStorage
406
- .filterRelationIds(entityMetadata.inheritanceTree)
407
- .map((args) => {
408
- if (entityMetadata.tableType === "entity-child")
409
- return entityMetadata.parentEntityMetadata.relationIds.find((relationId) => relationId.propertyName === args.propertyName);
410
- return new RelationIdMetadata({ entityMetadata, args });
411
- });
412
- entityMetadata.relationCounts = this.metadataArgsStorage
413
- .filterRelationCounts(entityMetadata.inheritanceTree)
414
- .map((args) => {
415
- if (entityMetadata.tableType === "entity-child")
416
- return entityMetadata.parentEntityMetadata.relationCounts.find((relationCount) => relationCount.propertyName === args.propertyName);
417
- return new RelationCountMetadata({ entityMetadata, args });
418
- });
419
- entityMetadata.ownListeners = this.metadataArgsStorage
420
- .filterListeners(entityMetadata.inheritanceTree)
421
- .map((args) => {
422
- return new EntityListenerMetadata({
423
- entityMetadata: entityMetadata,
424
- args: args,
425
- });
426
- });
427
- entityMetadata.checks = this.metadataArgsStorage
428
- .filterChecks(entityMetadata.inheritanceTree)
429
- .map((args) => {
430
- return new CheckMetadata({ entityMetadata, args });
431
- });
432
- if (this.connection.driver.options.type === "postgres") {
433
- entityMetadata.exclusions = this.metadataArgsStorage
434
- .filterExclusions(entityMetadata.inheritanceTree)
435
- .map((args) => {
436
- return new ExclusionMetadata({ entityMetadata, args });
437
- });
438
- }
439
- if (this.connection.driver.options.type === "cockroachdb") {
440
- entityMetadata.ownIndices = this.metadataArgsStorage
441
- .filterIndices(entityMetadata.inheritanceTree)
442
- .filter((args) => !args.unique)
443
- .map((args) => {
444
- return new IndexMetadata({ entityMetadata, args });
445
- });
446
- const uniques = this.metadataArgsStorage
447
- .filterIndices(entityMetadata.inheritanceTree)
448
- .filter((args) => args.unique)
449
- .map((args) => {
450
- return new UniqueMetadata({
451
- entityMetadata: entityMetadata,
452
- args: {
453
- target: args.target,
454
- name: args.name,
455
- columns: args.columns,
456
- },
457
- });
458
- });
459
- entityMetadata.ownUniques.push(...uniques);
460
- }
461
- else {
462
- entityMetadata.ownIndices = this.metadataArgsStorage
463
- .filterIndices(entityMetadata.inheritanceTree)
464
- .map((args) => {
465
- return new IndexMetadata({ entityMetadata, args });
466
- });
467
- }
468
- if (DriverUtils.isMySQLFamily(this.connection.driver) ||
469
- this.connection.driver.options.type === "aurora-mysql" ||
470
- this.connection.driver.options.type === "sap" ||
471
- this.connection.driver.options.type === "spanner") {
472
- const indices = this.metadataArgsStorage
473
- .filterUniques(entityMetadata.inheritanceTree)
474
- .map((args) => {
475
- return new IndexMetadata({
476
- entityMetadata: entityMetadata,
477
- args: {
478
- target: args.target,
479
- name: args.name,
480
- columns: args.columns,
481
- unique: true,
482
- synchronize: true,
483
- },
484
- });
485
- });
486
- entityMetadata.ownIndices.push(...indices);
487
- }
488
- else {
489
- const uniques = this.metadataArgsStorage
490
- .filterUniques(entityMetadata.inheritanceTree)
491
- .map((args) => {
492
- return new UniqueMetadata({ entityMetadata, args });
493
- });
494
- entityMetadata.ownUniques.push(...uniques);
495
- }
496
- }
497
- /**
498
- * Creates from the given embedded metadata args real embedded metadatas with its columns and relations,
499
- * and does the same for all its sub-embeddeds (goes recursively).
500
- */
501
- createEmbeddedsRecursively(entityMetadata, embeddedArgs) {
502
- return embeddedArgs.map((embeddedArgs) => {
503
- const embeddedMetadata = new EmbeddedMetadata({
504
- entityMetadata: entityMetadata,
505
- args: embeddedArgs,
506
- });
507
- const targets = typeof embeddedMetadata.type === "function"
508
- ? MetadataUtils.getInheritanceTree(embeddedMetadata.type)
509
- : [embeddedMetadata.type]; // todo: implement later here inheritance for string-targets
510
- embeddedMetadata.columns = this.metadataArgsStorage
511
- .filterColumns(targets)
512
- .map((args) => {
513
- return new ColumnMetadata({
514
- connection: this.connection,
515
- entityMetadata,
516
- embeddedMetadata,
517
- args,
518
- });
519
- });
520
- embeddedMetadata.relations = this.metadataArgsStorage
521
- .filterRelations(targets)
522
- .map((args) => {
523
- return new RelationMetadata({
524
- entityMetadata,
525
- embeddedMetadata,
526
- args,
527
- });
528
- });
529
- embeddedMetadata.listeners = this.metadataArgsStorage
530
- .filterListeners(targets)
531
- .map((args) => {
532
- return new EntityListenerMetadata({
533
- entityMetadata,
534
- embeddedMetadata,
535
- args,
536
- });
537
- });
538
- embeddedMetadata.indices = this.metadataArgsStorage
539
- .filterIndices(targets)
540
- .map((args) => {
541
- return new IndexMetadata({
542
- entityMetadata,
543
- embeddedMetadata,
544
- args,
545
- });
546
- });
547
- embeddedMetadata.uniques = this.metadataArgsStorage
548
- .filterUniques(targets)
549
- .map((args) => {
550
- return new UniqueMetadata({
551
- entityMetadata,
552
- embeddedMetadata,
553
- args,
554
- });
555
- });
556
- embeddedMetadata.relationIds = this.metadataArgsStorage
557
- .filterRelationIds(targets)
558
- .map((args) => {
559
- return new RelationIdMetadata({ entityMetadata, args });
560
- });
561
- embeddedMetadata.relationCounts = this.metadataArgsStorage
562
- .filterRelationCounts(targets)
563
- .map((args) => {
564
- return new RelationCountMetadata({ entityMetadata, args });
565
- });
566
- embeddedMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(targets));
567
- embeddedMetadata.embeddeds.forEach((subEmbedded) => (subEmbedded.parentEmbeddedMetadata = embeddedMetadata));
568
- entityMetadata.allEmbeddeds.push(embeddedMetadata);
569
- return embeddedMetadata;
570
- });
571
- }
572
- /**
573
- * Computes all entity metadata's computed properties, and all its sub-metadatas (relations, columns, embeds, etc).
574
- */
575
- computeEntityMetadataStep2(entityMetadata) {
576
- entityMetadata.embeddeds.forEach((embedded) => embedded.build(this.connection));
577
- entityMetadata.embeddeds.forEach((embedded) => {
578
- embedded.columnsFromTree.forEach((column) => column.build(this.connection));
579
- embedded.relationsFromTree.forEach((relation) => relation.build());
580
- });
581
- entityMetadata.ownColumns.forEach((column) => column.build(this.connection));
582
- entityMetadata.ownRelations.forEach((relation) => relation.build());
583
- entityMetadata.relations = entityMetadata.embeddeds.reduce((relations, embedded) => relations.concat(embedded.relationsFromTree), entityMetadata.ownRelations);
584
- entityMetadata.eagerRelations = entityMetadata.relations.filter((relation) => relation.isEager);
585
- entityMetadata.lazyRelations = entityMetadata.relations.filter((relation) => relation.isLazy);
586
- entityMetadata.oneToOneRelations = entityMetadata.relations.filter((relation) => relation.isOneToOne);
587
- entityMetadata.oneToManyRelations = entityMetadata.relations.filter((relation) => relation.isOneToMany);
588
- entityMetadata.manyToOneRelations = entityMetadata.relations.filter((relation) => relation.isManyToOne);
589
- entityMetadata.manyToManyRelations = entityMetadata.relations.filter((relation) => relation.isManyToMany);
590
- entityMetadata.ownerOneToOneRelations = entityMetadata.relations.filter((relation) => relation.isOneToOneOwner);
591
- entityMetadata.ownerManyToManyRelations =
592
- entityMetadata.relations.filter((relation) => relation.isManyToManyOwner);
593
- entityMetadata.treeParentRelation = entityMetadata.relations.find((relation) => relation.isTreeParent);
594
- entityMetadata.treeChildrenRelation = entityMetadata.relations.find((relation) => relation.isTreeChildren);
595
- entityMetadata.columns = entityMetadata.embeddeds.reduce((columns, embedded) => columns.concat(embedded.columnsFromTree), entityMetadata.ownColumns);
596
- entityMetadata.listeners = entityMetadata.embeddeds.reduce((listeners, embedded) => listeners.concat(embedded.listenersFromTree), entityMetadata.ownListeners);
597
- entityMetadata.afterLoadListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.AFTER_LOAD);
598
- entityMetadata.afterInsertListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.AFTER_INSERT);
599
- entityMetadata.afterUpdateListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.AFTER_UPDATE);
600
- entityMetadata.afterRemoveListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.AFTER_REMOVE);
601
- entityMetadata.afterSoftRemoveListeners =
602
- entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.AFTER_SOFT_REMOVE);
603
- entityMetadata.afterRecoverListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.AFTER_RECOVER);
604
- entityMetadata.beforeInsertListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.BEFORE_INSERT);
605
- entityMetadata.beforeUpdateListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.BEFORE_UPDATE);
606
- entityMetadata.beforeRemoveListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.BEFORE_REMOVE);
607
- entityMetadata.beforeSoftRemoveListeners =
608
- entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.BEFORE_SOFT_REMOVE);
609
- entityMetadata.beforeRecoverListeners = entityMetadata.listeners.filter((listener) => listener.type === EventListenerTypes.BEFORE_RECOVER);
610
- entityMetadata.indices = entityMetadata.embeddeds.reduce((indices, embedded) => indices.concat(embedded.indicesFromTree), entityMetadata.ownIndices);
611
- entityMetadata.uniques = entityMetadata.embeddeds.reduce((uniques, embedded) => uniques.concat(embedded.uniquesFromTree), entityMetadata.ownUniques);
612
- entityMetadata.primaryColumns = entityMetadata.columns.filter((column) => column.isPrimary);
613
- entityMetadata.nonVirtualColumns = entityMetadata.columns.filter((column) => !column.isVirtual);
614
- entityMetadata.ancestorColumns = entityMetadata.columns.filter((column) => column.closureType === "ancestor");
615
- entityMetadata.descendantColumns = entityMetadata.columns.filter((column) => column.closureType === "descendant");
616
- entityMetadata.hasMultiplePrimaryKeys =
617
- entityMetadata.primaryColumns.length > 1;
618
- entityMetadata.generatedColumns = entityMetadata.columns.filter((column) => column.isGenerated || column.isObjectId);
619
- entityMetadata.hasUUIDGeneratedColumns =
620
- entityMetadata.columns.filter((column) => column.isGenerated || column.generationStrategy === "uuid").length > 0;
621
- entityMetadata.createDateColumn = entityMetadata.columns.find((column) => column.isCreateDate);
622
- entityMetadata.updateDateColumn = entityMetadata.columns.find((column) => column.isUpdateDate);
623
- entityMetadata.deleteDateColumn = entityMetadata.columns.find((column) => column.isDeleteDate);
624
- entityMetadata.versionColumn = entityMetadata.columns.find((column) => column.isVersion);
625
- entityMetadata.discriminatorColumn = entityMetadata.columns.find((column) => column.isDiscriminator);
626
- entityMetadata.treeLevelColumn = entityMetadata.columns.find((column) => column.isTreeLevel);
627
- entityMetadata.nestedSetLeftColumn = entityMetadata.columns.find((column) => column.isNestedSetLeft);
628
- entityMetadata.nestedSetRightColumn = entityMetadata.columns.find((column) => column.isNestedSetRight);
629
- entityMetadata.materializedPathColumn = entityMetadata.columns.find((column) => column.isMaterializedPath);
630
- entityMetadata.objectIdColumn = entityMetadata.columns.find((column) => column.isObjectId);
631
- entityMetadata.foreignKeys.forEach((foreignKey) => foreignKey.build(this.connection.namingStrategy));
632
- entityMetadata.propertiesMap = entityMetadata.createPropertiesMap();
633
- entityMetadata.relationIds.forEach((relationId) => relationId.build());
634
- entityMetadata.relationCounts.forEach((relationCount) => relationCount.build());
635
- entityMetadata.embeddeds.forEach((embedded) => {
636
- embedded.relationIdsFromTree.forEach((relationId) => relationId.build());
637
- embedded.relationCountsFromTree.forEach((relationCount) => relationCount.build());
638
- });
639
- }
640
- /**
641
- * Computes entity metadata's relations inverse side properties.
642
- */
643
- computeInverseProperties(entityMetadata, entityMetadatas) {
644
- entityMetadata.relations.forEach((relation) => {
645
- const inverseEntityMetadata = entityMetadatas.find((m) => m.target === relation.type ||
646
- (typeof relation.type === "string" &&
647
- (m.targetName === relation.type ||
648
- m.givenTableName === relation.type)));
649
- if (!inverseEntityMetadata)
650
- throw new TypeORMError("Entity metadata for " +
651
- entityMetadata.name +
652
- "#" +
653
- relation.propertyPath +
654
- " was not found. Check if you specified a correct entity object and if it's connected in the connection options.");
655
- relation.inverseEntityMetadata = inverseEntityMetadata;
656
- relation.inverseSidePropertyPath =
657
- relation.buildInverseSidePropertyPath();
658
- relation.inverseRelation = inverseEntityMetadata.relations.find((foundRelation) => foundRelation.propertyPath ===
659
- relation.inverseSidePropertyPath);
660
- });
661
- }
662
- /**
663
- * Creates indices for the table of single table inheritance.
664
- */
665
- createKeysForTableInheritance(entityMetadata) {
666
- entityMetadata.indices.push(new IndexMetadata({
667
- entityMetadata: entityMetadata,
668
- columns: [entityMetadata.discriminatorColumn],
669
- args: {
670
- target: entityMetadata.target,
671
- unique: false,
672
- },
673
- }));
674
- }
675
- }
676
- ;
677
- ({}); // @--end-of-file-for-module=taon-typeorm lib/typeorm/metadata-builder/EntityMetadataBuilder.ts
678
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5TWV0YWRhdGFCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi10eXBlb3JtL3Byb2plY3RzL3Rhb24tdHlwZW9ybS9zcmMvbGliL3R5cGVvcm0vbWV0YWRhdGEtYnVpbGRlci9FbnRpdHlNZXRhZGF0YUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFHL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRS9DLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQy9FLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBRXZFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDekQsT0FB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LEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ25ELENBQUE7WUFDRCxJQUFJLENBQUMscUJBQXFCO2dCQUN0QixNQUFNLElBQUksWUFBWSxDQUNsQixzQkFBc0I7b0JBQ2xCLGNBQWMsQ0FBQyxJQUFJO29CQUNuQixHQUFHO29CQUNILFFBQVEsQ0FBQyxZQUFZO29CQUNyQixpSEFBaUgsQ0FDeEgsQ0FBQTtZQUVMLFFBQVEsQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQTtZQUN0RCxRQUFRLENBQUMsdUJBQXVCO2dCQUM1QixRQUFRLENBQUMsNEJBQTRCLEVBQUUsQ0FBQTtZQUczQyxRQUFRLENBQUMsZUFBZSxHQUFHLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQzNELENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FDZCxhQUFhLENBQUMsWUFBWTtnQkFDMUIsUUFBUSxDQUFDLHVCQUF1QixDQUN2QyxDQUFBO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDTyw2QkFBNkIsQ0FBQyxjQUE4QjtRQUNsRSxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdkIsSUFBSSxhQUFhLENBQUM7WUFDZCxjQUFjLEVBQUUsY0FBYztZQUM5QixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUMsbUJBQW9CLENBQUM7WUFDOUMsSUFBSSxFQUFFO2dCQUNGLE1BQU0sRUFBRSxjQUFjLENBQUMsTUFBTTtnQkFDN0IsTUFBTSxFQUFFLEtBQUs7YUFDaEI7U0FDSixDQUFDLENBQ0wsQ0FBQTtJQUNMLENBQUM7Q0FDSjtBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsK0ZBQStGIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL21ldGFkYXRhL0VudGl0eU1ldGFkYXRhXCJcbmltcG9ydCB7IENvbHVtbk1ldGFkYXRhIH0gZnJvbSBcIi4uL21ldGFkYXRhL0NvbHVtbk1ldGFkYXRhXCJcbmltcG9ydCB7IEluZGV4TWV0YWRhdGEgfSBmcm9tIFwiLi4vbWV0YWRhdGEvSW5kZXhNZXRhZGF0YVwiXG5pbXBvcnQgeyBSZWxhdGlvbk1ldGFkYXRhIH0gZnJvbSBcIi4uL21ldGFkYXRhL1JlbGF0aW9uTWV0YWRhdGFcIlxuaW1wb3J0IHsgRW1iZWRkZWRNZXRhZGF0YSB9IGZyb20gXCIuLi9tZXRhZGF0YS9FbWJlZGRlZE1ldGFkYXRhXCJcbmltcG9ydCB7IE1ldGFkYXRhQXJnc1N0b3JhZ2UgfSBmcm9tIFwiLi4vbWV0YWRhdGEtYXJncy9NZXRhZGF0YUFyZ3NTdG9yYWdlXCJcbmltcG9ydCB7IEVtYmVkZGVkTWV0YWRhdGFBcmdzIH0gZnJvbSBcIi4uL21ldGFkYXRhLWFyZ3MvRW1iZWRkZWRNZXRhZGF0YUFyZ3NcIlxuaW1wb3J0IHsgUmVsYXRpb25JZE1ldGFkYXRhIH0gZnJvbSBcIi4uL21ldGFkYXRhL1JlbGF0aW9uSWRNZXRhZGF0YVwiXG5pbXBvcnQgeyBSZWxhdGlvbkNvdW50TWV0YWRhdGEgfSBmcm9tIFwiLi4vbWV0YWRhdGEvUmVsYXRpb25Db3VudE1ldGFkYXRhXCJcbmltcG9ydCB7IEV2ZW50TGlzdGVuZXJUeXBlcyB9IGZyb20gXCIuLi9tZXRhZGF0YS90eXBlcy9FdmVudExpc3RlbmVyVHlwZXNcIlxuaW1wb3J0IHsgTWV0YWRhdGFVdGlscyB9IGZyb20gXCIuL01ldGFkYXRhVXRpbHNcIlxuaW1wb3J0IHsgVGFibGVNZXRhZGF0YUFyZ3MgfSBmcm9tIFwiLi4vbWV0YWRhdGEtYXJncy9UYWJsZU1ldGFkYXRhQXJnc1wiXG5pbXBvcnQgeyBKdW5jdGlvbkVudGl0eU1ldGFkYXRhQnVpbGRlciB9IGZyb20gXCIuL0p1bmN0aW9uRW50aXR5TWV0YWRhdGFCdWlsZGVyXCJcbmltcG9ydCB7IENsb3N1cmVKdW5jdGlvbkVudGl0eU1ldGFkYXRhQnVpbGRlciB9IGZyb20gXCIuL0Nsb3N1cmVKdW5jdGlvbkVudGl0eU1ldGFkYXRhQnVpbGRlclwiXG5pbXBvcnQgeyBSZWxhdGlvbkpvaW5Db2x1bW5CdWlsZGVyIH0gZnJvbSBcIi4vUmVsYXRpb25Kb2luQ29sdW1uQnVpbGRlclwiXG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSBcIi4uL2RhdGEtc291cmNlL0RhdGFTb3VyY2VcIlxuaW1wb3J0IHsgRW50aXR5TGlzdGVuZXJNZXRhZGF0YSB9IGZyb20gXCIuLi9tZXRhZGF0YS9FbnRpdHlMaXN0ZW5lck1ldGFkYXRhXCJcbmltcG9ydCB7IFVuaXF1ZU1ldGFkYXRhIH0gZnJvbSBcIi4uL21ldGFkYXRhL1VuaXF1ZU1ldGFkYXRhXCJcbmltcG9ydCB7IENoZWNrTWV0YWRhdGEgfSBmcm9tIFwiLi4vbWV0YWRhdGEvQ2hlY2tNZXRhZGF0YVwiXG5pbXBvcnQgeyBFeGNsdXNpb25NZXRhZGF0YSB9IGZyb20gXCIuLi9tZXRhZGF0YS9FeGNsdXNpb25NZXRhZGF0YVwiXG5pbXBvcnQgeyBUeXBlT1JNRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JcIlxuaW1wb3J0IHsgRHJpdmVyVXRpbHMgfSBmcm9tIFwiLi4vZHJpdmVyL0RyaXZlclV0aWxzXCJcblxuLyoqXG4gKiBCdWlsZHMgRW50aXR5TWV0YWRhdGEgb2JqZWN0cyBhbmQgYWxsIGl0cyBzdWItbWV0YWRhdGFzLlxuICovXG5leHBvcnQgY2xhc3MgRW50aXR5TWV0YWRhdGFCdWlsZGVyIHtcblxuXG5cblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gYnVpbGQgZW50aXR5IG1ldGFkYXRhcyBvZiB0aGUganVuY3Rpb24gZW50aXRpZXMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGp1bmN0aW9uRW50aXR5TWV0YWRhdGFCdWlsZGVyOiBKdW5jdGlvbkVudGl0eU1ldGFkYXRhQnVpbGRlclxuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byBidWlsZCBlbnRpdHkgbWV0YWRhdGFzIG9mIHRoZSBjbG9zdXJlIGp1bmN0aW9uIGVudGl0aWVzLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjbG9zdXJlSnVuY3Rpb25FbnRpdHlNZXRhZGF0YUJ1aWxkZXI6IENsb3N1cmVKdW5jdGlvbkVudGl0eU1ldGFkYXRhQnVpbGRlclxuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byBidWlsZCBqb2luIGNvbHVtbnMgb2YgdGhlIHJlbGF0aW9ucy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVsYXRpb25Kb2luQ29sdW1uQnVpbGRlcjogUmVsYXRpb25Kb2luQ29sdW1uQnVpbGRlclxuXG5cblxuXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb25uZWN0aW9uOiBEYXRhU291cmNlLFxuICAgICAgICBwcml2YXRlIG1ldGFkYXRhQXJnc1N0b3JhZ2U6IE1ldGFkYXRhQXJnc1N0b3JhZ2UsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuanVuY3Rpb25FbnRpdHlNZXRhZGF0YUJ1aWxkZXIgPSBuZXcgSnVuY3Rpb25FbnRpdHlNZXRhZGF0YUJ1aWxkZXIoXG4gICAgICAgICAgICBjb25uZWN0aW9uLFxuICAgICAgICApXG4gICAgICAgIHRoaXMuY2xvc3VyZUp1bmN0aW9uRW50aXR5TWV0YWRhdGFCdWlsZGVyID1cbiAgICAgICAgICAgIG5ldyBDbG9zdXJlSnVuY3Rpb25FbnRpdHlNZXRhZGF0YUJ1aWxkZXIoY29ubmVjdGlvbilcbiAgICAgICAgdGhpcy5yZWxhdGlvbkpvaW5Db2x1bW5CdWlsZGVyID0gbmV3IFJlbGF0aW9uSm9pbkNvbHVtbkJ1aWxkZXIoXG4gICAgICAgICAgICBjb25uZWN0aW9uLFxuICAgICAgICApXG4gICAgfVxuXG5cblxuXG5cbiAgICAvKipcbiAgICAgKiBCdWlsZHMgYSBjb21wbGV0ZSBlbnRpdHkgbWV0YWRhdGFzIGZvciB0aGUgZ2l2ZW4gZW50aXR5IGNsYXNzZXMuXG4gICAgICovXG4gICAgYnVpbGQoZW50aXR5Q2xhc3Nlcz86IEZ1bmN0aW9uW10pOiBFbnRpdHlNZXRhZGF0YVtdIHtcblxuICAgICAgICBjb25zdCBhbGxUYWJsZXMgPSBlbnRpdHlDbGFzc2VzXG4gICAgICAgICAgICA/IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZS5maWx0ZXJUYWJsZXMoZW50aXR5Q2xhc3NlcylcbiAgICAgICAgICAgIDogdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlLnRhYmxlc1xuXG5cbiAgICAgICAgY29uc3QgcmVhbFRhYmxlcyA9IGFsbFRhYmxlcy5maWx0ZXIoXG4gICAgICAgICAgICAodGFibGUpID0+XG4gICAgICAgICAgICAgICAgdGFibGUudHlwZSA9PT0gXCJyZWd1bGFyXCIgfHxcbiAgICAgICAgICAgICAgICB0YWJsZS50eXBlID09PSBcImNsb3N1cmVcIiB8fFxuICAgICAgICAgICAgICAgIHRhYmxlLnR5cGUgPT09IFwiZW50aXR5LWNoaWxkXCIgfHxcbiAgICAgICAgICAgICAgICB0YWJsZS50eXBlID09PSBcInZpZXdcIixcbiAgICAgICAgKVxuXG5cbiAgICAgICAgY29uc3QgZW50aXR5TWV0YWRhdGFzID0gcmVhbFRhYmxlcy5tYXAoKHRhYmxlQXJncykgPT5cbiAgICAgICAgICAgIHRoaXMuY3JlYXRlRW50aXR5TWV0YWRhdGEodGFibGVBcmdzKSxcbiAgICAgICAgKVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzLmZvckVhY2goKGVudGl0eU1ldGFkYXRhKSA9PlxuICAgICAgICAgICAgdGhpcy5jb21wdXRlUGFyZW50RW50aXR5TWV0YWRhdGEoZW50aXR5TWV0YWRhdGFzLCBlbnRpdHlNZXRhZGF0YSksXG4gICAgICAgIClcblxuXG4gICAgICAgIGVudGl0eU1ldGFkYXRhcy5mb3JFYWNoKChtZXRhZGF0YSkgPT4ge1xuICAgICAgICAgICAgbWV0YWRhdGEuY2hpbGRFbnRpdHlNZXRhZGF0YXMgPSBlbnRpdHlNZXRhZGF0YXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChjaGlsZE1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgbWV0YWRhdGEudGFyZ2V0ID09PSBcImZ1bmN0aW9uXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBjaGlsZE1ldGFkYXRhLnRhcmdldCA9PT0gXCJmdW5jdGlvblwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YVV0aWxzLmlzSW5oZXJpdGVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkTWV0YWRhdGEudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG5cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YXNcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGVudGl0eU1ldGFkYXRhKSA9PiBlbnRpdHlNZXRhZGF0YS50YWJsZVR5cGUgIT09IFwiZW50aXR5LWNoaWxkXCIsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZm9yRWFjaCgoZW50aXR5TWV0YWRhdGEpID0+IGVudGl0eU1ldGFkYXRhLmJ1aWxkKCkpXG5cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YXNcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGVudGl0eU1ldGFkYXRhKSA9PiBlbnRpdHlNZXRhZGF0YS50YWJsZVR5cGUgPT09IFwiZW50aXR5LWNoaWxkXCIsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZm9yRWFjaCgoZW50aXR5TWV0YWRhdGEpID0+IGVudGl0eU1ldGFkYXRhLmJ1aWxkKCkpXG5cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YXNcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGVudGl0eU1ldGFkYXRhKSA9PiBlbnRpdHlNZXRhZGF0YS50YWJsZVR5cGUgIT09IFwiZW50aXR5LWNoaWxkXCIsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZm9yRWFjaCgoZW50aXR5TWV0YWRhdGEpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlRW50aXR5TWV0YWRhdGFTdGVwMShcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGFzLFxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChlbnRpdHlNZXRhZGF0YSkgPT4gZW50aXR5TWV0YWRhdGEudGFibGVUeXBlID09PSBcImVudGl0eS1jaGlsZFwiLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZvckVhY2goKGVudGl0eU1ldGFkYXRhKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUVudGl0eU1ldGFkYXRhU3RlcDEoXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhcyxcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcblxuXG4gICAgICAgIGVudGl0eU1ldGFkYXRhcy5mb3JFYWNoKChlbnRpdHlNZXRhZGF0YSkgPT5cbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZUVudGl0eU1ldGFkYXRhU3RlcDIoZW50aXR5TWV0YWRhdGEpLFxuICAgICAgICApXG5cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YXMuZm9yRWFjaCgoZW50aXR5TWV0YWRhdGEpID0+XG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVJbnZlcnNlUHJvcGVydGllcyhlbnRpdHlNZXRhZGF0YSwgZW50aXR5TWV0YWRhdGFzKSxcbiAgICAgICAgKVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChlbnRpdHlNZXRhZGF0YSkgPT4gZW50aXR5TWV0YWRhdGEudGFibGVUeXBlICE9PSBcImVudGl0eS1jaGlsZFwiLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZvckVhY2goKGVudGl0eU1ldGFkYXRhKSA9PiB7XG5cbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZWxhdGlvbikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5pc09uZVRvT25lIHx8IHJlbGF0aW9uLmlzTWFueVRvT25lLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChyZWxhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgam9pbkNvbHVtbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZS5maWx0ZXJKb2luQ29sdW1ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24udGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5wcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBmb3JlaWduS2V5LCBjb2x1bW5zLCB1bmlxdWVDb25zdHJhaW50IH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVsYXRpb25Kb2luQ29sdW1uQnVpbGRlci5idWlsZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbkNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgLy8gY3JlYXRlIGEgZm9yZWlnbiBrZXkgYmFzZWQgb24gaXRzIG1ldGFkYXRhIGFyZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JlaWduS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24ucmVnaXN0ZXJGb3JlaWduS2V5cyhmb3JlaWduS2V5KSAvLyBwdXNoIGl0IHRvIHRoZSByZWxhdGlvbiBhbmQgdGh1cyByZWdpc3RlciB0aGVyZSBhIGpvaW4gY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEuZm9yZWlnbktleXMucHVzaChmb3JlaWduS2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5yZWdpc3RlckpvaW5Db2x1bW5zKGNvbHVtbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pcXVlQ29uc3RyYWludCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJpdmVyVXRpbHMuaXNNeVNRTEZhbWlseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmRyaXZlci5vcHRpb25zLnR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImF1cm9yYS1teXNxbFwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIub3B0aW9ucy50eXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtc3NxbFwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIub3B0aW9ucy50eXBlID09PSBcInNhcFwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIub3B0aW9ucy50eXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBuZXcgSW5kZXhNZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVDb25zdHJhaW50LmVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogdW5pcXVlQ29uc3RyYWludC5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogdW5pcXVlQ29uc3RyYWludC50YXJnZXQhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVuaXF1ZUNvbnN0cmFpbnQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIub3B0aW9ucy50eXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtc3NxbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgud2hlcmUgPSBpbmRleC5jb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmNvbm5lY3Rpb24uZHJpdmVyLmVzY2FwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5kYXRhYmFzZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9IElTIE5PVCBOVUxMYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIgQU5EIFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmRyaXZlci5vcHRpb25zLnR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNwYW5uZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LmlzTnVsbEZpbHRlcmVkID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uLmVtYmVkZGVkTWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLmVtYmVkZGVkTWV0YWRhdGEuaW5kaWNlcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24uZW50aXR5TWV0YWRhdGEub3duSW5kaWNlcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUVudGl0eU1ldGFkYXRhU3RlcDIoZW50aXR5TWV0YWRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uLmVtYmVkZGVkTWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLmVtYmVkZGVkTWV0YWRhdGEudW5pcXVlcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUNvbnN0cmFpbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5lbnRpdHlNZXRhZGF0YS5vd25VbmlxdWVzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlQ29uc3RyYWludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVFbnRpdHlNZXRhZGF0YVN0ZXAyKGVudGl0eU1ldGFkYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVpZ25LZXkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZHJpdmVyLm9wdGlvbnMudHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb2Nrcm9hY2hkYlwiXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IG5ldyBJbmRleE1ldGFkYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGE6IHJlbGF0aW9uLmVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBmb3JlaWduS2V5LmNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogcmVsYXRpb24uZW50aXR5TWV0YWRhdGEudGFyZ2V0ISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uLmVtYmVkZGVkTWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24uZW1iZWRkZWRNZXRhZGF0YS5pbmRpY2VzLnB1c2goaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24uZW50aXR5TWV0YWRhdGEub3duSW5kaWNlcy5wdXNoKGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVFbnRpdHlNZXRhZGF0YVN0ZXAyKGVudGl0eU1ldGFkYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuXG5cbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigocmVsYXRpb24pID0+IHJlbGF0aW9uLmlzTWFueVRvTWFueSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKHJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqb2luVGFibGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZS5maW5kSm9pblRhYmxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLnByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFqb2luVGFibGUpIHJldHVybiAvLyBubyBqb2luIHRhYmxlIHNldCAtIG5vIG5lZWQgdG8gZG8gYW55dGhpbmcgKGl0IG1lYW5zIHRoaXMgaXMgbWFueS10by1tYW55IGludmVyc2Ugc2lkZSlcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqdW5jdGlvbkVudGl0eU1ldGFkYXRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmp1bmN0aW9uRW50aXR5TWV0YWRhdGFCdWlsZGVyLmJ1aWxkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pblRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLnJlZ2lzdGVyRm9yZWlnbktleXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uanVuY3Rpb25FbnRpdHlNZXRhZGF0YS5mb3JlaWduS2V5cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLnJlZ2lzdGVySm9pbkNvbHVtbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganVuY3Rpb25FbnRpdHlNZXRhZGF0YS5vd25JbmRpY2VzWzBdLmNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganVuY3Rpb25FbnRpdHlNZXRhZGF0YS5vd25JbmRpY2VzWzFdLmNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5yZWdpc3Rlckp1bmN0aW9uRW50aXR5TWV0YWRhdGEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganVuY3Rpb25FbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVFbnRpdHlNZXRhZGF0YVN0ZXAyKGp1bmN0aW9uRW50aXR5TWV0YWRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVJbnZlcnNlUHJvcGVydGllcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdW5jdGlvbkVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhcy5wdXNoKGp1bmN0aW9uRW50aXR5TWV0YWRhdGEpXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzLmZvckVhY2goKGVudGl0eU1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnNXaXRoSm9pbkNvbHVtbnMgPVxuICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLnJlbGF0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChyZWxhdGlvbikgPT4gcmVsYXRpb24uaXNXaXRoSm9pbkNvbHVtbixcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5oYXNOb25OdWxsYWJsZVJlbGF0aW9ucyA9XG4gICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEucmVsYXRpb25zV2l0aEpvaW5Db2x1bW5zLnNvbWUoXG4gICAgICAgICAgICAgICAgICAgIChyZWxhdGlvbikgPT4gIXJlbGF0aW9uLmlzTnVsbGFibGUgfHwgcmVsYXRpb24uaXNQcmltYXJ5LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgfSlcblxuXG4gICAgICAgIGVudGl0eU1ldGFkYXRhc1xuICAgICAgICAgICAgLmZpbHRlcigobWV0YWRhdGEpID0+IG1ldGFkYXRhLnRyZWVUeXBlID09PSBcImNsb3N1cmUtdGFibGVcIilcbiAgICAgICAgICAgIC5mb3JFYWNoKChlbnRpdHlNZXRhZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsb3N1cmVKdW5jdGlvbkVudGl0eU1ldGFkYXRhID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zdXJlSnVuY3Rpb25FbnRpdHlNZXRhZGF0YUJ1aWxkZXIuYnVpbGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmNsb3N1cmVKdW5jdGlvblRhYmxlID1cbiAgICAgICAgICAgICAgICAgICAgY2xvc3VyZUp1bmN0aW9uRW50aXR5TWV0YWRhdGFcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVFbnRpdHlNZXRhZGF0YVN0ZXAyKGNsb3N1cmVKdW5jdGlvbkVudGl0eU1ldGFkYXRhKVxuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUludmVyc2VQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgICAgICAgICBjbG9zdXJlSnVuY3Rpb25FbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGFzLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YXMucHVzaChjbG9zdXJlSnVuY3Rpb25FbnRpdHlNZXRhZGF0YSlcbiAgICAgICAgICAgIH0pXG5cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YXNcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKG1ldGFkYXRhKSA9PlxuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5pbmhlcml0YW5jZVBhdHRlcm4gPT09IFwiU1RJXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGlzY3JpbWluYXRvckNvbHVtbixcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5mb3JFYWNoKChlbnRpdHlNZXRhZGF0YSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUtleXNGb3JUYWJsZUluaGVyaXRhbmNlKGVudGl0eU1ldGFkYXRhKSxcbiAgICAgICAgICAgIClcblxuXG4gICAgICAgIGVudGl0eU1ldGFkYXRhcy5mb3JFYWNoKChlbnRpdHlNZXRhZGF0YSkgPT4ge1xuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEuaW5kaWNlcy5mb3JFYWNoKChpbmRleCkgPT5cbiAgICAgICAgICAgICAgICBpbmRleC5idWlsZCh0aGlzLmNvbm5lY3Rpb24ubmFtaW5nU3RyYXRlZ3kpLFxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzLmZvckVhY2goKGVudGl0eU1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS51bmlxdWVzLmZvckVhY2goKHVuaXF1ZSkgPT5cbiAgICAgICAgICAgICAgICB1bmlxdWUuYnVpbGQodGhpcy5jb25uZWN0aW9uLm5hbWluZ1N0cmF0ZWd5KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcblxuXG4gICAgICAgIGVudGl0eU1ldGFkYXRhcy5mb3JFYWNoKChlbnRpdHlNZXRhZGF0YSkgPT4ge1xuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEuY2hlY2tzLmZvckVhY2goKGNoZWNrKSA9PlxuICAgICAgICAgICAgICAgIGNoZWNrLmJ1aWxkKHRoaXMuY29ubmVjdGlvbi5uYW1pbmdTdHJhdGVneSksXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG5cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YXMuZm9yRWFjaCgoZW50aXR5TWV0YWRhdGEpID0+IHtcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmV4Y2x1c2lvbnMuZm9yRWFjaCgoZXhjbHVzaW9uKSA9PlxuICAgICAgICAgICAgICAgIGV4Y2x1c2lvbi5idWlsZCh0aGlzLmNvbm5lY3Rpb24ubmFtaW5nU3RyYXRlZ3kpLFxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzXG4gICAgICAgICAgICAuZmlsdGVyKChtZXRhZGF0YSkgPT4gdHlwZW9mIG1ldGFkYXRhLnRhcmdldCA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgLmZvckVhY2goKGVudGl0eU1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEucmVsYXRpb25zXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5pc0xhenkpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChyZWxhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLnJlbGF0aW9uTG9hZGVyLmVuYWJsZUxhenlMb2FkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbnRpdHlNZXRhZGF0YS50YXJnZXQgYXMgRnVuY3Rpb24pLnByb3RvdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgZW50aXR5TWV0YWRhdGFzLmZvckVhY2goKGVudGl0eU1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZ2VuZXJhdGVkID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlLmZpbmRHZW5lcmF0ZWQoXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5wcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmlzR2VuZXJhdGVkID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uZ2VuZXJhdGlvblN0cmF0ZWd5ID0gZ2VuZXJhdGVkLnN0cmF0ZWd5XG4gICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWQuc3RyYXRlZ3kgPT09IFwidXVpZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4udHlwZSA9IFwidXVpZFwiXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2VuZXJhdGVkLnN0cmF0ZWd5ID09PSBcInJvd2lkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi50eXBlID0gXCJpbnRcIlxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLnR5cGUgPSBjb2x1bW4udHlwZSB8fCBOdW1iZXJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYnVpbGQodGhpcy5jb25uZWN0aW9uKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVFbnRpdHlNZXRhZGF0YVN0ZXAyKGVudGl0eU1ldGFkYXRhKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIGVudGl0eU1ldGFkYXRhc1xuICAgIH1cblxuXG5cblxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBlbnRpdHkgbWV0YWRhdGEgZnJvbSB0aGUgZ2l2ZW4gdGFibGUgYXJncy5cbiAgICAgKiBDcmVhdGVzIGNvbHVtbiwgcmVsYXRpb24sIGV0Yy4gbWV0YWRhdGFzIGZvciBldmVyeXRoaW5nIHRoaXMgZW50aXR5IG1ldGFkYXRhIG93bnMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUVudGl0eU1ldGFkYXRhKFxuICAgICAgICB0YWJsZUFyZ3M6IFRhYmxlTWV0YWRhdGFBcmdzLFxuICAgICk6IEVudGl0eU1ldGFkYXRhIHtcblxuXG5cbiAgICAgICAgY29uc3QgaW5oZXJpdGFuY2VUcmVlOiBhbnlbXSA9XG4gICAgICAgICAgICB0eXBlb2YgdGFibGVBcmdzLnRhcmdldCA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgPyBNZXRhZGF0YVV0aWxzLmdldEluaGVyaXRhbmNlVHJlZSh0YWJsZUFyZ3MudGFyZ2V0KVxuICAgICAgICAgICAgICAgIDogW3RhYmxlQXJncy50YXJnZXRdIC8vIHRvZG86IGltcGxlbWVudCBsYXRlciBoZXJlIGluaGVyaXRhbmNlIGZvciBzdHJpbmctdGFyZ2V0c1xuXG4gICAgICAgIGNvbnN0IHRhYmxlSW5oZXJpdGFuY2UgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2UuZmluZEluaGVyaXRhbmNlVHlwZShcbiAgICAgICAgICAgIHRhYmxlQXJncy50YXJnZXQsXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgdGFibGVUcmVlID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlLmZpbmRUcmVlKHRhYmxlQXJncy50YXJnZXQpXG5cblxuICAgICAgICBsZXQgc2luZ2xlVGFibGVDaGlsZHJlblRhcmdldHM6IGFueVtdXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0YWJsZUluaGVyaXRhbmNlICYmIHRhYmxlSW5oZXJpdGFuY2UucGF0dGVybiA9PT0gXCJTVElcIikgfHxcbiAgICAgICAgICAgIHRhYmxlQXJncy50eXBlID09PSBcImVudGl0eS1jaGlsZFwiXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2luZ2xlVGFibGVDaGlsZHJlblRhcmdldHMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgICAgICAuZmlsdGVyU2luZ2xlVGFibGVDaGlsZHJlbih0YWJsZUFyZ3MudGFyZ2V0KVxuICAgICAgICAgICAgICAgIC5tYXAoKGFyZ3MpID0+IGFyZ3MudGFyZ2V0KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHRhcmdldCkgPT4gdHlwZW9mIHRhcmdldCA9PT0gXCJmdW5jdGlvblwiKVxuXG4gICAgICAgICAgICBpbmhlcml0YW5jZVRyZWUucHVzaCguLi5zaW5nbGVUYWJsZUNoaWxkcmVuVGFyZ2V0cylcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgRW50aXR5TWV0YWRhdGEoe1xuICAgICAgICAgICAgY29ubmVjdGlvbjogdGhpcy5jb25uZWN0aW9uLFxuICAgICAgICAgICAgYXJnczogdGFibGVBcmdzLFxuICAgICAgICAgICAgaW5oZXJpdGFuY2VUcmVlOiBpbmhlcml0YW5jZVRyZWUsXG4gICAgICAgICAgICB0YWJsZVRyZWU6IHRhYmxlVHJlZSxcbiAgICAgICAgICAgIGluaGVyaXRhbmNlUGF0dGVybjogdGFibGVJbmhlcml0YW5jZVxuICAgICAgICAgICAgICAgID8gdGFibGVJbmhlcml0YW5jZS5wYXR0ZXJuXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbXB1dGVQYXJlbnRFbnRpdHlNZXRhZGF0YShcbiAgICAgICAgYWxsRW50aXR5TWV0YWRhdGFzOiBFbnRpdHlNZXRhZGF0YVtdLFxuICAgICAgICBlbnRpdHlNZXRhZGF0YTogRW50aXR5TWV0YWRhdGEsXG4gICAgKSB7XG5cbiAgICAgICAgaWYgKGVudGl0eU1ldGFkYXRhLnRhYmxlVHlwZSA9PT0gXCJlbnRpdHktY2hpbGRcIikge1xuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEucGFyZW50RW50aXR5TWV0YWRhdGEgPSBhbGxFbnRpdHlNZXRhZGF0YXMuZmluZChcbiAgICAgICAgICAgICAgICAoYWxsRW50aXR5TWV0YWRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbEVudGl0eU1ldGFkYXRhLmluaGVyaXRhbmNlVHJlZS5pbmRleE9mKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLnRhcmdldCBhcyBGdW5jdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICkgIT09IC0xICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxFbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVBhdHRlcm4gPT09IFwiU1RJXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApIVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbXB1dGVFbnRpdHlNZXRhZGF0YVN0ZXAxKFxuICAgICAgICBhbGxFbnRpdHlNZXRhZGF0YXM6IEVudGl0eU1ldGFkYXRhW10sXG4gICAgICAgIGVudGl0eU1ldGFkYXRhOiBFbnRpdHlNZXRhZGF0YSxcbiAgICApIHtcbiAgICAgICAgY29uc3QgZW50aXR5SW5oZXJpdGFuY2UgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2UuZmluZEluaGVyaXRhbmNlVHlwZShcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLnRhcmdldCxcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3JWYWx1ZSA9XG4gICAgICAgICAgICB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2UuZmluZERpc2NyaW1pbmF0b3JWYWx1ZShcbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS50YXJnZXQsXG4gICAgICAgICAgICApXG5cbiAgICAgICAgaWYgKHR5cGVvZiBkaXNjcmltaW5hdG9yVmFsdWUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmRpc2NyaW1pbmF0b3JWYWx1ZSA9IGRpc2NyaW1pbmF0b3JWYWx1ZS52YWx1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEuZGlzY3JpbWluYXRvclZhbHVlID0gKFxuICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLnRhcmdldCBhcyBhbnlcbiAgICAgICAgICAgICkubmFtZVxuICAgICAgICB9XG5cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5lbWJlZGRlZHMgPSB0aGlzLmNyZWF0ZUVtYmVkZGVkc1JlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2UuZmlsdGVyRW1iZWRkZWRzKFxuICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmluaGVyaXRhbmNlVHJlZSxcbiAgICAgICAgICAgICksXG4gICAgICAgICkubWFwKChlbWJlZGRlZDogRW1iZWRkZWRNZXRhZGF0YSk6IEVtYmVkZGVkTWV0YWRhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKGVudGl0eU1ldGFkYXRhLmluaGVyaXRhbmNlUGF0dGVybiA9PT0gXCJTVElcIikge1xuICAgICAgICAgICAgICAgIGVtYmVkZGVkLmNvbHVtbnMgPSBlbWJlZGRlZC5jb2x1bW5zLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGNvbHVtbjogQ29sdW1uTWV0YWRhdGEpOiBDb2x1bW5NZXRhZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uaXNOdWxsYWJsZSA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZW1iZWRkZWRcbiAgICAgICAgfSlcblxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25Db2x1bW5zID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAuZmlsdGVyQ29sdW1ucyhlbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVRyZWUpXG4gICAgICAgICAgICAubWFwKChhcmdzKSA9PiB7XG5cbiAgICAgICAgICAgICAgICBpZiAoZW50aXR5TWV0YWRhdGEudGFibGVUeXBlID09PSBcImVudGl0eS1jaGlsZFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50aXR5TWV0YWRhdGEucGFyZW50RW50aXR5TWV0YWRhdGEub3duQ29sdW1ucy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLnByb3BlcnR5TmFtZSA9PT0gYXJncy5wcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICkhXG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uTWV0YWRhdGEoe1xuICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uOiB0aGlzLmNvbm5lY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBhcmdzLFxuICAgICAgICAgICAgICAgIH0pXG5cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbkluU2luZ2xlVGFibGVJbmhlcml0ZWRDaGlsZCA9XG4gICAgICAgICAgICAgICAgICAgIGFsbEVudGl0eU1ldGFkYXRhcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyRW50aXR5TWV0YWRhdGEpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJFbnRpdHlNZXRhZGF0YS50YWJsZVR5cGUgPT09IFwiZW50aXR5LWNoaWxkXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlckVudGl0eU1ldGFkYXRhLnRhcmdldCA9PT0gYXJncy50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uSW5TaW5nbGVUYWJsZUluaGVyaXRlZENoaWxkKSBjb2x1bW4uaXNOdWxsYWJsZSA9IHRydWVcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sdW1uXG4gICAgICAgICAgICB9KVxuXG5cbiAgICAgICAgLy9cbiAgICAgICAgaWYgKGVudGl0eUluaGVyaXRhbmNlICYmIGVudGl0eUluaGVyaXRhbmNlLmNvbHVtbikge1xuICAgICAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvckNvbHVtbk5hbWUgPVxuICAgICAgICAgICAgICAgIGVudGl0eUluaGVyaXRhbmNlLmNvbHVtbiAmJiBlbnRpdHlJbmhlcml0YW5jZS5jb2x1bW4ubmFtZVxuICAgICAgICAgICAgICAgICAgICA/IGVudGl0eUluaGVyaXRhbmNlLmNvbHVtbi5uYW1lXG4gICAgICAgICAgICAgICAgICAgIDogXCJ0eXBlXCJcbiAgICAgICAgICAgIGxldCBkaXNjcmltaW5hdG9yQ29sdW1uID0gZW50aXR5TWV0YWRhdGEub3duQ29sdW1ucy5maW5kKFxuICAgICAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5wcm9wZXJ0eU5hbWUgPT09IGRpc2NyaW1pbmF0b3JDb2x1bW5OYW1lLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKCFkaXNjcmltaW5hdG9yQ29sdW1uKSB7XG4gICAgICAgICAgICAgICAgZGlzY3JpbWluYXRvckNvbHVtbiA9IG5ldyBDb2x1bW5NZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb246IHRoaXMuY29ubmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGE6IGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGVudGl0eU1ldGFkYXRhLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IFwidmlydHVhbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBkaXNjcmltaW5hdG9yQ29sdW1uTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGVudGl0eUluaGVyaXRhbmNlLmNvbHVtbiB8fCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZGlzY3JpbWluYXRvckNvbHVtbk5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ2YXJjaGFyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIGRpc2NyaW1pbmF0b3JDb2x1bW4uaXNWaXJ0dWFsID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGRpc2NyaW1pbmF0b3JDb2x1bW4uaXNEaXNjcmltaW5hdG9yID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLm93bkNvbHVtbnMucHVzaChkaXNjcmltaW5hdG9yQ29sdW1uKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXNjcmltaW5hdG9yQ29sdW1uLmlzRGlzY3JpbWluYXRvciA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cblxuICAgICAgICBpZiAoZW50aXR5TWV0YWRhdGEudGFibGVUeXBlID09PSBcImVudGl0eS1jaGlsZFwiKSB7XG4gICAgICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yQ29sdW1uID1cbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5wYXJlbnRFbnRpdHlNZXRhZGF0YS5vd25Db2x1bW5zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5pc0Rpc2NyaW1pbmF0b3IsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGRpc2NyaW1pbmF0b3JDb2x1bW4gJiZcbiAgICAgICAgICAgICAgICAhZW50aXR5TWV0YWRhdGEub3duQ29sdW1ucy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAoY29sdW1uKSA9PiBjb2x1bW4gPT09IGRpc2NyaW1pbmF0b3JDb2x1bW4sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEub3duQ29sdW1ucy5wdXNoKGRpc2NyaW1pbmF0b3JDb2x1bW4pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IG5hbWluZ1N0cmF0ZWd5IH0gPSB0aGlzLmNvbm5lY3Rpb25cblxuXG4gICAgICAgIGlmIChlbnRpdHlNZXRhZGF0YS50cmVlVHlwZSA9PT0gXCJtYXRlcmlhbGl6ZWQtcGF0aFwiKSB7XG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25Db2x1bW5zLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IENvbHVtbk1ldGFkYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbjogdGhpcy5jb25uZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YTogZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsaXplZFBhdGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogZW50aXR5TWV0YWRhdGEudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogXCJ2aXJ0dWFsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IFwibXBhdGhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IC8qdHJlZS5jb2x1bW4gfHwgKi8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWluZ1N0cmF0ZWd5Lm1hdGVyaWFsaXplZFBhdGhDb2x1bW5OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIGlmIChlbnRpdHlNZXRhZGF0YS50cmVlVHlwZSA9PT0gXCJuZXN0ZWQtc2V0XCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbGVmdCwgcmlnaHQgfSA9IG5hbWluZ1N0cmF0ZWd5Lm5lc3RlZFNldENvbHVtbk5hbWVzXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25Db2x1bW5zLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IENvbHVtbk1ldGFkYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbjogdGhpcy5jb25uZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YTogZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIG5lc3RlZFNldExlZnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogZW50aXR5TWV0YWRhdGEudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogXCJ2aXJ0dWFsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IGxlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiAvKnRyZWUuY29sdW1uIHx8ICovIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBsZWZ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25Db2x1bW5zLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IENvbHVtbk1ldGFkYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbjogdGhpcy5jb25uZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YTogZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIG5lc3RlZFNldFJpZ2h0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGVudGl0eU1ldGFkYXRhLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IFwidmlydHVhbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lOiByaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IC8qdHJlZS5jb2x1bW4gfHwgKi8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHJpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25SZWxhdGlvbnMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgIC5maWx0ZXJSZWxhdGlvbnMoZW50aXR5TWV0YWRhdGEuaW5oZXJpdGFuY2VUcmVlKVxuICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eU1ldGFkYXRhLnRhYmxlVHlwZSA9PT0gXCJlbnRpdHktY2hpbGRcIikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRSZWxhdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5wYXJlbnRFbnRpdHlNZXRhZGF0YS5vd25SZWxhdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVsYXRpb24pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLnByb3BlcnR5TmFtZSA9PT0gYXJncy5wcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICApIVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBhcmdzLnR5cGUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKGFyZ3MudHlwZSBhcyAoKSA9PiBhbnkpKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFyZ3MudHlwZVxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50UmVsYXRpb24udHlwZSAhPT0gdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvbmUgPSBPYmplY3QuY3JlYXRlKHBhcmVudFJlbGF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmUudHlwZSA9IHR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbG9uZVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudFJlbGF0aW9uXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWxhdGlvbk1ldGFkYXRhKHsgZW50aXR5TWV0YWRhdGEsIGFyZ3MgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLnJlbGF0aW9uSWRzID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAuZmlsdGVyUmVsYXRpb25JZHMoZW50aXR5TWV0YWRhdGEuaW5oZXJpdGFuY2VUcmVlKVxuICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eU1ldGFkYXRhLnRhYmxlVHlwZSA9PT0gXCJlbnRpdHktY2hpbGRcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eU1ldGFkYXRhLnBhcmVudEVudGl0eU1ldGFkYXRhLnJlbGF0aW9uSWRzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVsYXRpb25JZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbklkLnByb3BlcnR5TmFtZSA9PT0gYXJncy5wcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICkhXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlbGF0aW9uSWRNZXRhZGF0YSh7IGVudGl0eU1ldGFkYXRhLCBhcmdzIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbkNvdW50cyA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZVxuICAgICAgICAgICAgLmZpbHRlclJlbGF0aW9uQ291bnRzKGVudGl0eU1ldGFkYXRhLmluaGVyaXRhbmNlVHJlZSlcbiAgICAgICAgICAgIC5tYXAoKGFyZ3MpID0+IHtcblxuICAgICAgICAgICAgICAgIGlmIChlbnRpdHlNZXRhZGF0YS50YWJsZVR5cGUgPT09IFwiZW50aXR5LWNoaWxkXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRpdHlNZXRhZGF0YS5wYXJlbnRFbnRpdHlNZXRhZGF0YS5yZWxhdGlvbkNvdW50cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlbGF0aW9uQ291bnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25Db3VudC5wcm9wZXJ0eU5hbWUgPT09IGFyZ3MucHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgICAgICAgICApIVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWxhdGlvbkNvdW50TWV0YWRhdGEoeyBlbnRpdHlNZXRhZGF0YSwgYXJncyB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgZW50aXR5TWV0YWRhdGEub3duTGlzdGVuZXJzID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAuZmlsdGVyTGlzdGVuZXJzKGVudGl0eU1ldGFkYXRhLmluaGVyaXRhbmNlVHJlZSlcbiAgICAgICAgICAgIC5tYXAoKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVudGl0eUxpc3RlbmVyTWV0YWRhdGEoe1xuICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YTogZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIGFyZ3M6IGFyZ3MsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmNoZWNrcyA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZVxuICAgICAgICAgICAgLmZpbHRlckNoZWNrcyhlbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVRyZWUpXG4gICAgICAgICAgICAubWFwKChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDaGVja01ldGFkYXRhKHsgZW50aXR5TWV0YWRhdGEsIGFyZ3MgfSlcbiAgICAgICAgICAgIH0pXG5cblxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uLmRyaXZlci5vcHRpb25zLnR5cGUgPT09IFwicG9zdGdyZXNcIikge1xuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEuZXhjbHVzaW9ucyA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZVxuICAgICAgICAgICAgICAgIC5maWx0ZXJFeGNsdXNpb25zKGVudGl0eU1ldGFkYXRhLmluaGVyaXRhbmNlVHJlZSlcbiAgICAgICAgICAgICAgICAubWFwKChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXhjbHVzaW9uTWV0YWRhdGEoeyBlbnRpdHlNZXRhZGF0YSwgYXJncyB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uLmRyaXZlci5vcHRpb25zLnR5cGUgPT09IFwiY29ja3JvYWNoZGJcIikge1xuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEub3duSW5kaWNlcyA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZVxuICAgICAgICAgICAgICAgIC5maWx0ZXJJbmRpY2VzKGVudGl0eU1ldGFkYXRhLmluaGVyaXRhbmNlVHJlZSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChhcmdzKSA9PiAhYXJncy51bmlxdWUpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZGV4TWV0YWRhdGEoeyBlbnRpdHlNZXRhZGF0YSwgYXJncyB9KVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNvbnN0IHVuaXF1ZXMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgICAgICAuZmlsdGVySW5kaWNlcyhlbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVRyZWUpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoYXJncykgPT4gYXJncy51bmlxdWUpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVuaXF1ZU1ldGFkYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhOiBlbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGFyZ3MudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFyZ3MubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBhcmdzLmNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25VbmlxdWVzLnB1c2goLi4udW5pcXVlcylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLm93bkluZGljZXMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgICAgICAuZmlsdGVySW5kaWNlcyhlbnRpdHlNZXRhZGF0YS5pbmhlcml0YW5jZVRyZWUpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZGV4TWV0YWRhdGEoeyBlbnRpdHlNZXRhZGF0YSwgYXJncyB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIERyaXZlclV0aWxzLmlzTXlTUUxGYW1pbHkodGhpcy5jb25uZWN0aW9uLmRyaXZlcikgfHxcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIub3B0aW9ucy50eXBlID09PSBcImF1cm9yYS1teXNxbFwiIHx8XG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZHJpdmVyLm9wdGlvbnMudHlwZSA9PT0gXCJzYXBcIiB8fFxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmRyaXZlci5vcHRpb25zLnR5cGUgPT09IFwic3Bhbm5lclwiXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgaW5kaWNlcyA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZVxuICAgICAgICAgICAgICAgIC5maWx0ZXJVbmlxdWVzKGVudGl0eU1ldGFkYXRhLmluaGVyaXRhbmNlVHJlZSlcbiAgICAgICAgICAgICAgICAubWFwKChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5kZXhNZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YTogZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBhcmdzLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhcmdzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogYXJncy5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLm93bkluZGljZXMucHVzaCguLi5pbmRpY2VzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdW5pcXVlcyA9IHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZVxuICAgICAgICAgICAgICAgIC5maWx0ZXJVbmlxdWVzKGVudGl0eU1ldGFkYXRhLmluaGVyaXRhbmNlVHJlZSlcbiAgICAgICAgICAgICAgICAubWFwKChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVW5pcXVlTWV0YWRhdGEoeyBlbnRpdHlNZXRhZGF0YSwgYXJncyB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25VbmlxdWVzLnB1c2goLi4udW5pcXVlcylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgZnJvbSB0aGUgZ2l2ZW4gZW1iZWRkZWQgbWV0YWRhdGEgYXJncyByZWFsIGVtYmVkZGVkIG1ldGFkYXRhcyB3aXRoIGl0cyBjb2x1bW5zIGFuZCByZWxhdGlvbnMsXG4gICAgICogYW5kIGRvZXMgdGhlIHNhbWUgZm9yIGFsbCBpdHMgc3ViLWVtYmVkZGVkcyAoZ29lcyByZWN1cnNpdmVseSkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUVtYmVkZGVkc1JlY3Vyc2l2ZWx5KFxuICAgICAgICBlbnRpdHlNZXRhZGF0YTogRW50aXR5TWV0YWRhdGEsXG4gICAgICAgIGVtYmVkZGVkQXJnczogRW1iZWRkZWRNZXRhZGF0YUFyZ3NbXSxcbiAgICApOiBFbWJlZGRlZE1ldGFkYXRhW10ge1xuICAgICAgICByZXR1cm4gZW1iZWRkZWRBcmdzLm1hcCgoZW1iZWRkZWRBcmdzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbWJlZGRlZE1ldGFkYXRhID0gbmV3IEVtYmVkZGVkTWV0YWRhdGEoe1xuICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhOiBlbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICBhcmdzOiBlbWJlZGRlZEFyZ3MsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0czogYW55W10gPVxuICAgICAgICAgICAgICAgIHR5cGVvZiBlbWJlZGRlZE1ldGFkYXRhLnR5cGUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICA/IE1ldGFkYXRhVXRpbHMuZ2V0SW5oZXJpdGFuY2VUcmVlKGVtYmVkZGVkTWV0YWRhdGEudHlwZSlcbiAgICAgICAgICAgICAgICAgICAgOiBbZW1iZWRkZWRNZXRhZGF0YS50eXBlXSAvLyB0b2RvOiBpbXBsZW1lbnQgbGF0ZXIgaGVyZSBpbmhlcml0YW5jZSBmb3Igc3RyaW5nLXRhcmdldHNcblxuICAgICAgICAgICAgZW1iZWRkZWRNZXRhZGF0YS5jb2x1bW5zID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAgICAgLmZpbHRlckNvbHVtbnModGFyZ2V0cylcbiAgICAgICAgICAgICAgICAubWFwKChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29sdW1uTWV0YWRhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbjogdGhpcy5jb25uZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZE1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZW1iZWRkZWRNZXRhZGF0YS5yZWxhdGlvbnMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgICAgICAuZmlsdGVyUmVsYXRpb25zKHRhcmdldHMpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlbGF0aW9uTWV0YWRhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZE1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZW1iZWRkZWRNZXRhZGF0YS5saXN0ZW5lcnMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgICAgICAuZmlsdGVyTGlzdGVuZXJzKHRhcmdldHMpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVudGl0eUxpc3RlbmVyTWV0YWRhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZE1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZW1iZWRkZWRNZXRhZGF0YS5pbmRpY2VzID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAgICAgLmZpbHRlckluZGljZXModGFyZ2V0cylcbiAgICAgICAgICAgICAgICAubWFwKChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5kZXhNZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYmVkZGVkTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBlbWJlZGRlZE1ldGFkYXRhLnVuaXF1ZXMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgICAgICAuZmlsdGVyVW5pcXVlcyh0YXJnZXRzKVxuICAgICAgICAgICAgICAgIC5tYXAoKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVbmlxdWVNZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYmVkZGVkTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBlbWJlZGRlZE1ldGFkYXRhLnJlbGF0aW9uSWRzID0gdGhpcy5tZXRhZGF0YUFyZ3NTdG9yYWdlXG4gICAgICAgICAgICAgICAgLmZpbHRlclJlbGF0aW9uSWRzKHRhcmdldHMpXG4gICAgICAgICAgICAgICAgLm1hcCgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlbGF0aW9uSWRNZXRhZGF0YSh7IGVudGl0eU1ldGFkYXRhLCBhcmdzIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGVtYmVkZGVkTWV0YWRhdGEucmVsYXRpb25Db3VudHMgPSB0aGlzLm1ldGFkYXRhQXJnc1N0b3JhZ2VcbiAgICAgICAgICAgICAgICAuZmlsdGVyUmVsYXRpb25Db3VudHModGFyZ2V0cylcbiAgICAgICAgICAgICAgICAubWFwKChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVsYXRpb25Db3VudE1ldGFkYXRhKHsgZW50aXR5TWV0YWRhdGEsIGFyZ3MgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZW1iZWRkZWRNZXRhZGF0YS5lbWJlZGRlZHMgPSB0aGlzLmNyZWF0ZUVtYmVkZGVkc1JlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIHRoaXMubWV0YWRhdGFBcmdzU3RvcmFnZS5maWx0ZXJFbWJlZGRlZHModGFyZ2V0cyksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBlbWJlZGRlZE1ldGFkYXRhLmVtYmVkZGVkcy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgIChzdWJFbWJlZGRlZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHN1YkVtYmVkZGVkLnBhcmVudEVtYmVkZGVkTWV0YWRhdGEgPSBlbWJlZGRlZE1ldGFkYXRhKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmFsbEVtYmVkZGVkcy5wdXNoKGVtYmVkZGVkTWV0YWRhdGEpXG4gICAgICAgICAgICByZXR1cm4gZW1iZWRkZWRNZXRhZGF0YVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGFsbCBlbnRpdHkgbWV0YWRhdGEncyBjb21wdXRlZCBwcm9wZXJ0aWVzLCBhbmQgYWxsIGl0cyBzdWItbWV0YWRhdGFzIChyZWxhdGlvbnMsIGNvbHVtbnMsIGVtYmVkcywgZXRjKS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29tcHV0ZUVudGl0eU1ldGFkYXRhU3RlcDIoZW50aXR5TWV0YWRhdGE6IEVudGl0eU1ldGFkYXRhKSB7XG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmVtYmVkZGVkcy5mb3JFYWNoKChlbWJlZGRlZCkgPT5cbiAgICAgICAgICAgIGVtYmVkZGVkLmJ1aWxkKHRoaXMuY29ubmVjdGlvbiksXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuZW1iZWRkZWRzLmZvckVhY2goKGVtYmVkZGVkKSA9PiB7XG4gICAgICAgICAgICBlbWJlZGRlZC5jb2x1bW5zRnJvbVRyZWUuZm9yRWFjaCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgICAgIGNvbHVtbi5idWlsZCh0aGlzLmNvbm5lY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZW1iZWRkZWQucmVsYXRpb25zRnJvbVRyZWUuZm9yRWFjaCgocmVsYXRpb24pID0+IHJlbGF0aW9uLmJ1aWxkKCkpXG4gICAgICAgIH0pXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLm93bkNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uLmJ1aWxkKHRoaXMuY29ubmVjdGlvbiksXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEub3duUmVsYXRpb25zLmZvckVhY2goKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5idWlsZCgpKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnMgPSBlbnRpdHlNZXRhZGF0YS5lbWJlZGRlZHMucmVkdWNlKFxuICAgICAgICAgICAgKHJlbGF0aW9ucywgZW1iZWRkZWQpID0+XG4gICAgICAgICAgICAgICAgcmVsYXRpb25zLmNvbmNhdChlbWJlZGRlZC5yZWxhdGlvbnNGcm9tVHJlZSksXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25SZWxhdGlvbnMsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuZWFnZXJSZWxhdGlvbnMgPSBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5pc0VhZ2VyLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmxhenlSZWxhdGlvbnMgPSBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5pc0xhenksXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEub25lVG9PbmVSZWxhdGlvbnMgPSBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5pc09uZVRvT25lLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLm9uZVRvTWFueVJlbGF0aW9ucyA9IGVudGl0eU1ldGFkYXRhLnJlbGF0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAocmVsYXRpb24pID0+IHJlbGF0aW9uLmlzT25lVG9NYW55LFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLm1hbnlUb09uZVJlbGF0aW9ucyA9IGVudGl0eU1ldGFkYXRhLnJlbGF0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAocmVsYXRpb24pID0+IHJlbGF0aW9uLmlzTWFueVRvT25lLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLm1hbnlUb01hbnlSZWxhdGlvbnMgPSBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKHJlbGF0aW9uKSA9PiByZWxhdGlvbi5pc01hbnlUb01hbnksXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEub3duZXJPbmVUb09uZVJlbGF0aW9ucyA9IGVudGl0eU1ldGFkYXRhLnJlbGF0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAocmVsYXRpb24pID0+IHJlbGF0aW9uLmlzT25lVG9PbmVPd25lcixcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25lck1hbnlUb01hbnlSZWxhdGlvbnMgPVxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEucmVsYXRpb25zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAocmVsYXRpb24pID0+IHJlbGF0aW9uLmlzTWFueVRvTWFueU93bmVyLFxuICAgICAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS50cmVlUGFyZW50UmVsYXRpb24gPSBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbnMuZmluZChcbiAgICAgICAgICAgIChyZWxhdGlvbikgPT4gcmVsYXRpb24uaXNUcmVlUGFyZW50LFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLnRyZWVDaGlsZHJlblJlbGF0aW9uID0gZW50aXR5TWV0YWRhdGEucmVsYXRpb25zLmZpbmQoXG4gICAgICAgICAgICAocmVsYXRpb24pID0+IHJlbGF0aW9uLmlzVHJlZUNoaWxkcmVuLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmNvbHVtbnMgPSBlbnRpdHlNZXRhZGF0YS5lbWJlZGRlZHMucmVkdWNlKFxuICAgICAgICAgICAgKGNvbHVtbnMsIGVtYmVkZGVkKSA9PiBjb2x1bW5zLmNvbmNhdChlbWJlZGRlZC5jb2x1bW5zRnJvbVRyZWUpLFxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEub3duQ29sdW1ucyxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5saXN0ZW5lcnMgPSBlbnRpdHlNZXRhZGF0YS5lbWJlZGRlZHMucmVkdWNlKFxuICAgICAgICAgICAgKGxpc3RlbmVycywgZW1iZWRkZWQpID0+XG4gICAgICAgICAgICAgICAgbGlzdGVuZXJzLmNvbmNhdChlbWJlZGRlZC5saXN0ZW5lcnNGcm9tVHJlZSksXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25MaXN0ZW5lcnMsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuYWZ0ZXJMb2FkTGlzdGVuZXJzID0gZW50aXR5TWV0YWRhdGEubGlzdGVuZXJzLmZpbHRlcihcbiAgICAgICAgICAgIChsaXN0ZW5lcikgPT4gbGlzdGVuZXIudHlwZSA9PT0gRXZlbnRMaXN0ZW5lclR5cGVzLkFGVEVSX0xPQUQsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuYWZ0ZXJJbnNlcnRMaXN0ZW5lcnMgPSBlbnRpdHlNZXRhZGF0YS5saXN0ZW5lcnMuZmlsdGVyKFxuICAgICAgICAgICAgKGxpc3RlbmVyKSA9PiBsaXN0ZW5lci50eXBlID09PSBFdmVudExpc3RlbmVyVHlwZXMuQUZURVJfSU5TRVJULFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmFmdGVyVXBkYXRlTGlzdGVuZXJzID0gZW50aXR5TWV0YWRhdGEubGlzdGVuZXJzLmZpbHRlcihcbiAgICAgICAgICAgIChsaXN0ZW5lcikgPT4gbGlzdGVuZXIudHlwZSA9PT0gRXZlbnRMaXN0ZW5lclR5cGVzLkFGVEVSX1VQREFURSxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5hZnRlclJlbW92ZUxpc3RlbmVycyA9IGVudGl0eU1ldGFkYXRhLmxpc3RlbmVycy5maWx0ZXIoXG4gICAgICAgICAgICAobGlzdGVuZXIpID0+IGxpc3RlbmVyLnR5cGUgPT09IEV2ZW50TGlzdGVuZXJUeXBlcy5BRlRFUl9SRU1PVkUsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuYWZ0ZXJTb2Z0UmVtb3ZlTGlzdGVuZXJzID1cbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmxpc3RlbmVycy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGxpc3RlbmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci50eXBlID09PSBFdmVudExpc3RlbmVyVHlwZXMuQUZURVJfU09GVF9SRU1PVkUsXG4gICAgICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmFmdGVyUmVjb3Zlckxpc3RlbmVycyA9IGVudGl0eU1ldGFkYXRhLmxpc3RlbmVycy5maWx0ZXIoXG4gICAgICAgICAgICAobGlzdGVuZXIpID0+IGxpc3RlbmVyLnR5cGUgPT09IEV2ZW50TGlzdGVuZXJUeXBlcy5BRlRFUl9SRUNPVkVSLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmJlZm9yZUluc2VydExpc3RlbmVycyA9IGVudGl0eU1ldGFkYXRhLmxpc3RlbmVycy5maWx0ZXIoXG4gICAgICAgICAgICAobGlzdGVuZXIpID0+IGxpc3RlbmVyLnR5cGUgPT09IEV2ZW50TGlzdGVuZXJUeXBlcy5CRUZPUkVfSU5TRVJULFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmJlZm9yZVVwZGF0ZUxpc3RlbmVycyA9IGVudGl0eU1ldGFkYXRhLmxpc3RlbmVycy5maWx0ZXIoXG4gICAgICAgICAgICAobGlzdGVuZXIpID0+IGxpc3RlbmVyLnR5cGUgPT09IEV2ZW50TGlzdGVuZXJUeXBlcy5CRUZPUkVfVVBEQVRFLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmJlZm9yZVJlbW92ZUxpc3RlbmVycyA9IGVudGl0eU1ldGFkYXRhLmxpc3RlbmVycy5maWx0ZXIoXG4gICAgICAgICAgICAobGlzdGVuZXIpID0+IGxpc3RlbmVyLnR5cGUgPT09IEV2ZW50TGlzdGVuZXJUeXBlcy5CRUZPUkVfUkVNT1ZFLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmJlZm9yZVNvZnRSZW1vdmVMaXN0ZW5lcnMgPVxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEubGlzdGVuZXJzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobGlzdGVuZXIpID0+XG4gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLnR5cGUgPT09IEV2ZW50TGlzdGVuZXJUeXBlcy5CRUZPUkVfU09GVF9SRU1PVkUsXG4gICAgICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmJlZm9yZVJlY292ZXJMaXN0ZW5lcnMgPSBlbnRpdHlNZXRhZGF0YS5saXN0ZW5lcnMuZmlsdGVyKFxuICAgICAgICAgICAgKGxpc3RlbmVyKSA9PiBsaXN0ZW5lci50eXBlID09PSBFdmVudExpc3RlbmVyVHlwZXMuQkVGT1JFX1JFQ09WRVIsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuaW5kaWNlcyA9IGVudGl0eU1ldGFkYXRhLmVtYmVkZGVkcy5yZWR1Y2UoXG4gICAgICAgICAgICAoaW5kaWNlcywgZW1iZWRkZWQpID0+IGluZGljZXMuY29uY2F0KGVtYmVkZGVkLmluZGljZXNGcm9tVHJlZSksXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YS5vd25JbmRpY2VzLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLnVuaXF1ZXMgPSBlbnRpdHlNZXRhZGF0YS5lbWJlZGRlZHMucmVkdWNlKFxuICAgICAgICAgICAgKHVuaXF1ZXMsIGVtYmVkZGVkKSA9PiB1bmlxdWVzLmNvbmNhdChlbWJlZGRlZC51bmlxdWVzRnJvbVRyZWUpLFxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGEub3duVW5pcXVlcyxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5wcmltYXJ5Q29sdW1ucyA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmlsdGVyKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLmlzUHJpbWFyeSxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5ub25WaXJ0dWFsQ29sdW1ucyA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmlsdGVyKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gIWNvbHVtbi5pc1ZpcnR1YWwsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuYW5jZXN0b3JDb2x1bW5zID0gZW50aXR5TWV0YWRhdGEuY29sdW1ucy5maWx0ZXIoXG4gICAgICAgICAgICAoY29sdW1uKSA9PiBjb2x1bW4uY2xvc3VyZVR5cGUgPT09IFwiYW5jZXN0b3JcIixcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5kZXNjZW5kYW50Q29sdW1ucyA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmlsdGVyKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLmNsb3N1cmVUeXBlID09PSBcImRlc2NlbmRhbnRcIixcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5oYXNNdWx0aXBsZVByaW1hcnlLZXlzID1cbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLnByaW1hcnlDb2x1bW5zLmxlbmd0aCA+IDFcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuZ2VuZXJhdGVkQ29sdW1ucyA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmlsdGVyKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLmlzR2VuZXJhdGVkIHx8IGNvbHVtbi5pc09iamVjdElkLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmhhc1VVSURHZW5lcmF0ZWRDb2x1bW5zID1cbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChjb2x1bW4pID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5pc0dlbmVyYXRlZCB8fCBjb2x1bW4uZ2VuZXJhdGlvblN0cmF0ZWd5ID09PSBcInV1aWRcIixcbiAgICAgICAgICAgICkubGVuZ3RoID4gMFxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5jcmVhdGVEYXRlQ29sdW1uID0gZW50aXR5TWV0YWRhdGEuY29sdW1ucy5maW5kKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLmlzQ3JlYXRlRGF0ZSxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS51cGRhdGVEYXRlQ29sdW1uID0gZW50aXR5TWV0YWRhdGEuY29sdW1ucy5maW5kKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLmlzVXBkYXRlRGF0ZSxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5kZWxldGVEYXRlQ29sdW1uID0gZW50aXR5TWV0YWRhdGEuY29sdW1ucy5maW5kKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLmlzRGVsZXRlRGF0ZSxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS52ZXJzaW9uQ29sdW1uID0gZW50aXR5TWV0YWRhdGEuY29sdW1ucy5maW5kKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLmlzVmVyc2lvbixcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5kaXNjcmltaW5hdG9yQ29sdW1uID0gZW50aXR5TWV0YWRhdGEuY29sdW1ucy5maW5kKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLmlzRGlzY3JpbWluYXRvcixcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS50cmVlTGV2ZWxDb2x1bW4gPSBlbnRpdHlNZXRhZGF0YS5jb2x1bW5zLmZpbmQoXG4gICAgICAgICAgICAoY29sdW1uKSA9PiBjb2x1bW4uaXNUcmVlTGV2ZWwsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEubmVzdGVkU2V0TGVmdENvbHVtbiA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmluZChcbiAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5pc05lc3RlZFNldExlZnQsXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEubmVzdGVkU2V0UmlnaHRDb2x1bW4gPSBlbnRpdHlNZXRhZGF0YS5jb2x1bW5zLmZpbmQoXG4gICAgICAgICAgICAoY29sdW1uKSA9PiBjb2x1bW4uaXNOZXN0ZWRTZXRSaWdodCxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5tYXRlcmlhbGl6ZWRQYXRoQ29sdW1uID0gZW50aXR5TWV0YWRhdGEuY29sdW1ucy5maW5kKFxuICAgICAgICAgICAgKGNvbHVtbikgPT4gY29sdW1uLmlzTWF0ZXJpYWxpemVkUGF0aCxcbiAgICAgICAgKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5vYmplY3RJZENvbHVtbiA9IGVudGl0eU1ldGFkYXRhLmNvbHVtbnMuZmluZChcbiAgICAgICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5pc09iamVjdElkLFxuICAgICAgICApXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLmZvcmVpZ25LZXlzLmZvckVhY2goKGZvcmVpZ25LZXkpID0+XG4gICAgICAgICAgICBmb3JlaWduS2V5LmJ1aWxkKHRoaXMuY29ubmVjdGlvbi5uYW1pbmdTdHJhdGVneSksXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEucHJvcGVydGllc01hcCA9IGVudGl0eU1ldGFkYXRhLmNyZWF0ZVByb3BlcnRpZXNNYXAoKVxuICAgICAgICBlbnRpdHlNZXRhZGF0YS5yZWxhdGlvbklkcy5mb3JFYWNoKChyZWxhdGlvbklkKSA9PiByZWxhdGlvbklkLmJ1aWxkKCkpXG4gICAgICAgIGVudGl0eU1ldGFkYXRhLnJlbGF0aW9uQ291bnRzLmZvckVhY2goKHJlbGF0aW9uQ291bnQpID0+XG4gICAgICAgICAgICByZWxhdGlvbkNvdW50LmJ1aWxkKCksXG4gICAgICAgIClcbiAgICAgICAgZW50aXR5TWV0YWRhdGEuZW1iZWRkZWRzLmZvckVhY2goKGVtYmVkZGVkKSA9PiB7XG4gICAgICAgICAgICBlbWJlZGRlZC5yZWxhdGlvbklkc0Zyb21UcmVlLmZvckVhY2goKHJlbGF0aW9uSWQpID0+XG4gICAgICAgICAgICAgICAgcmVsYXRpb25JZC5idWlsZCgpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZW1iZWRkZWQucmVsYXRpb25Db3VudHNGcm9tVHJlZS5mb3JFYWNoKChyZWxhdGlvbkNvdW50KSA9PlxuICAgICAgICAgICAgICAgIHJlbGF0aW9uQ291bnQuYnVpbGQoKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyBlbnRpdHkgbWV0YWRhdGEncyByZWxhdGlvbnMgaW52ZXJzZSBzaWRlIHByb3BlcnRpZXMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvbXB1dGVJbnZlcnNlUHJvcGVydGllcyhcbiAgICAgICAgZW50aXR5TWV0YWRhdGE6IEVudGl0eU1ldGFkYXRhLFxuICAgICAgICBlbnRpdHlNZXRhZGF0YXM6IEVudGl0eU1ldGFkYXRhW10sXG4gICAgKSB7XG4gICAgICAgIGVudGl0eU1ldGFkYXRhLnJlbGF0aW9ucy5mb3JFYWNoKChyZWxhdGlvbikgPT4ge1xuXG4gICAgICAgICAgICBjb25zdCBpbnZlcnNlRW50aXR5TWV0YWRhdGEgPSBlbnRpdHlNZXRhZGF0YXMuZmluZChcbiAgICAgICAgICAgICAgICAobSkgPT5cbiAgICAgICAgICAgICAgICAgICAgbS50YXJnZXQgPT09IHJlbGF0aW9uLnR5cGUgfHxcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiByZWxhdGlvbi50eXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAobS50YXJnZXROYW1lID09PSByZWxhdGlvbi50eXBlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5naXZlblRhYmxlTmFtZSA9PT0gcmVsYXRpb24udHlwZSkpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKCFpbnZlcnNlRW50aXR5TWV0YWRhdGEpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVPUk1FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgXCJFbnRpdHkgbWV0YWRhdGEgZm9yIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhLm5hbWUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIjXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24ucHJvcGVydHlQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIHdhcyBub3QgZm91bmQuIENoZWNrIGlmIHlvdSBzcGVjaWZpZWQgYSBjb3JyZWN0IGVudGl0eSBvYmplY3QgYW5kIGlmIGl0J3MgY29ubmVjdGVkIGluIHRoZSBjb25uZWN0aW9uIG9wdGlvbnMuXCIsXG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICByZWxhdGlvbi5pbnZlcnNlRW50aXR5TWV0YWRhdGEgPSBpbnZlcnNlRW50aXR5TWV0YWRhdGFcbiAgICAgICAgICAgIHJlbGF0aW9uLmludmVyc2VTaWRlUHJvcGVydHlQYXRoID1cbiAgICAgICAgICAgICAgICByZWxhdGlvbi5idWlsZEludmVyc2VTaWRlUHJvcGVydHlQYXRoKClcblxuXG4gICAgICAgICAgICByZWxhdGlvbi5pbnZlcnNlUmVsYXRpb24gPSBpbnZlcnNlRW50aXR5TWV0YWRhdGEucmVsYXRpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgKGZvdW5kUmVsYXRpb24pID0+XG4gICAgICAgICAgICAgICAgICAgIGZvdW5kUmVsYXRpb24ucHJvcGVydHlQYXRoID09PVxuICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5pbnZlcnNlU2lkZVByb3BlcnR5UGF0aCxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGluZGljZXMgZm9yIHRoZSB0YWJsZSBvZiBzaW5nbGUgdGFibGUgaW5oZXJpdGFuY2UuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUtleXNGb3JUYWJsZUluaGVyaXRhbmNlKGVudGl0eU1ldGFkYXRhOiBFbnRpdHlNZXRhZGF0YSkge1xuICAgICAgICBlbnRpdHlNZXRhZGF0YS5pbmRpY2VzLnB1c2goXG4gICAgICAgICAgICBuZXcgSW5kZXhNZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgZW50aXR5TWV0YWRhdGE6IGVudGl0eU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IFtlbnRpdHlNZXRhZGF0YS5kaXNjcmltaW5hdG9yQ29sdW1uIV0sXG4gICAgICAgICAgICAgICAgYXJnczoge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGVudGl0eU1ldGFkYXRhLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgdW5pcXVlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICB9XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uLXR5cGVvcm0gbGliL3R5cGVvcm0vbWV0YWRhdGEtYnVpbGRlci9FbnRpdHlNZXRhZGF0YUJ1aWxkZXIudHMiXX0=